如何选择第一门编程语言
2018-01-04 15:08
671 查看
TIOBE编程语言排行
C/C++、Java和Python
都是从C发展出来的C的绝大部分内容Java可覆盖,两者可交换
除了可计算的指针、union等
Java可引入容器、泛型、多线程、GUI、网络、数据库等内容
python用于写程序而不是写软件
任何语言都适合零基础开始学
Java生逢其时
计算模式在演变主机->单机(PC)->C/S->B/S->移动与云
计算在远端->计算在桌面->桌面计算远端存储->桌面交互远端计算和存储(B/S架构的程序不需要装软件)->前端交互远端计算和存储
Java一直不太擅长桌面,但是桌面不那么重要了,浏览器、word、qq等是桌面软件。
语言上升是因为有库,有人写库是因为它流行
前端/后端模式
CGI->MVC->服务化从前:一次点击做一次提交换一个新页面下来
现在:一点动作做一次提交得到新数据做部分刷新
网站不再是提供网页的站,而是服务提供者
前端:HTML、CSS、JavaScript
后端:Java、PHP、.net、Python以及JavaScript
JavaScript
使得前后端能采用相同的语言来编程:全栈开发,全栈开发语言只是基础,还需要框架和库等等很多东西才能做全栈开发C->Java->JavaScript:语言离硬件越来越远,云也是虚拟化硬件
JS Everywhere:桌面、B/S、移动设备、嵌入式设备
为什么Java受到挑战
一门语言独领风骚20年了,总有人想要挑战的Java还是带有明显的20年前的语言的特点:编译执行
Java源码->字节码->虚拟机执行
新的语言普遍采用解释执行
Java起步的时候也是做网页中运行的程序,但是Java太重了
为什么Java还是第一
Java仍然是大多数情况下首先想到的程序是人写的,用惯的工具不会一下子就扔了的
Java适合于很多场合,不仅仅是服务器后端
语言的生命周期是很长的
Java还在不断发展:IoC、泛型、Lamba和流计算
新语言的问题
普遍在应对多人协同开发上存在弱点
Python
Python是跨平台动态编程语言,支持命令式编程和函数式编程,支持面向对象程序设计,拥有大量功能强大的内置对象、标准库、涉及各行业领域的扩展库以及众多狂热的支持者使得各领域的工程师、科研人员、策划人员甚至管理人员能够快速实现和验证自己的思路、创意或者推测。
在有些编程语言中需要编写大量代码才能实现的功能,在Python中直接调用内置函数或者标准库方法即可实现,大幅度减少了代码量的编写和维护。Python用户只需要把主要精力放在业务逻辑的设计与实现上,在开发速度和运行效率之间达到了完美。
Python是粘合剂性质的语言,人生苦短何不Python,Python很好用
建议
对计算机本身(体系结构、操作系统、编译)感兴趣->C想编程解决手头的问题(统计、AI、桌面小程序)->Python
有明确的需求(求职)->人家要什么学什么(Java、PHP、JavaScript、C++)
还没想好->Java
知识是学会的,不是教会的,要投入才会有收获
编程难在哪里
从问题到程序->思维问题编程是一种创造性的活动
很多其他学科的实验是验证性或体验性的
数学也是在学习了解题思路后模仿做题
学习编程的4个阶段
能看懂和调试别人的代码能在别人的代码基础上进行适当改写
能把多段已有的代码拼凑起来实现自己需要的功能
自己动手编程写代码实现特定功能需求
学编程的技巧
多读。读书破万卷下笔如有神。多练。太极拳论曰“有招熟而渐悟懂劲,由懂劲而阶及神明,然而用力之久,不能豁然贯通焉”。
多想。学而不思则罔,思而不学则殆。
多交流。独学而无友,则孤陋而寡闻。
多读
读别人写的代码。读那些你常用库、编程框架的源码
读那些你景仰的大牛的源代码,
读代码里的测试(测试本身就是一种有效的文档)
如何阅读
纵观全局目录结构,函数调用关系,类派生和使用/依赖关系->工具软件
做记录
直接在代码中加入自己的阅读理解
执行->修改代码->执行
通过改变来深入理解
差距在哪里
Warning有什么关系,能跑就行了!(×)Warning是隐藏的隐患,要解决所有的Warning
代码能编译不就行了,还要管那么多?(×)
if else要大括号
缩进要几个空格还是一个TAB
不管怎么写,能跑的代码就是好代码!(×)
可维护性
可扩展性
代码的工程化的核心体现
工人做的产品是要用的为将来写代码
为别人写代码
一些好的习惯
命令行的意识和能力编写脚本来完成工作
以git为代表的代码版本管理的意识和能力
使用第一手资料的意识和能力,如去官网下载程序等。
结论
对计算机本身(体系结构、操作系统、编译)感兴趣->C想学编程解决手头的问题(统计、AI、桌面小程序)->Python
有明确的需求(求职)->人家要什么学什么
还没想好->Java,Java开发工程师企业需求很多。
相关文章推荐
- 如何选择你的第一门编程语言
- 如何根据你想要的生活选择第一门编程语言
- 想成为IT程序员,如何选择第一门编程语言?
- 如何根据你想要的生活选择第一门编程语言
- 如何选择你的第一门编程语言
- 如何给项目选择最合适的编程语言?
- 如何选择一门编程语言?
- 如何给项目选择最合适的编程语言?
- 如何给项目选择最合适的编程语言?
- 如何选择编程语言摘要
- 如何选择编程语言摘要
- 关于如何学习编程及选择何种编程语言
- 我是如何选择第二编程语言的
- 如何选择编程语言?
- 创业公司如何选择编程语言
- 程序员职业规划:如何选择下一门编程语言
- 关于如何学习编程及选择何种编程语言
- 如何选择大数据的编程语言
- 学java、python、web前端编程语言,自学和培训如何选择
- 程序员职业规划:如何选择下一门编程语言