【程序语言】-- 编程语言分类和应用

news/2024/5/6 5:01:04/文章来源:https://blog.csdn.net/qq_45365214/article/details/127158981

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、编程语言有哪些
  • 二、应用概况
    • 1.Python
    • 2.Java
    • 3.C/C++
    • 4.JavaScript
    • 5.Golang
    • 6.R
    • 7.Swift
    • 8.PHP
    • 9.C#
    • 9.MATLAB
  • 总结


前言

一、编程语言有哪些

  • JavaScript
  • HTML/CSS
  • Python
  • SQL
  • Java
  • Node.js
  • TypeScript
  • C#
  • Bash/Shell
  • C++
  • PHP
  • C
  • PowerShell
  • Go
  • Kotlin
  • Rust
  • Ruby
  • Perl

TIOBE
在这里插入图片描述

二、应用概况

  • Java,服务器端最好的编程语言
  • C++,最通用的编程语言
  • C,迄今为止,最值得信任的编程语言
  • Python,Ai人工智能,机器学习方向最佳的编程语言
  • JavaScript,客户端最常用的脚本语言
  • C#,微软最强有力的面向对象的编程语言
  • Swift,IOS端最有效的编程语言
  • GO(Golang),可扩展的编程语言,谷歌
  • PHP,世界上最好用的Web编程语言
  • Ruby,数据科学方面的最可靠的编程语言

1.Python

通常被认为是最好的编程语言,因为它平易近人。是一种快速,易于学习易于部署的编程语言,广泛用于开发可扩展性的Web应用程序。YouTube,Instagram,Pinterest,SurneyMonkey都是Python构建的。

优点:

  • 由于OOP特性,创建和使用类和对象很容易
  • 广泛的支持
  • 专注于代码的可读性
  • 能扩展最复杂的应用程序
  • 适合更快的构建原型和测试想法
  • 为多种平台和系统提供支持
  • 易于学习

缺点:

  • 不适合移动计算
  • 是一种解释性编程语言,速度慢
  • 数据库访问层不成熟
  • 由于GIL(全局解释器锁),线程不好

什么是OOP?
OOP(Object Oriented Programming)面向对象编程,还有OOD(面向对象的设计),OOA(面向对象的分析)……
OOP特征分别是封装、继承、多态:

  • 封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如果外部程序要访问对象内部,可以调用内部提供的get或set方法。
  • 继承:子类继承父类所有的成员方法和属性,并且可以拥有自己的特性,继承解决了代码的重用问题
  • 多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,提高了程序的扩展性

五大基本原则:

  • 单一职责原则SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的。
  • 开放封闭原则OCP(Open-Close Principle)一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。
  • 里式替换原则LSP(the Liskov Substitution Principle LSP)子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
  • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
    高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的是抽象的中国人,而不是你是xx村的。
  • 接口分离原则ISP(the Interface Segregation Principle ISP)
    设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

方法重写:

  1. 参数列表必须完全与被重写的方法相同
  2. 返回的类型必须一直与被重写的方法的返回类型相同
  3. 访问修饰符的限制一定要大于被重写方法的访问修饰符
  4. 重写方法一定不能抛出新的检查异常或者比被重写方法更加宽泛的检查型异常
  5. 存在于父类和子类之间,方法被定义为final不能被重写。

方法重载:

多个同名函数同时存在,具有不同的参数个数/类型,返回值类型可以相同可以不同,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性,存在于父类和子类、同类中.
再然后就是优缺点:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低

2.Java

广泛应用于构建企业级Web应用程序。非常稳定,同样广泛应用于Android应用程序开发。几乎所有的企业都需要Android应用程序。因为Google已经创建爱了一个出色的基于Java的Android开发框架Android Studio

优点:

  • 大量的开源库,自动内存分配和垃圾收集,遵循OOP范式,有栈分配系统,由于JVM特性,高度的平台独立性
  • 由于排除了显式指针并包含了负责定义类访问的安全管理器,因此高度安全,分布式计算的理想选择, 提供了大量的API
  • 完成不同的任务,例如数据库连接,网络,实用程序和XML解析,支持多线程

缺点:

  • 缺少模板限制了创建高质量的数据结构
  • 昂贵的内存管理
  • 比C和C++等本地编译的编程语言慢

3.C/C++

C/C++在编程世界中占有重要地位,几乎所有的低级系统,例如,操作系统和文件系统,都是C/C++编写的。它非常快速和稳定,它提供了一种叫STL-标准模板的东西, 用于各种数据结构,算术运算和算法的即用型库。

优点:

  • 与C++一起使用的几个编译器和库
  • 通过其它编程语言轻松访问被阻止或隐藏的对象
  • 比大多数语言更快
  • 多设备,多平台应用程序开发
  • 提供高度的可移植性
  • 具有一组功能模块和块的面向过程的语。这些调试,测试和维护程序更容易
  • 程序更高效,更容易理解
  • 丰富的函数库
  • 靠近系统硬件运行,因此提供了低级别的抽象
  • 支持异常处理和函数重载
  • 广泛的领域:游戏、GUI应用,实时数学模拟

缺点:

  • 复杂语法
  • 不支持程序命名空间
  • 无法解决现代现实的编程挑战
  • 与其它基于OOP的编程语言相比,效率较低的面向对象系统
  • 需要手动创建高级构造
  • 没有垃圾收集或动态内存分配
  • 没有运行时检查
  • 没有严格的类型检查
  • 受到缓冲区溢出和内存损坏的问题
  • 更小的标准库

4.JavaScript

是前端的编程语言,被广泛应用于设计交互式前端应用程序,例如我们单击打开弹出窗口的关闭按钮时,使用JavaScript,如今,许多组织使用Node.js(通常是初创公司),Node.js允许开发人员使用JavaScript进行服务器端脚本编写,在将页面发送到用户的Web浏览器之前,在服务器端运行脚本以生成动态网页内容。

优点:

  • 客户端JavaScript非常快,由于不需要编译,它会立即在Web浏览器,使网站的界面更丰富,用途广泛,充当“网络编程语言”
  • 由于是客户端,减少了对网站服务器的需求,通过ECMA规范定期更新,几个附加组件,例如,Greasemonkey,用于扩展功能简单的实现
  • 丰富的资源和出色的社区支持,用于构建各种应用程序,与其它编程语言的配合陈、非常好

缺点:

  • 没有副本或等效方法,只允许单一继承,当代码在用户机器上执行时,许多人选择禁用JavaScript,因为害怕被恶意利用
  • 不同浏览器可能会有不同的解释

5.Golang

是谷哥设计的一种编程语言,它为多线程提供了出色的支持,因此经常被严重依赖分布式系统的公司以及硅谷的初创公司使用。

优点:

  • 作为一种静态类型的语言使其更安全,更简洁的语法使得学习更容易,综合标准库,提供一系列用于处理原始类型的内置函数
  • SPA(单页应用程序),智能文档,非常快,因为它被编译为机器代码

缺点:

  • 缺少虚拟机会使得复杂的程序效率降低,隐式接口,缺乏多功能性,没有GUI库支持

6.R

R编写是用于数据分析和机器学习中最常用的语言之一,R提供了一个优秀的框架和内置库来开发强大的机器学习算法,用于一般统计计算。

优点:

  • 能够在各种操作系统上无缝运行,活跃,成长中的社区,开源和免费赋予了根据需要进行调整的能力,综合统计分析语言,高度可扩展性,强大的生态系统

缺点:

  • 缺乏安全功能,没有严格的编程指南,内存管理不善,一些包裹的质量低于标准

7.Swift

是一种用于开发IOS应用程序的编程语言,基于IOS的设备越来越流行。

  • 自动内存管理可防止内存泄露,由苹果支持,更好的可扩展性允许轻松地为产品添加功能和引入更多的开发人员,易于添加新功能
  • 鼓励开发人员编写干净易读的代码,类似英语的语法使得具有高度可读性,与Objective-C
  • 与任何技术集成,用于前端和后端开发时,使得代码共享更好,开发过程更快,
  • 与python相比,速度非常快

缺点:

  • 有限的社区支持和资源,由于在编程场景中较新,因此有些不稳定,不支持遗留项目,只能用于IOS7或跟高版本的应用程序

8.PHP

最流行的后端编程语言之一,尽管PHP面临着来自Python和JavaScript的激烈竞争

优点:

  • 大量强大的框架,轻松上手制作网页,使用Xdebug进行一流的调试,巨大的社区支持和庞大的生态系统,许多用于测试和部署应用程序的自动化工具
  • 用于部署和测试的良好自动化工具并不稀缺,支持面向对象和函数式编程范式

缺点:
与使用其它选项相比,完全使用PHP开发网站要慢一些,缺乏安全性,错误处理能力,需要更大程度的扩展

9.C#

微软开发的通用编程语言,C#广泛用于后端编程,构建游戏(使用Unity),构建Windows手机应用程序和许多其他用例

优点:

  • 由于不允许使用指针类型,因此比C和C++安全的多,能够使用共享代码库,自动可扩展性和可更新,面向组件,面向对象的编程语言
  • 快速编译和执行

缺点:

  • 允许不安全块中的指针,几乎所有变量都是引用,并且内存释放是使用垃圾收集器,隐式进行的,提供的灵活性低于C++

9.MATLAB

是一种统计分析工具,在各行业中用于fata分析,也广泛应用于计算机视觉和图像处理行业

优点:

  • 借助丰富的内置库,轻松开发科学模拟,通过添加工具箱,可以大大提高扩展功能,高编码效率和生产力
  • Matlab Coder允许转换代码以用于其他编程语言

缺点:

  • 收费,需要丰富的知识和经验,速度较慢

总结

分享:
我们是属于这尘世的,而且和这尘世是一日不可离的。我们在这美丽的尘世上好象是过路的旅客,这个事实我想大家都承认的,纵令这尘世是一个黑暗的地牢,但我们总得尽力使生活幸福。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_18340.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:进程

0.前言:冯诺依曼体系结构 冯诺依曼体系结构 电脑中涉及两种类型信号:控制信号、数据信号 计算机硬件构成: 输入设备:显卡、 输出设备:显示器、 存储器(内存):磁盘不算,磁盘算外部设…

LLC谐振电路增益公式推导

LLC谐振电路增益公式推导 图 由图可知 GVoutVinsLm//Rac1sCrsLrsLm//RacG\frac{V_{out}}{V_{in}}\frac{sLm//Rac}{\frac{1}{sCr}sLrsLm//Rac} GVin​Vout​​sCr1​sLrsLm//RacsLm//Rac​ 其中 sLm//RacsLm∗RacsLmRacsLm//Rac\frac{sLm*Rac}{sLmRac} sLm//RacsLmRacsLm∗Rac​…

Java 多线程编程(入门)

目录 一、简单介绍 Thread类 【1】Thread类中一些常用的方法 【2】编写一个简单多线程程序(入门) 二、Java中创建多线程的方法(重点面试题) 1.继承 Thread 类 2.实现 Runnable 接口,重写 run 3.使用匿名内部类&…

(决策树中的)信息熵和样本分类的信息熵计算源代码

目录 一、信息熵 ① 基本概念 ② 计算公式 二、决策树中的信息熵 三、计算数据集样本分类的香农熵的源代码 说明:由于对这部分的知识有所遗忘,因此翻阅资料进行温习,写下本文。 需要注意的是,在本文中,所有中括号…

WPF 控件专题 ContentControl 控件详解

1、ContentControl 介绍 ContentControl 表示包含一段任意类型内容的控件;也叫作内容控件。只包含一个子元素。 ************************************************************************************************************** 2、常用属性介绍 FontFamily&a…

《代码随想录》一刷记录之回溯算法

文章目录前言第9章:回溯法回溯算法理论基础什么是回溯算法回溯法的性能回溯法可以解决的问题理解回溯法回溯法模板组合问题回溯算法剪枝优化组合总和(一)回溯算法剪枝优化电话号码的字母组合回溯算法组合总和(二)回溯算法剪枝优化组合总和&am…

flask数字图像处理系统开发全流程记录(基于OpenCV)

目录一、环境安装1.1 安装虚拟环境1.2 安装Flask二、搭建flask项目框架2.1 创建一个简单项目2.2 渲染html页面2.3 使用Bootstrap美化页面2.4 前后端逻辑交互2.4.1 前端实现2.4.2 后端实现三、部署3.1 Waitress工业级部署3.2 项目打包一、环境安装 1.1 安装虚拟环境 虚拟环境是…

以太网交换机(计算机网络)

目录 一、以太网交换机与网桥 二、交换机与集线器 三、交换式以太网 四、以太网交换机的要点 一、以太网交换机与网桥 1、交换式集线器又称为以太网交换机(switch)或二层交换 机(表明此交换机工作在数据链路层),或直接简称 为交换机。 2…

2022/10/4——基于stm32mp157a的A7核按键中断实验

分析电路图可知三个按键对应的管脚为:KEY1----->PF9 KEY2----->PF7 KEY3----->PF8 本次实验采用延时函数来解决按键按下时的电平抖动问题 功能分析如下 如上图所示 1.需要分析GPIOF章节:设置引脚为输入模式 2.需要分析EXTI章节&#xff1…

人工智能算法一无监督学习(Kmeas聚类)

简介 在前面介绍的线性回归还有逻辑回归它们都是知道x,y然后开始训练模型,这也就是有监督学习的情况,还有如果只是知道x不知道y的情况那么这种就是无监督学习。 描述 需求引入,如果有一千万用户,我们要对用户进行分类。这里由于…

Pytorch深度学习笔记之三(构建一个完整的神经网络)

本篇笔记是基于一个印度人写的《Pytorch深度学习》一书的第二章,主要用来描述一个麻雀虽小五脏俱全的完整的神经网络,包含了建模、训练等。原书的代码基于较老版本的Pytorch,有多处编译不过,笔者都做了调整,并在文末给…

几种常见的概率分布表

参考:《概率论与数理统计 第四版》

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

一、环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴。具体只讲述Jenkins配置以及整个流程的实现。 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8。 2.Jenkins 持续集成和持续交付项目。 3.现有项目及gitlab&#…

Redis实战 - 03 RedisTemplate 的 hash 结构

文章目录1. put(H var1, HK var2, HV var3)2. get(H var1, Object var2)3. entries(H key)4. keys(H key)5. values(H key)6. hasKey(H key, Object var2)7. size(H key)8. putAll(H key, Map<? extends HK, ? extends HV> map)1. put(H var1, HK var2, HV var3) 新增…

机器学习之验证曲线绘制-调参可视化-sklearn

验证曲线是什么&#xff1f; 验证曲线和学习曲线的区别是&#xff0c;横轴为某个超参数的一系列值&#xff0c;由此来看不同参数设置下模型的准确率(评价标准)&#xff0c;而不是不同训练集大小下的准确率。 从验证曲线上可以看到随着超参数设置的改变&#xff0c;模型可能从…

Java Web 12.1 Filter 12.1.2 Filter 快速入门

Java Web 【黑马程序员新版JavaWeb基础教程&#xff0c;Java web从入门到企业实战完整版】 12 Filter & Listener & Ajax 文章目录Java Web12 Filter & Listener & Ajax12.1 Filter12.1.2 Filter 快速入门12.1 Filter 12.1.2 Filter 快速入门 【开发步骤】…

论如何参与一个开源项目(上)

写在前面的一些话 说起开源项目&#xff0c;好像人人都懂&#xff1a;不过就是一群人一起写了些东西&#xff0c;并且这些东西是公开的&#xff0c;大家都能看。但要细说&#xff0c;可能大多数的开发者都说不出个所以然&#xff0c;甚至不知道怎么提issue。 所以我就想写这样…

这,这,是个神人,我喜欢

国庆的第三天&#xff0c;跟一个好友聊天&#xff0c;他本来是准备回老家的&#xff0c;但是因为疫情搁浅在原地了。上来就直接给我搞一个有难度的代码如果没有人跟你说这个是输出helloworld的&#xff0c;鬼知道这个代码。然后&#xff0c;我就说我想对他进行一个采访&#xf…

QX-A51智能小车实现-物联网应用系统设计项目开发

目录介绍说明展示介绍 STC89C52系列单片机是STC推出的新一代高速/低功耗/超强抗干扰/超低价的单片机&#xff0c;指令代码完全兼容传统8051单片机&#xff0c;12时钟每机器周期和6时钟每机器周期可以任意选择 QX-A51智能小车原理图 QX-A51智能小车配置 硬件组成&#xff1a;电…

QT模型索引使用QModelIndex

QT模型索引使用QModelIndex QModelIndex有三个要素&#xff1a;行row 列column 父节点索引parent 但是注意我们并不能定义一个QModelIndex QModelIndex的构造函数QModelIndex()的功能是创建一个新的空的QModelIndex QModelIdex()是一个空索引&#xff0c;它其实可以代表任意mo…