over 1 year ago

一、程序是如何运作的
2、什么是编程语言?
编程语言是描述电脑如何工作的,分为低级语言和高级语言

什么是低级语言?
指的的机器语言和汇编语言,用来指示电脑微处理器如何动作,并不比高级语言差,而是指抽象化的程度较低,与电脑硬件的指令直接对应的意思。
汇编语言对应机器语言,只是给予符号意义
一台电脑包括CPU、RAM、硬盘、其他I/O设备(网卡、键盘】鼠标和荧幕等)

什么是高级语言
透过结构化的程序设计语言,包括变量、数据形态、函式、控制结构、循环等等功能,来让开发好读好写。
电脑可以执行机器码,但不能直接消化高级语言,要通过Compiler来转换成二进制机器语言。大部分的编译器都是用C语言写的,并且可以移植到不同硬件上(Intel或ARM),执行效能非常好。
编译后会因CPU架构不同,机器码也会相应不同

3、什么是操作系统?
负责管理这些硬件资源的程序,如何分配内存给不同的程序和优先级、控制I/O设备,例如网卡、键盘、鼠标、硬盘等等,并且提供一个用户接口让我们可以安装和操作不同应用软件。
操作系统例如微软的Windows、Apple的MacOS、Linux等等。

编译后同样会因操作系统的不同,提供不同的API让编程语言可以调用硬件资源

可以打开Activity Monitor来观察操作系统的运作

4、内层管理
C语言是手动管理内存
GC(Garbage Collection,垃圾回收)是编程语言的一种内部功能,作用是自动把再没有用到的变量,把内存释放回操作系统。
JAVA,RUBY,JAVASCRIPT都有GC,编程语言会不定时的自动跑一下GC。
但在real-time强即时性的软件中,需要手动管理内存,不能用GC因为会能暂停,跑GC时,程序会暂停下来。
GC算法非常重要,非常影响编程语言的执行效能。

5、高级语言分为编译型语言和解释型语言
即静态语言(Static)和动态语言(Dynamic)。
静态语言包括:C语言、C++、Java语言等等,一定要先把全部代码编译成机器码,软件散布和分享时,是拿最后的执行档。使用变量必须事先宣告类型,一开始宣告是int,那就一定是int,不能换成存字符串。
要想修改代码,都必须重新把程序编译好,如果程序任一行有错,就无法编译。但也因此,执行档很小,执行速度比较快。

动态语言包括:Ruby\Python\JavaScript|PHP等等,不需要先编译,而是透过叫解释器的软件,逐行编译然后直接执行。软件散布和分享时,是拿源代码。不需要事先宣告类型,一开始存整数,后来换成存字符串也可以。
修改起来比较方便,写代码也更快,任何错误只有在执行后才知道,在执行时才编译,所以执行速度较慢。

不同的程序语言对应了大家对于效率的需求的不同,有点希望执行快,有点希望开发快;另一方面也是编程语言的设计哲学不同,有些喜欢功能多、程序码比较有表现力,例如Scala,有些喜欢功能少,比较精实但打比较多字,例如Go语言。

为什么Web语言,使用解释型语言有更好的优势?
1.用更少程序码做更多事情,大大增加生产力
2、更快因应客户开发需求,敏捷开发
动态语言的缺点:
1.执行效能是绝对比不上静态语言的
2.没有编译器可以检查型别错误
但电脑越来越快和便宜,上网越来越容易,内存越来越多、硬盘越来越大,另外行动装置也越来越多,需要搭配的网络服务需求也增加了。这些趋势告诉我们有更多的软件需求,另一方面由于硬件效能的增强,人力开发成本比起软件的执行器的效能,也越来越重要。

但在硬件资源有限的行动装置及嵌入式系统上,仍是静态语言的天下,需要更长的时间才有动态语言的空间。

6.各种编程语言介绍
开发系统程序(例如操作系统、编译器),适合C语言
开发Web 后端应用,适合PHP/Ruby/Python/Node.js
开发Web 前端应用,得用JavaScript
开发Android应用,得用Java
开发iOS应用,得用Swift或 Objective-C

二、编程语言的设计

三、算法和数据结构
通过irb测试,可以迅速了解各种算法语法的含义和运用。

← xdite老师的学习历程 904ORID →
 
comments powered by Disqus