您的位置:首页 > 编程语言

如何选择第一门编程语言

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开发工程师企业需求很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: