点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
1
万物之源C语言
难度:★★★ 人气:★★★★★
C语言是一种通用型命令式计算机编程语言,其支持结构化编程、词汇变量范围与递归,同时亦是套能够预防各类未预期操作的静态类型系统,最初构建目标在于编写系统软件。
用途:软件开发、硬件、操作系统。
优点:
1.可移植性:无需或者很少改动就可以将开发出的软件在不同平台上运行
2.C语言完全基于变量、宏、函数以及结构,因此可被嵌入至几乎一切现代处理器,从冰箱到闹钟即可作为其运行平台。
3.了解C语言,也就了解了关于编程语言的一切,几乎所有现代编程语言都脱胎于C,因此了解C语言能够帮助大家快速掌握其它各类编程语言。
缺点:
1.运行时C语言不具备运行时检查机制。
2.面向对象编程:C语言不支持面向对象编程,因此C++才会诞生以解决这一问题。
3.复杂的学习曲线:越是基础的东西并非最易上手,比较适合那些已经对其它编程语言有所了解的学习者。
2
Java
难度:★★★ 人气:★★★★★
Java的热度一直居高不下,长期霸占各类编程语言排行榜前三名。Java是一门面向对象的编程语言,开发者可以利用其在计算机上创建应用程序。
用途:安卓、IOS开发、视频游戏开发、桌面GUI、软件开发。
优点:
1、需求旺盛,Java开发岗位为目前需求量最大的软件技能方向,Java也是世界上使用范围最广泛的编程语言。
2、不断发展的语言,Java平台不断迎来新功能,包括llambda机制的引入。
3、Android应用开发的基石:谷歌公司的Androld移动平台是目前全球范围内人气最高的移动平台,开发者可以利用自己的Java技能力为Android系统开发应用。
缺点:
1、占用大量内存:Java使用的内存量高于C++.
2、学习曲线较长:并不属于最易于上手的语言,当然也不是最难学习的语言。
3、启动时间较长:利用Java语言开发Androld应用时,我们一定会对其模拟器代码在台式机上运行速度留下深刻印象。
3
C++
难度:★★★★ 人气:★★★★
C++是一款面向对象编程(简称OOP)语言,被广泛视为最出色的大规模应用构建语言。C++属于C语言的一个超集。
用途:软件开发搜索引擎操作系统视频游戏
优点:
1、重要技能:掌握C、C++能够帮助大家在众多开发人才当中脱颖而出,掌握了C/C++大家将能够深入了解Java或Python等编程语言中的内存管理机制,并了解如何回避各类常见的陷阱与难题。
2、灵活的调整空间:C++允许大家对自己的应用进行灵活调整并充分发挥计算机的全部性能。与Java/C++相比,编程过程并不友好,但我们却能够利用它实现一切操作。
缺点:
1、艰难的学习曲线:C++非常难于学习,但在掌握之后大家将直接登上程序员金字塔的塔尖。
2、体系极为庞大: C++规模可观且拥有大量极为复杂的功能交互方式,没有哪位开发者能够使用其提供的全部构建组件,但我们可以充分发挥自己的才智选择正确的功能子集。
4
Python
难度: ★★ 人气:★★★★★
Python是一项服务器端解释型开源非编译脚本语言可单独使用,也可作为django等框架的组成部分。
用途:Web开发、视频游戏开发、桌面GUI 软件开发。
优点:
1、易于学习:Python作为最易于掌握的编程语言而拥有极高人气。
2、库:广泛的工具及功能库能够帮助大家轻松完成构建工作。
3、物联网:Python特随着物联网技术的普及而进一步发展,目前Rasp-bery Pi等新型平台已经将其作为开发基础。
缺点:
1、速度:作为一种解释型语言,其速度往往往低于编译语言。
2、移动:Python在移动计算领域的表现比较直观,利用Python开发的移动应用非常罕见。
3、设计:Python语言在设计上存在一些问题,其属于动态类语言,因此需要进行更多测试且带来某些只在特定运行时中出现的错误。
5
PHP
难度:★★★ 人气:★★★★
PHP是一款服务器端脚本语言,社区庞大且活跃,主要面向Web开发但同时作为通用性编程语言。
用途:WordPress插件、Web开发、创建包含数据库功能页面。
优点:
1、易于上手且功能丰富:它是一款适合Web开发与通用用途,易于快速上手的服务器端脚本语言。
2、庞大的社区:PHP拥有庞大的活跃社区。Web开发者面临的大部分难题都拥有现成的解决方案。
3、数据库:可与各类数据库、文件系统及图片顺畅协作。
缺点:
1、学习门槛过低:由于学习门槛太低,项目中存在着大量经验不足的开发者,某些开源代码甚至已经存在十余年。
2、速度:PHP为解释型语言,其代码运行速度低于大部分编程语言竞争对手。
3、错误处理机制: PHP的错误处理机制比较糟糕,特别是与其它编程语言相比较,这主要是因为PHP的开发历史过长且需要支持大量旧有功能。
6
JavaScript
难度: ★★ 人气:★★★★
JavaScnpt是一款使用效率最高的客户端脚本语言,这意味着JavaSonpt代码写至HTML页面当中,当用户通过内部JavaScript请求至HTML页面时,该脚本会被发送至浏览器,并由浏览器决定下一步操作。
用途:网站前端、分析、功能控件、Web交互
优点:
1、速度:作为客户端脚本语言JavaSarpt中的任意代码函数却可立即运行而无需等待服务器连接及应答,因此其速度非常出色。
2、易学性:JavaSorpt相对易于学习及使用。并且掌握了 JavaScript 语言就等于成为能同时开发网页、后台、移动端的全栈工程师
3、简单性:JavaScrpt能够与其它多种语言顺利协作,并可用于多种不同应用程序与PHP或者SSI脚本不同,JavaSoript 可被插入任意网页当中,而无需考虑具体文件扩展名。
缺点:
1、安全性:由于代码在用户计算机上执行,因此其有时会被恶意活动所利用正因为如此,部分用户会选择禁用JavaScript。
2、最终用户依赖性::JavaScnpt有时会在不同浏览器上以不同方式进行解释。相较于总能提供同样输出结果的服务器端脚本,JavaScript客户端脚本的可预测性相对较差。不过这一问题并不是非常严重,只要我们在全部主流测览器上对脚本进行充分测试即可。
7
C#
难度:★★★ 人气:★★★★
这是一款强大而灵活的编程语言。 与其他编程语言一样,它也可用于创建多种应用程序。事实上,C#的功能只受限于我们的想象力。该语言对开发者的操作内容完全不设任何限制,其可被用于交付动态网站、开发工具甚至是编译器等等。
用途:Windows应用、企业级业务应、软件开发。
优点:
1、Net库: 全面集成Net库,提供出色的功能与支持库访问能力。
2、可转换性:其基于C语言,因此C#的结构可转移至Java、Objective-C、PHP以及C++等其它语言形式
3、需求旺盛::C#加Java为目前各企业需求最为旺盛的软件开发技能组合。
缺点:
1、C#并不是最适合新手们进行入门学习的编程语言,其学习曲线非常陡峭。
2、跨平台能力差:由于集成Net,因此不具备跨平台能力。
从上面的对比我们不难发现,每种程序语言都有它的优势和劣势,我们在选择编程语言呢,主要考虑几个要点。
1、构建编写网页 推荐:HTML、CSS、PHP
2、开发app 推荐:Java、C++
3、制作视频游戏 推荐:Python、Java
4、对数据进行管理 推荐:C#、PHP、Python
5、进行偏硬件的编程 推荐:C
6、进行科学计算 推荐:Python
当然,我们在实际开发的时候需要我们综合考虑产品需求,在程序运行速度指标、硬件要求、开发周期等方面进行权衡,最终确定编程所需语言。
来源:老九学堂
本文仅做学术分享,如有侵权,请联系删文。
好消息!
小白学视觉知识星球
开始面向外开放啦👇👇👇
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~