各种编程语言的优缺点

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

1

万物之源C语言

难度:★★★  人气:★★★★★  

C语言是一种通用型命令式计算机编程语言,其支持结构化编程、词汇变量范围与递归,同时亦是套能够预防各类未预期操作的静态类型系统,最初构建目标在于编写系统软件。

用途:软件开发、硬件、操作系统。

26bc73cc4ef0c9fb6a5aeff3d91ba890.png

优点:

1.可移植性:无需或者很少改动就可以将开发出的软件在不同平台上运行  

2.C语言完全基于变量、宏、函数以及结构,因此可被嵌入至几乎一切现代处理器,从冰箱到闹钟即可作为其运行平台。

3.了解C语言,也就了解了关于编程语言的一切,几乎所有现代编程语言都脱胎于C,因此了解C语言能够帮助大家快速掌握其它各类编程语言。

ec2a3c51f53fc8a59f1ab803ba49f09a.jpeg

缺点:

1.运行时C语言不具备运行时检查机制。

2.面向对象编程:C语言不支持面向对象编程,因此C++才会诞生以解决这一问题。

3.复杂的学习曲线:越是基础的东西并非最易上手,比较适合那些已经对其它编程语言有所了解的学习者。

7a2b3cdddd6c5c2e614e3db763ee660a.jpeg

2

Java

难度:★★★  人气:★★★★★

Java的热度一直居高不下,长期霸占各类编程语言排行榜前三名。Java是一门面向对象的编程语言,开发者可以利用其在计算机上创建应用程序。

用途:安卓、IOS开发、视频游戏开发、桌面GUI、软件开发。

3dc88ed7f1475807fa8340fc797e4615.jpeg

优点:

1、需求旺盛,Java开发岗位为目前需求量最大的软件技能方向,Java也是世界上使用范围最广泛的编程语言。

2、不断发展的语言,Java平台不断迎来新功能,包括llambda机制的引入。

3、Android应用开发的基石:谷歌公司的Androld移动平台是目前全球范围内人气最高的移动平台,开发者可以利用自己的Java技能力为Android系统开发应用。

58c12da1f022f5954308542416b34983.jpeg

缺点:

1、占用大量内存:Java使用的内存量高于C++.

2、学习曲线较长:并不属于最易于上手的语言,当然也不是最难学习的语言。

3、启动时间较长:利用Java语言开发Androld应用时,我们一定会对其模拟器代码在台式机上运行速度留下深刻印象。

8383b339c077bc3da3e8f23b28f1e80c.jpeg

3

C++

难度:★★★★   人气:★★★★

C++是一款面向对象编程(简称OOP)语言,被广泛视为最出色的大规模应用构建语言。C++属于C语言的一个超集。

用途:软件开发搜索引擎操作系统视频游戏

优点:

1、重要技能:掌握C、C++能够帮助大家在众多开发人才当中脱颖而出,掌握了C/C++大家将能够深入了解Java或Python等编程语言中的内存管理机制,并了解如何回避各类常见的陷阱与难题。

2、灵活的调整空间:C++允许大家对自己的应用进行灵活调整并充分发挥计算机的全部性能。与Java/C++相比,编程过程并不友好,但我们却能够利用它实现一切操作。

1eb8e629937333842bdbb227ae7fae7f.jpeg

缺点:

1、艰难的学习曲线:C++非常难于学习,但在掌握之后大家将直接登上程序员金字塔的塔尖。

2、体系极为庞大: C++规模可观且拥有大量极为复杂的功能交互方式,没有哪位开发者能够使用其提供的全部构建组件,但我们可以充分发挥自己的才智选择正确的功能子集。 

0d3126742a83eed469b6cf5f9c6d34cf.jpeg

4

Python

难度: ★★   人气:★★★★★  

Python是一项服务器端解释型开源非编译脚本语言可单独使用,也可作为django等框架的组成部分

用途:Web开发、视频游戏开发、桌面GUI 软件开发。

优点:

1、易于学习:Python作为最易于掌握的编程语言而拥有极高人气。

2、库:广泛的工具及功能库能够帮助大家轻松完成构建工作。

3、物联网:Python特随着物联网技术的普及而进一步发展,目前Rasp-bery Pi等新型平台已经将其作为开发基础。

52dfc87a568b04f1c2c3b5bd3424df87.jpeg

缺点:

1、速度:作为一种解释型语言,其速度往往往低于编译语言。

2、移动:Python在移动计算领域的表现比较直观,利用Python开发的移动应用非常罕见。

3、设计:Python语言在设计上存在一些问题,其属于动态类语言,因此需要进行更多测试且带来某些只在特定运行时中出现的错误。

871d2ba09cf3dcb619238217f2dd4746.jpeg

5

PHP

难度:★★★    人气:★★★★

PHP是一款服务器端脚本语言,社区庞大且活跃,主要面向Web开发但同时作为通用性编程语言。

用途:WordPress插件、Web开发、创建包含数据库功能页面。

优点:

1、易于上手且功能丰富:它是一款适合Web开发与通用用途,易于快速上手的服务器端脚本语言。

2、庞大的社区:PHP拥有庞大的活跃社区。Web开发者面临的大部分难题都拥有现成的解决方案。

3、数据库:可与各类数据库、文件系统及图片顺畅协作。

1c1d3ee9a0733b81eb81e01186b4a95b.jpeg

缺点:

1、学习门槛过低:由于学习门槛太低,项目中存在着大量经验不足的开发者,某些开源代码甚至已经存在十余年。

2、速度:PHP为解释型语言,其代码运行速度低于大部分编程语言竞争对手。

3、错误处理机制: PHP的错误处理机制比较糟糕,特别是与其它编程语言相比较,这主要是因为PHP的开发历史过长且需要支持大量旧有功能。

b86ea603958ada3cac900a9c5d0420a4.jpeg

6

JavaScript

难度: ★★   人气:★★★★  

JavaScnpt是一款使用效率最高的客户端脚本语言,这意味着JavaSonpt代码写至HTML页面当中,当用户通过内部JavaScript请求至HTML页面时,该脚本会被发送至浏览器,并由浏览器决定下一步操作。

用途:网站前端、分析、功能控件、Web交互

优点:

1、速度:作为客户端脚本语言JavaSarpt中的任意代码函数却可立即运行而无需等待服务器连接及应答,因此其速度非常出色。

2、易学性:JavaSorpt相对易于学习及使用。并且掌握了 JavaScript 语言就等于成为能同时开发网页、后台、移动端的全栈工程师

3、简单性:JavaScrpt能够与其它多种语言顺利协作,并可用于多种不同应用程序与PHP或者SSI脚本不同,JavaSoript 可被插入任意网页当中,而无需考虑具体文件扩展名。

dffd3d0be9156fdb7e18fcd32046571c.jpeg

缺点:

1、安全性:由于代码在用户计算机上执行,因此其有时会被恶意活动所利用正因为如此,部分用户会选择禁用JavaScript

2、最终用户依赖性:JavaScnpt有时会在不同浏览器上以不同方式进行解释。相较于总能提供同样输出结果的服务器端脚本,JavaScript客户端脚本的可预测性相对较差。不过这一问题并不是非常严重,只要我们在全部主流测览器上对脚本进行充分测试即可。

2ac63ef27991619120b318c0fcd3b2c0.gif

7

C#

难度:★★★  人气:★★★★ 

这是一款强大而灵活的编程语言。  与其他编程语言一样,它也可用于创建多种应用程序。事实上,C#的功能只受限于我们的想象力。该语言对开发者的操作内容完全不设任何限制,其可被用于交付动态网站、开发工具甚至是编译器等等。

用途:Windows应用、企业级业务应、软件开发。

e9926f9b55f44f12d2182d0650e93379.jpeg

优点:

1、Net库: 全面集成Net库,提供出色的功能与支持库访问能力。

2、可转换性:其基于C语言,因此C#的结构可转移至Java、Objective-C、PHP以及C++等其它语言形式

3、需求旺盛::C#加Java为目前各企业需求最为旺盛的软件开发技能组合。

缺点:

1、C#并不是最适合新手们进行入门学习的编程语言,其学习曲线非常陡峭。

2、跨平台能力差:由于集成Net,因此不具备跨平台能力。

f479f8b5b7b7a722f4b8d47f657c17e4.png

从上面的对比我们不难发现,每种程序语言都有它的优势和劣势,我们在选择编程语言呢,主要考虑几个要点。

1、构建编写网页  推荐:HTML、CSS、PHP

2、开发app   推荐:Java、C++

3、制作视频游戏   推荐:Python、Java

4、对数据进行管理   推荐:C#、PHP、Python

5、进行偏硬件的编程  推荐:C

6、进行科学计算    推荐:Python

当然,我们在实际开发的时候需要我们综合考虑产品需求,在程序运行速度指标、硬件要求、开发周期等方面进行权衡,最终确定编程所需语言。

来源:老九学堂

本文仅做学术分享,如有侵权,请联系删文。

 
 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

9119339c81c758b872c65e560dea295d.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值