返回介绍

Computer

发布于 2025-01-31 22:20:49 字数 14814 浏览 0 评论 0 收藏 0

Computer

计算机。台湾译作电脑。一台可以实施数学运算的机器。

制作电脑属于电子系、电机系的专长。台湾的电脑工业,产业结构相当成熟,产品行销全球。你想的到的电脑零件、电脑成品,例如硬碟、光碟机、记忆体、主机板、萤幕、桌机、笔电、滑鼠等等,都有专门公司在研发。即便是电脑回收商,也堪称一流。

Program

程式。控制电脑运作的指令。

操控电脑属于资工系的专长。可以分为程式语言、程式设计。

程式语言。人工产物,有严谨的规格书,以便精准地控制电脑运作。常用的程式语言,坊间已经充斥大量书籍,网路上已经充斥大量互动式学习资源,学习难度极低,甚至可以无师自通。

程式设计。编写程式,达成任务。程式语言的学习资料非常多,但是程式设计的学习资料非常少。有些书教你如何把程式写漂亮,例如 code complete;有些书教你如何规划程式码,例如 head first ooad;但是目前还没有一本书是谈论如何编写程式解决问题。对于程式设计,现今世界上还没有一套明确的见解,也没有一条明确的学习路径。大家现在多半把程式设计当作是一种具有灵性的艺术创作,特别强调天资这回事。

程式设计最近获得重视。美国业界以及政府正在倡导 人人都要有程式思维 ,规划学习进度、培育相关师资,进一步推动 计算机科学教育 。也有研究单位正在探索 程式设计的本质 ,设计适合中小学生学习的程式语言,发掘程式设计如何影响孩童的思考与行为。

想要浅尝一下程式语言是什麽,可以从 HOUR of CODE 开始。顺带一提台湾也有相关活动 一小时玩程式

想要学习经典的程式语言,例如 C++,可以参考 《C++ How to Program》 等著作以及各种网路资源。

想要通盘概观程式设计,可以参考 Princeton cos333Harvard cs50 课程。

想要了解程式语言的流行用途,例如手机 APP、网页设计,可以参考 Udacity 与 Google 合作的课程韩国的软体开发网站

程式语言的粗糙分类

根据程式语言的用途,可以分为以下这几大类:

组合语言:控制中央处理器,例如 x86。

程式语言:控制电脑运作,例如 C、C++、Java、Python。

脚本语言:控制软体运作,例如 Unix shell、JavaScript。

资料语言:描述与操作资料,例如 HTML、SQL、VHDL。

专业工具语言:例如绘图计算 GLSL、数学计算 MATLAB。

新型态的语言:拥有庞大资料库、函式库,例如 Mathmetica。

程式设计的粗糙分类

根据程式设计的用途,可以分为以下这几大类:

embedded system programming:将电脑零件安装在机械设备、电子设备裡面,然后写程式控制设备。例如洗衣机、电子錶、捷运火车飞机、医疗器材、工厂设备。嵌入式系统是规模浩大的产业,中央处理器有 98%安装在各式设备,只有 2%用于桌机。但是台湾几乎没人做这门生意,只专注在桌机与手机。

system programming:充分运用电脑零件、执行特定任务。例如作业系统、程式语言编译器、驱动程式、档案传输、即时通讯、浏览器、游戏引擎、防毒软体。台湾工程师的擅长项目。

application programming:手机与桌机的应用程式(软体)。例如文书编辑器、绘图软体、游戏软体。应用程式也是规模浩大的产业,但是台湾几乎没人做这门生意,只专注手机 APP。

需要的技能:一、各个作业系统厂商,发明了专属的程式语言,用来撰写自家作业系统的应用程式。例如苹果的 Objective-C。微软的 C#。二、藉由作业系统的 API,操控作业系统。例如 COCOA、WinAPI、Android SDK。也有厂商进一步将 API 包装成工具、建立体系(框架),例如微软的.NET。

web programming :编辑网页、制作网站。工具时时刻刻都在改变,易学难精。职称三不五时就会改变,炒作话题。由于学习资源十分普及、免费工具俯拾即是,因而凭空蹦出许多网路名人。

在用户的电脑执行(前端)
HTML:语言。网页的资料内容。
CSS:语言。网页的排版样式。
JavaScript:语言。控制浏览器的行为。通常用于控制网页内容。
Bootstrap:人家写好的程式码,可以快速建构上述东西,特别针对手机的版面。
jQuery:人家写好的 JavaScript 函式库。
Angular、React:人家写好的 JavaScript 工具。

在伺服器执行(后端)
PHP、JSP、ASP:语言。生成 HTML。
Django、Ruby on Rail:语言与函式库。生成 HTML、管理档案、存取资料库。
SQL:语言。从资料库存取资料。
  知名软体 Oracle SQL、Microsoft SQL Server、MySQL。
Web Server:软体。让大家可以连线到伺服器,存取网页。
      知名软体 Microsoft IIS、Apache HTTP Server、Tomcat。

system integration:同时涉及多种程式设计类型。例如购物网站、影音平台、行政资讯系统、悠游卡系统、停车场管理系统。台湾有许多专业公司,自产自销、提供个性化服务。

knowledge-based programming :新世代程式设计,目前尚未流行。运用庞大资料库与函式库,编写程式处理触目所及的资讯。

Database

Database

资料库 。简单来说,就是硬碟,存放大量资料的东西。

资料库可以分成硬体层面和软体层面。硬体层面的经典主题,例如 备份与还原镜像与同步容错 等等。通常学校课程不会教到,相关技术已被商业垄断。

软体层面的经典主题,例如 资料库架构 :资料的格式以及存取资料的模式, 资料库正规化 :归类资料的方式, 资料库查询语言 :查询资料的指令。学校课程就会教到。

除了存储资料以外,通常我们还想灵活运用资料,例如 资讯检索资料探勘资料视觉化 ,从资料库当中挖掘讯息、产生报表,为己所用。最近媒体吹捧的口号 大数据 就是活用资料库的意思。

资料库是相当务实的学问。国民的户政财政资料、线上文章音乐影片、打卡订票、字典图书等等,资料库无所不在。稍具规模的公司行号,就需要资料库储存资料。理所当然地,当今世上规模最大的软体公司,就是资料库公司 Oracle。资料库是资工系必修学科,就连公务员考试也要考资料库,重要程度可见一斑。

Search Engine

搜寻引擎。从资料库当中寻找资料的工具,已经变成现代人不可或缺的工具。遇到不明白的事情,马上用手机上网搜寻一下资料。

我们往往希望找到最精准、最重要、最完善的资料。因此搜寻引擎的排名结果,变成大家最关注的事情。搜寻引擎制作者致力于提供好的排名,好的排名使得大家更容易汲取知识。然而排名有时候也是一种变相的资讯钳制。搜寻引擎公司可以藉由调整排名,控制你对世界的看法。

大家重视排名,进而发展出“ 搜寻引擎最佳化 ”的概念:如何调整自家网站的内容,以提高排名?提高排名有益于提高公司曝光度、增加生意。大公司甚至花钱请搜寻引擎公司帮忙提高排名。搜寻引擎公司为了在道德和利益之中取得平衡,转而提供了广告机制,在搜寻结果当中,把大公司的网站放在第一名的上面,皆大欢喜。

Network

Network

网路 。简单来说,就是多地之间的讯息传送机制。

网路分为硬体层面和软体层面。硬体层面属于电子电机电信通讯科系的专长,台湾业界的技术相当杰出,新知多半不在学界、而在业界。经典主题如下:

一、通讯媒介:电流(网路线、电话线)、电波(无线网路、RFID)、光波(光纤)。

二、电路设计:协定、封包、编码、串流、多工、分流。

三、网路佈署:卫星、基地台、AP、电缆。

软体层面属于资管资工科系的专长,已有 丰富的教材 ,但是只有观念、没有实务,大家都是自己乱搞。经典主题如下:

一、 网路管理 。细分为 网路环境 (IP、DNS、区域网路、设备维护)、 网路服务 (帐户权限、流量监控、资源整合)、 网路安全 (firewall/VPN/proxy)。顺带一提,台湾人把 网路管理系统管理 通通当作同一件事情,叫做 资讯系统管理

二、 网路程式设计 。编写程式控制讯息传输,诸如 广播路由 。已有 经典著作中文翻译程式范例 。知名函式库如 Asio 。知名应用如即时通讯软体、社群网站、影音网站、自动线上更新、即时转播、P2P 软体。

三、 网路攻防 。鑽研网路与作业系统的运作细节,是“资讯安全”领域之中的重要环节。台湾现况是 由台大交大台科大在学学生主导 ,而台湾业界的技术似乎还停留在十五年前的水平:网路封包分析、弱点扫描(从档案裡搜寻关键字)。

四、 网路理论 。研究网路结构的数学性质。例如 Link Analysis 。知名应用如 社交网路分析学术搜寻

Distributed System

分散式系统。有了网路之后,资料不必齐聚一地,而是分散各处,再利用网路互通有无。

http://research.google.com/people/jeff/

分散式系统有一个极重要的特色是“分散式计算”:运用多台电脑,分工合作处理资料,又快又好。相关工具有 Apache Spark、Apache Flink,是当前的研究热点。

将来甚至可以实现:资料不必储存在自己的电脑,而是储存在别处的资料库。以后的电脑和手机,只要具备输入、输出、连线、充电的功能就足够了,至于储存、计算的功能通通交给大型伺服器丛集。藉由分散式系统迅速取得资料,藉由分散式计算迅速得到计算结果。

Operating System

Operating System

作业系统 。整合所有电脑功能,方便人类操控的系统。有名的作业系统如 Microsoft Windows、Mac OS、Linux、Android。使用作业系统,应该不必介绍,熟能生巧。开发作业系统,有如工程建设,细节繁複。

想要学习如何使用作业系统,Microsoft Windows 大家都是自己摸索、科普书籍、社会大学、电脑才艺班、 胖卡 ;Linux 可以参考 鸟哥的 Linux 私房菜

想要学习如何开发作业系统,把 Unix Programming、Linux Kernel 摸个精通就差不多了。儘管这是资工系必修课程,但是台湾学校清一色只教观念、不教实务,有教等于没教。所幸坊间已有大量书籍与课程,可以自学。

UVa 10435 10966 142 ICPC 4392 7588 UVa 1682

Embedded System

嵌入式系统 。把电脑安装在电子设备裡面之后,尝试用电脑控制设备。

台湾的电子产业不同凡响,产品行销全球(先进国家不想碰的吃力不讨好的高污染工作,台湾捡来做)。受到电子产业庇荫,嵌入式系统获得发展契机。有了嵌入式系统的学问,就能用电脑控制电子设备;接著配合演算法的学问,就能完成各式各样的神奇任务。

学习嵌入式系统,可从单板机、单片机(单晶片)(微控制器)、微处理器下手。 单板机 ,例如 Arduino 和 Raspberry Pi,坊间已有书籍和课程。 单片机 ,例如 MCS-51(8051)、PIC,是高职电子科的课程内容。 微处理器 ,例如 ARM 架构, 民间人士 比起学者还出名。

电子产业链

我也不明白。下面是草稿。也许可以参考 这个网站

硅/半导体
http://zhe09.pixnet.net/blog/post/51558978

IC (在上面画电路,这领域叫做 EDA,软体叫 CAD)
http://www.yzuda.org/Useful_Links/recruit/2011/
http://icdc.ee.ccu.edu.tw/2015/index2.php?page=OldExams
http://www.csie.ntu.edu.tw/~hungsh/CA/IC_design_industry.ppt

SoC (很多不同功能 IC 设计在一起,制程一样)
http://people.cs.nctu.edu.tw/~tfchen/TW-SoC.pdf

SiP (很多不同功能 IC 拼在一起)
http://technews.tw/2015/11/29/apple-sip/

PCB (很多上面的东西一起钉在这板子上)
http://programmermagazine.github.io/y201410/htm/video1.html
http://wwwsixman.blogspot.tw/2012/08/iicpcb.html
http://www.researchmfg.com/2015/10/pcb-production-process/

CPU (微处理器,一种 IC)
https://www.youtube.com/watch?v=qm67wbB5GmI
https://www.youtube.com/watch?v=wOuYLq6vfLE

ARM (微处理器规格书,32 位元 RISC 处理器市占 90%)
http://www.esdesigner.com.tw/esd/article/arm-1.pdf

ARM 处理器出货量,占有 95%的智慧型手机、90%的硬碟机、40%的数位电视和机上盒、15%
的微控制器、和 20%的移动电脑

树梅派用的还是很旧的 ARM 架构

嵌入式系统
http://www.barrgroup.com/Embedded-Systems/Books
http://shop.oreilly.com/product/0636920017776.do

ARM
http://www.davespace.co.uk/arm/introduction-to-arm/books.html

WinCE 和 Linux BSP  (驱动程式)
https://lwn.net/Kernel/LDD3/
http://elinux.org/a/a3/Elce2013-petazzoni-devicetree-for-dummies.pdf

programmable SoC
1. MTK 设计晶片

  (1) 以 verilog 语言,去设计电路图。
  (2) 绕线。

2. MTK 用一堆晶片兜出 SoC,最后叫别人做。

  (1) 台积电做出硅圆,然后把晶片重複地印在硅圆上。
  (2) 测封厂把硅圆切成晶片,然后包装成晶片。
 (3) 某个厂把晶片堆叠起来,弄成一个 SoC/SiP。
  (4) PCB 厂把晶片/SoC 黏上去,弄成开发板,
      并且设计 compiler 和 linker,让人家可以用 C 语言开发。

3. 该 SoC 甚至可以做成 ARM/x86 架构,符合计算机架构,并且在上面安装作业系统。
   (Broadcom 生产的 http://www.farnell.com/datasheets/1521578.pdf)

3-1. 某公司去买开发板回来,上面附带

  (1) 各脚位功能规格书,告诉你喂什麽讯号会得什麽结果。
  (2) 组合语言/C 语言的组译器。
     (a) 用 C 语言的 pointer 去得到脚位,用 assign operator 去喂讯号。
     (b) 用组合语言的指令去执行一些比较厉害的功能。
         (通常已有现成的 C 的范例程式码,包成 function,直接呼叫就行。)
     (c) 写好中断表,让硬体 reset 就执行自订程式。
   (d) 组译之后烧在开发板上的 ROM 裡面,硬体插电后,电压正确就会执行程式。
  (3) 偶尔要用示波器去量脚位,看看波形是否符合规格书。判断硬体是否为瑕疵品。

 可以做出

  (1) 简单的控制程式:例如 LED 灯亮起来。
  (2) 甚至写成 RTOS 即时作业系统(考虑元件反应时间、中断)。
      不过这跟个人电脑的“作业系统”完全没关係,只是名字很像而已。

3-2. 某公司去买比较厉害的开发板回来

  (1) 可以装在计算机上(通常是 USB),并且提供 BSP,让 Linux 和 WinCE 可以写 driver。
  (2) 写 driver,符合某种心照不宣的规格,让写应用程式/写函式库的人可以呼叫。
      通常要自己控制记忆体、记录硬体资料等等。

3-3. 某公司去买超级厉害的开发板回来 (例如 Arduino)

  (1) 裡面有作业系统,并且提供 IDE,可以直接用电脑写程式。

User Interface

User Interface

使用者介面 。电脑与人类沟通的介面。发展历程是读卡机、 文字介面图形介面实体介面

台湾完全没有相关课程。即便是经典的文字介面、图形介面,台湾也没人谈论设计原理。光是使用别人已经设计好的、完善俱全的函式库,大多数人就已经油尽灯枯了。

Human-Computer Interaction

人机互动 。研究人与机器如何互动,然后设计机器、设计互动模式。稍微脱离了计算机科学的范畴。

台湾完全没有相关课程。虽然资工系有名称类似的实验室,事实上却把重心放在手机 APP、触控萤幕、电子书等等,你懂的。所幸台湾的电子界和设计界相当杰出,仍有人努力研究。

http://mmdays.com/2013/10/23/ 
http://code.arc.cmu.edu/ 
http://designhash.com/best-mobile-ui-design-patterns-sites/ 
http://www.designinterface.jp/en/projects/ 
✔7 Things you didn't know existed 

Software

Software

软体 。达成特定任务的程式。民间最近流行手机 APP,就是在手机上面执行的软体。“ 软体工程 ”旨在研究如何开发软体。

开发软体,需要学习程式设计,学习现成工具,学习经验观念。诸如软体开发框架 Struts/Spring/Hibernate,程式设计观念 coding convention/defensive programming/OOAD/refactoring,专案管理观念 UML/SVN/testing/code review/PMP 等等。族繁不及备载。

想要开发软体,一种方式是活用这些东西,另一种方式是开发这些东西。前者较容易,坊间书籍不可胜数,网路资源唾手可得,学习难度非常低。后者较困难,必须深入理解计算机科学。台湾的现实情况是:几乎所有软体工作都属于前者,门外汉稍作训练就赶鸭子上架,学徒都靠自己摸索,讲师通常也是学徒。台湾人把工具叫做技术,把使用工具的人通通叫做工程师,一群工程师常常相邀参加技术研讨大会互相取暖,最后依然培养不出专家。

这种情况就好比造车和改车。造车门槛高,门外汉碰不得;改车门槛低,一堆人爱玩。一群人改了车之后就相邀出来见面讨论技术,最后还是没有一个懂车的人。

软体工程,很少人以科学方式进行研究,多半是经验谈,是个嘴砲成分很高的领域。现时流行的事物,常常是媒体炒作出来的,而不是受到严谨考验后的适存者。反正出错了也不会死人、也不会被告,只要发布更新就好,导致大家随兴乱搞一通。

台湾的硬体业方兴未艾,台湾的软体业则是完全相反,烂泥扶不上牆。主要是因为软体业有一些特别的地方:

一、开发软体只仰赖人力(脑力),不仰赖其他资源。即便投入各种资源,诸如金钱、时间、设备、能源等等,仍旧无法控制生产成果。唯一成功的方法,就是广纳奇才。而台湾显然没有那麽多奇才。

二、複制软体不需要成本,发行软体不需要太多成本。即便掌握各种资源,仍旧无法控制市场走向。软体品质决定一切。

三、开发软体只仰赖人力(脑力),更精确来说是数学──毕竟计算机是计算数学的机器。想要掌控软体研发进度,源自自身对于数学的敏感程度。而台湾显然没有那麽多数学又棒、胆识又大、喜欢做软体的人。

大家退而求其次,抱朴守拙,鑽研有规格书的、可以按表操课的东西,如程式语言、作业系统、函式库。于是台湾软体业就变成现在这样,ERP、资讯服务 APP,剩下的惦惦吃三碗公,没了。

最后大家只好开始提倡开源软体。

Game

游戏 。经典主题诸如 游戏控制器游戏物理游戏人工智慧游戏引擎 。知名函式库如 DirectX、SFML、SDL。知名游戏引擎如 UnityUnreal 。知名商业平台如 Steam。

http://bbs.gamer.com.tw/#MITpcgame:a:6293
http://home.gamer.com.tw/creationDetail.php?sn=2249441
http://chenglap-blog.logdown.com/posts/161716
http://blog.monkeypotion.net/gamedev/career/why-you-shall-not-enter-game-industry-2011
http://www.u-acg.com/archives/3922
http://simonsays-tw.com/web/lodeRunner/lodeRunner.html
http://phoenotopia.com/
大师谈 Java 游戏设计
大师谈游戏设计: 核心技术与演算法

Automation

Automation

自动化技术 。跨领域学科,结合了电机、资工。让机械设备自强不息的学问。维持人类日常生活运作的重要学问。

Robotics

机器人学 。跨领域学科,结合了许多领域,例如电机、资工、材料、生物等等。困难到了极点、进展十分缓慢的一门学问。

跟计算机科学有关的主题,例如 SLAMInverse KinematicsMotion Planning

台湾的现况是,就连前面章节所列的主题都搞不定了。大家不如直接看钢弹动画、玩洛克人过过乾瘾吧。

http://www.vccoo.com/a/9prkz
http://cirs.udg.edu/
http://robotik.dfki-bremen.de/en/media/video-archive/

Arm

Wheel

Drone

Modular Robotics

http://biorob.epfl.ch/roombots

Biorobotics

Humanoid Robotics

Extroskeleton

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文