Ⅰ 如何从零开始学编程
在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。那么,你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。
不要浮躁
Badprogrammingiseasy.EvenDummiescanlearnitin21days.,meswithit.
不管是在线下还是线上的书店,满目都是《21天学通java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。MatthiasFelleisen在他的着作HowtoDesignPrograms,SecondEdition一书中明确指出了这种“速成”的趋势并予以了以上的讽刺。
所谓的“捷径”或者说“银弹”是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的“十年磨一剑”,所以不用着急,功不唐捐。
培养兴趣
ionbythepublic,butbecauseitisfuntoprogram.
_LinusTorvalds
沉醉于编程,编程更是为了兴趣。兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。编程很有趣,那是探索的喜悦。那是创造的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有人为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。
在这里对于初学者有两个大坑:
如果初学者们只与预先构建好的“发动机和组件”接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。
第二个坑没有第一个那么明显:幼稚的“整体论”方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来“补足基础”会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。
但腊敏茄也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。这种情况经常发生在计算机科班生身上。
为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为“大厨”,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。但拿猛是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。
总之,编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。
作为初学者,应以后者为主,前者为轮察辅。
启蒙
“学编程应该学哪门语言?”这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是“哪些东西构成了编程学习的基础”?
编程知识的金字塔底部有三个关键的部分:
算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个maxSoFar变量,之后对于每个数
语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。
系统基础:为什么while(1)时线程永远无法结束?为什么int*foo(){intx=0;return&x;}是不可行的?
启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。
因此,为了尽量最小化“语法”与“系统基础”这两部分,建议使用python作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个“玩具”,在大型项目中你也能见到它强大而灵活的身影。熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解操作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。
下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。
完成Codecademy的Python部分。这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。在Codecademy这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。
完成MIT6.00.1x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。MOOC是学习编程的一个有效途径。虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。支线任务:
完成Python核心编程
完成HarvardCS50(如果你英语不过关:完成哈佛大学公开课:计算机科学cs50。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及C,php,JavaScript+SQL,HTML+CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:
阅读《编码的奥秘》
完成《C语言编程》
[可选]如果你的目标是成为一名Hacker:阅读Hacker'sDelight
PS:如果教育对象还是一个孩子,以下的资源会很有帮助:
5-8岁:TurtleAcademy
8-12岁:PythonforKids
12岁以上:MITScratch或KhanAcademy
入门
结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。
设想:
X=用于思考解决方案的时间,即“解决问题”部分
Y=用于实现代码的时间,即“利用计算机”部分”
编程能力=F(X,Y)(X>Y)
要想提高编程能力,就得优化X,Y与函数F(X,Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。此外,SICP的教学语言为Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。
PeterNorvig曾经写过一篇非常精彩的SICP书评,其中有这样一段:
Touseananalogy,ifSICPwereaboutautomobiles,,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,.highway,justlikeeveryoneelse.
如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点
虽然SICP是一本“入门书”,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:
):由上文提到的Google研究主管PeterNorvig主讲,教学语言为Python,内容有一定难度。
HowtoDesignPrograms,SecondEdition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。
UCBerkeleySICP授课视频以及SICP的两位作者给Hewlett-Packard公司员工培训时的录像(中文化项目)
ComposingPrograms:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)
SICP解题集:对于书后的习题,作为初学者应尽力并量力完成。
完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。
关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,MegaProjectList中选取项目。总之,务必在这时拿下你项目实践的第一滴血。
与此同时,别忘了继续打好根基。为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):
计算机系统基础
有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》ComputerSystemsAProgrammer'sPerspective。这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是CMU的“计算机系统导论”的教材而已。CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以“程序在计算机中如何执行”为主线,全面阐述计算机系统内部实现的诸多细节。
如果你看书觉得有些枯燥的话,可以跟一门Coursera上的MOOC:TheHardware/SoftwareInterface,这门课的内容是CSAPP的一个子集,但是最经典的实验部分都移植过来了。同时,可以看看TheCProgrammingLanguage,回顾一下C语言的知识。
完成这本书后,你会具备坚实的系统基础,也具有了学习操作系统,编译器,计算机网络等内容的先决条件。当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。
此外,也是时候去接触UNIX哲学了:KISS-KeepitSimple,Stupid.在实践中,这意味着你要开始熟悉命令行界面,配置文件。并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。
阅读《UNIX编程环境》
阅读《UNIX编程艺术》
折腾你的UN*X系统
数据结构与算法基础
如今,很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的“码农”思想当然不可取。没有扎实的理论背景,遭遇瓶颈是迟早的事。
数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。
供你参考的学习资源:
《算法导论》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是IntroctiontoAlgorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。当然,也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》
CourseraAlgorithms:DesignandAnalysis[Part1]&[Part2]:Stanford开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论
入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑》,《程序设计实践》
编程语言基础
.,.Additionally,,
-ThePragmaticProgrammer
此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:“干净”的脚本语言Python,传统的命令式语言C,以及浪漫的函数式语言Scheme/Racket三个好朋友。但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的Ruby小姑娘,Hindley-Milner语言家族的掌中宝Haskell都是不错的选择。但有这么一位你躲不开的,必须得认识的大伙伴—C++,你得做好与他深交的准备:
入门:C++Primer
[可选]进阶:
高效使用:EffectiveC++
深入了解:《深度探索C++对象模型》;C++Templates
研究反思:TheDesignandEvolutionofC++;对于C++这个NecessaryEvil,看这本书可以让你选择是成为守夜人还是守日人。
现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。要想真正理解编程语言,你必须亲自实现一个。现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。
供你参考的学习资源:
《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。
Coursera编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。
:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个SchemeInterpreter
其他
编程入门阶段比较容易忽视的几点:
学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。此外英语的重要性更体现在沟通交流上,LinusTorvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。
学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的“高级搜索”,当单靠检索无法解决问题时,去StackOverflow或知乎提问,提问前读读这篇文章:Whathaveyoutried?
不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习Markdown与LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。推荐几个供你参考:JoelonSoftware,PeterNorvig,CodingHorror
小结
以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。期间你还会遇到无数的困难,当你碰壁时试着尝试“费曼”技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。当然,依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。
此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。ThePragmaticProgrammer就是这样一本程序员入门书,终极书。有人称这本书为代码小全:从DRY到KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。
后记
如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些“复杂”的API,更不会畏惧学习具体的技术,甚至感觉很容易。当然,为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但总之,你遵循指南好好看书,那就会体验“会当凌绝顶”的感觉。
首先要想学编程,选一门合适的计算机语言就十分重要了,怎么去选择就显得尤为重要了,这要根据自己的兴趣爱好及每个语言的特性来选择,比如说PHP适合做web开发,易学习,易上手,非常流行的一门计算机语言了,我个人比较推荐php语言。
java可以做web开发,做安卓app开发也用的是java,在学习程度上上可能比php稍微难上手一点,不过也是没问题的,如果对java感兴趣可以尝试一下。
python是目前比较火的一门语言了,比较适合做人工智能领域,另外写网络爬虫类的程序,用python也是非常合适的了,看个人兴趣来选择了。
c,c++,c#这些语言就不推荐给了,特别是c#,已经是比较过时的一门语言了,即使学习好了,也不太适合去找工作,c与c++并不是十分适合初学者来学习,因此也是没必要进行考虑了,还有一些更小众的语言,更是没有必要去考虑,因此关于语言的学习就从上面3种语言去选择一门自己所感兴趣的吧!
研发搭建环境
如果选择好计算机语言,那么接下来就是研发环境的搭建了,因为只有研发环境搭建好了,才可以进行后续的编程工作,比如说PHP,那么就从网络上搜一下如何安装PHP环境,能搜出一些简单的教程,初学者按照教程一步一步来,顶多半天时间就可以把研发环境装好了,如果是java,就需要先安装jdk,进行环境变量的配置等,网上也有相关的教程,也是十分容易的,相信大家只要按照教程来做,都可以很轻易的把研发环境搭建起来的
选好视频和书籍,辅助学习。既然是零基础学习,就需要进行系统的学习,而不是到处网络零基础的知识点进行学习。
代码练习
跟随教程一个一个章节的进行学习,需要注意的一点就是不能只是去看,那样不行,要对每一个章节的知识点要亲自用代码敲一遍,运行一下试试效果才行,这样才能提高自己的动手能力,才开始会觉得有一点生疏,慢慢的就会熟练起来,逐渐会增加编程的兴趣。这个过程就是需要反复的进行练习,大量的代码练习才行。这个过程是5步中最关键的阶段了,重在代码亲自练习,对编程中有的章节不明白的地方,千万不要放过去,可以在网上找一些相关的编程交流群,参加进去,在线上咨询一些过来人,也许就可以轻松帮你解决疑问了,对你的学习十分帮助,并且整个过程也都是免费的。
项目实战
如果说基础教程都按部就班的都实践过一遍了,那么你就有一定的编程的基本功了,那么自己就可以尝试着做一些小项目,把学到的知识给串起来,进入项目实战阶段,比如说自己设计一个学生管理系统,并把它完成,如果不了解怎么设计,可以去网上搜索。慢慢就有思路了。
我也在学习这方面,视频书籍看过不少,最推荐的还是北京尚学堂的学习资料,Java.300集,Python400集,都是很经典的入门基础教程,而且是结合项目学习的,很有意思,干货满满,还都是免费的,推荐你可以去看看,相信可以带你走进变成的世界。
从零开始学编程,第一关就是要选择你所要学习的编程语言。面对着琳琅满目的编程语言,初学者常常一筹莫展,拿不定主意,不知该选哪
Ⅱ 不懂英语应该怎么学编程
一般的编程,不需要高深的数学,但逻辑要清楚。不需要太多英语,但了解些基本的单词对编程有好处,必要时也可以查外文文献。下面我为你收集了不懂英语学编程的建议的资料,希望对你有所帮助!
不懂英语学编程的建议
1. 从小的有用的程序入手
学习可以从编写一些具体的小的真正有点用程序入手,需要用到数据结构与算法时,顺带着就学了,感兴趣的再深入系统地学一下。除非你在一些特定的有特殊要求的领域写程序,否则,大多数情况下用不上很高深的数学。
2. 坚持使用英语
至于英语,你要把它真当成一种语言去用,用它去与别人交流,去吸收新知,建议你在有一定基础后,直接看一些英文版的教材和视频,开始会比较难,慢,但坚持下来,好处很多的,你既能学到了知识,又能提高英语水平。
3. 要多尝试,多动手
不能一味地停留在知识点掌握的程度上,因为知识点是死的,然而可以通过这些知识点的串联可以解决很多活的问题。踏实学习,多动脑多探索,多练代码慢慢就会有一个不错的水平!
英语和数学给我们带来的优势
1. 英文好的,你的技术资讯永远都是领先其他人
2. 数学好的,你的代码质量永远都是优越其他人
回到现实中:如果你要成为别人的焦点,那你就要学好英文和数学。如果你要提高你的编程质量,那你就要学好英文和数学。如果你要领高薪,那你就要学好英文和数学。
给英文和数学不好的朋友建议
1. 英文可以补习,数学可以补习,时间是挤出来的,不要为自己的学习找借口
2. 编程领域太广了,需要各种人才,中国这么多人口,你不做编程,别人也会做。
3. 很多先进的技术,不用你去操心的,让老外去完成。我们要学会拿来主义,我们的目标就是挣钱,有钱了才能实现你自己的理想。
你也不要随便地给自己贴标签,比如自己给自己贴上“数学和英语不好”这个标签,也许它符合你现在的情况,但并不等于你以后也是这种情况。
学习编程的注意事项
一:自学也需要看书
自学只是说没有专门的老师手把手教你,并不是说连书本都可以不要了。有人天天来问我一些很基础的概念问题,我问他:“这些概念书上不都写得很明白吗?”他回答:“我没有书。”如果没有书,那么你很难在脑子里形成一个较为整体性的认识,所有了解到的知识都是支离破碎的。且不说大多数人没有精力回答你这些问题,即使回答了,很多东西也不是三言两语就能说清的,很多高手说出来的都是他们自己的理解,这些理解或许很有意味,但也许费了你半天的脑子却怎么也搞不明白。一本书,即使不是什么经典之着,它也可以向你提供一个大体完整的框架,成为你自学过程中的一个向导。这里要说的是:网上电子教程资源丰富,看看无妨,但手中至少应有一本印刷的书——毕竟网上的教程鱼龙混杂,其作者也许并不精通此道,很难分辨其质量好坏。
二:学编程更需要实践
书是有了,可是整天抱着书也不成。编程最怕的就是纸上谈兵,我看到有的初学者,看完了大半本书,和我说起循环函数来头头是道,却连编译器长什么样都没有见过。真要他写几行程序,便是错误百出。我的建议是,无论你涉及编程的时间是多么地短,无论你目前学到的知识多么地少,你都应该不断地尽自己所能去编写一些小程序——即使是把书上的“Hello, World!”亲手输入进去运行一遍,都能让你的编程能力有着极速地提高。
三:编程是创造,不是默写
有人甚至打算用题海战术来学习编程——这完全没有理解编程的内涵。仅仅通过“欣赏”别人写的代码也无法学好编程。有一点需要明白:编程是一个创造的过程。编程的意义在于:通过程序的形式,教计算机如何去完成一项任务。写代码只是形式,真正重要的是如何完成特定的任务。学习别人的代码固然是很有用的,可以学习别人的思想;但是如果仅仅是记忆了一些别人写好的代码,就希望能通过拼拼凑凑成为自己的程序,那是基本不可能的。我的建议是:在自己编写程序,进行创造的过程中,借鉴前人程序中的思想方法——而不是整天处于复制粘贴的状态中。
四:好习惯要从开始做起
所谓“不以善小而不为”,等坏习惯养成了,再改就困难了。因此,类似写程序要注意缩进、为变量和函数起有意义的名字、大小写的使用、行末分号的注意等等,要从一开始做起。很多人对这些善意的提醒不屑一顾,觉得多此一举,浪费时间。其实,如果真的能严格地去做,它们反而可以帮你节省许多时间。
五:不必太刨根问底
“打破沙锅问到底”确实表现了一种钻研的精神,不过我还是建议初者学,有的时候,不必太刨根问底。编程的相关知识都是盘根错节交织在一起的,大多数问题深挖下去会越说越复杂,对于知识掌握不多的初学者来说,只能是越来越糊涂。很多东西,时间长了,随着知识了解得深入,自然而然会明白。就像刚刚学英语的时候,你知道“goodbye”是再见就足够了,难道非要把这个good和再见的关系先弄个水落石出吗?作为初学者,最重要的是尽快地能全面地了解整个知识的全貌,在单独的知识点上,暂时不需要太深入。可以等知识经验丰富之后,再回头来研究。
Ⅲ 想学习编程但是我不会英语怎么办
经常有同学问:我英语不好,编程好像都是英文写的,我能学编程吗?
其实这里有一个小常识,英语是世界上最通用的语言,而计算机编程语言又是老外发明的,所以所有的计算机编程语言才都是采用英文编码。
接着回答开头的问题:英语不好可以学编程吗?
其实刚开始学编程是不需要太高深的知识和英语基础的,所以大家可以放心。如果你英文水平不高,这并不影响你做程序员,编程主要是靠逻辑思维,数学建模。
而且学习编程,常用的单词就那么多,只要把常见的单词学会,你的代码也能写得很好。
只是读文档的时候可能对英语要求稍微高点,但是你也别忘记还有有道词典、谷歌翻译呀。而且在开始阶段,压根不用担心太多,你学的都是现成的,大不了不懂就查。
比如“if” “else” “while” “for” “var” “new”之类。用得多了自然而然地就记住了。
CSS 里英语就更重要了,比如 transition、transform、translate,你在不了解英语含义的情况下,很难把这些记下来。
而且到了后期,你可能还需要读国外开发者分享的文档和技术,甚至有不懂的技术,也需要你去国外网站上查,这时候机器翻译就不大好使了。
所以作为开发者如何学好英语呢?
首先要明白的一点是,常规英语和计算机英语的不同。
常规英语的学习,包含很多方面,有语法,音标,词汇量等知识面,因此需要背大量的单词、语法,还要会听说读写,做阅读、做听力。
而且在国内,我们从小学开始学英语,十多年了都学不好,想要因为编程短期提升常规英语学习,基本上是不可能的。
然而编程所需要的英语都是十分专业的计算机英语。
简单的来说,就是通过汇编语言来让计算机明白所接受的各种指令的英语,对于绝大多数编程软件来说,它所需要用到的英文词组和词汇,都是固定的和相对简单的词组和句式。
相对于常规英语的广泛程度来说,它更像具有固定格式的专业性更强的英文写作,往往只要你熟读熟记后,对于编程是没有太大的影响。
比如简单的for next 循环,你可以不知道for和next是什么意思 ,但是你要知道这是一个循环,还要知道怎么用。
一言以蔽之,就是英语好的同学编程不一定能学好;编程好的同学,不一定英语很棒。
英语只是编程的辅助工具,而非决定性工具。
所以如何提升编程英语,我这里有两个小建议:
a) 设备上可以装翻译工具,哪里不会点哪里。
b) 抓住可以学英语的机会。比如多用英文软件,少用汉化版。比如用英文操作系统,不用中文版。这样你每天都在记单词了。
Ⅳ 求学编程的基础英语
编程常用英语词汇
application 应用程式 应用、应用程序
application framework 应用程式框架、应用框架 应用程序框架
architecture 架构、系统架构 体系结构
argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量
array 阵列 数组
arrow operator arrow(箭头)运算子 箭头操作符
assembly 装配件
assembly language 组合语言 汇编语言
assert(ion) 断言
assign 指派、指定、设值、赋值 赋值
assignment 指派、指定 赋值、分配
assignment operator 指派(赋值)运算子 = 赋值操作符
associated 相应的、相关的 相关的、关联、相应的
associative container 关联式容器(对应 sequential container) 关联式容器
atomic 不可分割的 原子的
attribute 属性 属性、特性
audio 音讯 音频
A.I. 人工智能 人工智能
background 背景 背景(用于图形着色)
后台(用于行程)
backward compatible 回溯相容 向下兼容
bandwidth 频宽 带宽
base class 基础类别 基类
base type 基础型别 (等同于 base class)
batch 批次(意思是整批作业) 批处理
benefit 利益 收益
best viable function 最佳可行函式 最佳可行函式
(从 viable functions 中挑出的最佳吻合者)
binary search 二分搜寻法 二分查找
binary tree 二元树 二叉树
binary function 二元函式 双叁函数
binary operator 二元运算子 二元操作符
binding 系结 绑定
bit 位元 位
bit field 位元栏 位域
bitmap 位元图 位图
bitwise 以 bit 为单元逐一┅
bitwise 以 bit 为单元进行复制;位元逐一复制 位拷贝
block 区块,区段 块、区块、语句块
boolean 布林值(真假值,true 或 false) 布尔值
border 边框、框线 边框
brace(curly brace) 大括号、大括号 花括号、花括号
bracket(square brakcet) 中括号、中括号 方括号、方括号
breakpoint 中断点 断点
build 建造、构筑、建置(MS 用语)
build-in 内建 内置
bus 汇流排 总线
business 商务,业务 业务
buttons 按钮 按钮
byte 位元组(由 8 bits 组成) 字节
cache 快取 高速缓存
call 呼叫、叫用 调用
callback 回呼 回调
call operator call(函式呼叫)运算子调用操作符
(同 function call operator)
candidate function 候选函式 候选函数
(在函式多载决议程序中出现的候选函式)
chain 串链(例 chain of function calls) 链
character 字符 字符
check box 核取方块 (i.e. check button) 复选框
checked exception 可控式异常(Java)
check button 方钮 (i.e. check box) 复选按钮
child class 子类别(或称为derived class, subtype) 子类
class 类别 类
class body 类别本体 类体
class declaration 类别宣告、类别宣告式 类声明
class definition 类别定义、类别定义式 类定义
class derivation list 类别衍化列 类继承列表
class head 类别表头 类头
class hierarchy 类别继承体系, 类别阶层 类层次体系
class library 类别程式库、类别库 类库
class template 类别模板、类别范本 类模板
class template partial specializations
类别模板偏特化 类模板部分特化
class template specializations
类别模板特化 类模板特化
cleanup 清理、善后 清理、清除
client 客端、客户端、客户 客户
client-server 主从架构 客户/服务器
clipboard 剪贴簿 剪贴板
clone 复制 克隆
collection 群集 集合
combo box 复合方块、复合框 组合框
command line 命令列 命令行
(系统文字模式下的整行执行命令)
communication 通讯 通讯
compatible 相容 兼容
compile time 编译期 编译期、编译时
compiler 编译器 编译器
component 组件 组件
composition 复合、合成、组合 组合
computer 电脑、计算机 计算机、电脑
concept 概念 概念
concrete 具象的 实在的
concurrent 并行 并发
configuration 组态 配置
connection 连接,连线(网络,资料库) 连接
constraint 约束(条件)
construct 构件 构件
container 容器 容器
(存放资料的某种结构如 list, vector...)
containment 内含 包容
context 背景关系、周遭环境、上下脉络 环境、上下文
control 控制元件、控件 控件
console 主控台 控制台
const 常数(constant 的缩写,C++ 关键字)
constant 常数(相对于 variable) 常量
constructor(ctor) 建构式 构造函数
(与class 同名的一种 member functions)
(v) 复制、拷贝 拷贝
(n) 复件, 副本
cover 涵盖 覆盖
create 创建、建立、产生、生成 创建
creation 产生、生成 创建
cursor 游标 光标
custom 订制、自定 定制
data 资料 数据
database 资料库 数据库
database schema 数据库结构纲目
data member 资料成员、成员变数 数据成员、成员变量
data structure 资料结构 数据结构
datagram 资料元 数据报文
dead lock 死结 死锁
debug 除错 调试
debugger 除错器 调试器
declaration 宣告、宣告式 声明
dection 推导(例:template argument dection) 推导、推断
default 预设 缺省、默认
defer 延缓 推迟
define 定义 预定义
definition 定义、定义区、定义式 定义
delegate 委派、委托、委任 委托
delegation (同上)
demarshal 反编列 散集
dereference 提领(取出指标所指物体的内容) 解叁考
dereference operator dereference(提领)运算子 * 解叁考操作符
derived class 衍生类别 派生类
design by contract 契约式设计
design pattern 设计范式、设计样式 设计模式
※ 最近我比较喜欢“设计范式”一词
destroy 摧毁、销毁
destructor 解构式 析构函数
device 装置、设备 设备
dialog 对话窗、对话盒 对话框
directive 指令(例:using directive) (编译)指示符
directory 目录 目录
disk 碟 盘
dispatch 分派 分派
distributed computing 分布式计算 (分布式电算) 分布式计算
分散式计算 (分散式电算)
document 文件 文档
dot operator dot(句点)运算子 . (圆)点操作符
driver 驱动程式 驱动(程序)
dynamic binding 动态系结 动态绑定
efficiency 效率 效率
efficient 高效 高效
end user 终端用户
entity 物体 实体、物体
encapsulation 封装 封装
enclosing class 外围类别(与巢状类别 nested class 有关)外围类
enum (enumeration) 列举(一种 C++ 资料型别) 枚举
enumerators 列举元(enum 型别中的成员) 枚举成员、枚举器
equal 相等 相等
equality 相等性 相等性
equality operator equality(等号)运算子 == 等号操作符
equivalence 等价性、等同性、对等性 等价性
equivalent 等价、等同、对等 等价
escape code 转义码 转义码
evaluate 评估、求值、核定 评估
event 事件 事件
event driven 事件驱动的 事件驱动的
exception 异常情况 异常
exception declaration 异常宣告(ref. C++ Primer 3/e, 11.3) 异常声明
exception handling 异常处理、异常处理机制 异常处理、异常处理机制
exception specification 异常规格(ref. C++ Primer 3/e, 11.4) 异常规范
exit 退离(指离开函式时的那一个执行点) 退出
explicit 明白的、明显的、显式 显式
export 汇出 引出、导出
expression 运算式、算式 表达式
facility 设施、设备 设施、设备
feature 特性
field 栏位,资料栏(Java) 字段, 值域(Java)
file 档案 文件
firmware 韧体 固件
flag 旗标 标记
flash memory 快闪记忆体 闪存
flexibility 弹性 灵活性
flush 清理、扫清 刷新
font 字型 字体
form 表单(programming 用语) 窗体
formal parameter 形式叁数 形式叁数
forward declaration 前置宣告 前置声明
forwarding 转呼叫,转发 转发
forwarding function 转呼叫函式,转发函式 转发函数
fractal 碎形 分形
framework 框架 框架
full specialization 全特化(ref. partial specialization)
function 函式、函数 函数
function call operator 同 call operator
function object 函式物件(ref. C++ Primer 3/e, 12.3) 函数对象
function overloaded resolution
函式多载决议程序 函数重载解决(方案)
functionality 功能、机能 功能
function template 函式模板、函式范本 函数模板
functor 仿函式 仿函式、函子
game 游戏 游戏
generate 生成
generic 泛型、一般化的 一般化的、通用的、泛化
generic algorithm 泛型算法 通用算法
getter (相对于 setter) 取值函式
global 全域的(对应于 local) 全局的
global object 全域物件 全局对象
global scope resolution operator
全域生存空间(范围决议)运算子 :: 全局范围解析操作符
group 群组
group box 群组方块 分组框
guard clause 卫述句 (Refactoring, p250) 卫语句
GUI 图形接口 图形界面
hand shaking 握手协商
handle 识别码、识别号、号码牌、权柄 句柄
handler 处理例程 处理函数
hard-coded 编死的 硬编码的
hard- 硬拷图 屏幕截图
hard disk 硬盘 硬盘
hardware 硬体 硬件
hash table 杂凑表 哈希表、散列表
header file 表头档、标头档 头文件
heap 堆积 堆
hierarchy 阶层体系 层次结构(体系)
hook 挂钩 钩子
hyperlink 超链结 超链接
icon 图示、图标 图标
IDE 整合开发环境 集成开发环境
identifier 识别字、识别符号 标识符
if and only if 若且唯若 当且仅当
Illinois 伊利诺 伊利诺斯
image 影像 图象
immediate base 直接的(紧临的)上层 base class。 直接上层基类
immediate derived 直接的(紧临的)下层 derived class。 直接下层派生类
immutability 不变性
immutable 不可变(的)
implement 实作、实现 实现
implementation 实作品、实作体、实作码、实件 实现
implicit 隐喻的、暗自的、隐式 隐式
import 汇入 导入
increment operator 累加运算子 ++ 增加操作符
infinite loop 无穷回圈 无限循环
infinite recursive 无穷递回 无限递归
information 资讯 信息
infrastructure 公共基础建设
inheritance 继承、继承机制 继承、继承机制
inline 行内 内联
inline expansion 行内展开 内联展开
initialization 初始化(动作) 初始化
initialization list 初值列 初始值列表
initialize 初始化 初始化
inner class 内隐类别 内嵌类
instance 实体 实例
(根据某种表述而实际产生的“东西”)
instantiated 具现化、实体化(常应用于 template) 实例化
instantiation 具现体、具现化实体(常应用于 template) 实例
integer (integral) 整数(的) 整型(的)
integrate 整合 集成
interacts 交谈、互动 交互
interface 接口 接口
for GUI 接口 界面
interpreter 直译器 解释器
invariants 恒常性,约束条件 约束条件
invoke 唤起 调用
iterate 迭代(回圈一个轮回一个轮回地进行) 迭代
exception 异常情况 异常
exception declaration 异常宣告(ref. C++ Primer 3/e, 11.3) 异常声明
exception handling 异常处理、异常处理机制 异常处理、异常处理机制
exception specification 异常规格(ref. C++ Primer 3/e, 11.4) 异常规范
exit 退离(指离开函式时的那一个执行点) 退出
explicit 明白的、明显的、显式 显式
export 汇出 引出、导出
expression 运算式、算式 表达式
facility 设施、设备 设施、设备
feature 特性
field 栏位,资料栏(Java) 字段, 值域(Java)
file 档案 文件
firmware 韧体 固件
flag 旗标 标记
flash memory 快闪记忆体 闪存
flexibility 弹性 灵活性
flush 清理、扫清 刷新
font 字型 字体
form 表单(programming 用语) 窗体
formal parameter 形式叁数 形式叁数
forward declaration 前置宣告 前置声明
forwarding 转呼叫,转发 转发
forwarding function 转呼叫函式,转发函式 转发函数
fractal 碎形 分形
framework 框架 框架
full specialization 全特化(ref. partial specialization)
function 函式、函数 函数
function call operator 同 call operator
function object 函式物件(ref. C++ Primer 3/e, 12.3) 函数对象
function overloaded resolution
函式多载决议程序 函数重载解决(方案)
functionality 功能、机能 功能
function template 函式模板、函式范本 函数模板
functor 仿函式 仿函式、函子
game 游戏 游戏
generate 生成
generic 泛型、一般化的 一般化的、通用的、泛化
generic algorithm 泛型算法 通用算法
getter (相对于 setter) 取值函式
global 全域的(对应于 local) 全局的
global object 全域物件 全局对象
global scope resolution operator
全域生存空间(范围决议)运算子 :: 全局范围解析操作符
group 群组
group box 群组方块 分组框
guard clause 卫述句 (Refactoring, p250) 卫语句
GUI 图形接口 图形界面
hand shaking 握手协商
handle 识别码、识别号、号码牌、权柄 句柄
handler 处理例程 处理函数
hard-coded 编死的 硬编码的
hard- 硬拷图 屏幕截图
hard disk 硬盘 硬盘
hardware 硬体 硬件
hash table 杂凑表 哈希表、散列表
header file 表头档、标头档 头文件
heap 堆积 堆
hierarchy 阶层体系 层次结构(体系)
hook 挂钩 钩子
hyperlink 超链结 超链接
icon 图示、图标 图标
IDE 整合开发环境 集成开发环境
identifier 识别字、识别符号 标识符
if and only if 若且唯若 当且仅当
Illinois 伊利诺 伊利诺斯
image 影像 图象
immediate base 直接的(紧临的)上层 base class。 直接上层基类
immediate derived 直接的(紧临的)下层 derived class。 直接下层派生类
immutability 不变性
immutable 不可变(的)
implement 实作、实现 实现
implementation 实作品、实作体、实作码、实件 实现
implicit 隐喻的、暗自的、隐式 隐式
import 汇入 导入
increment operator 累加运算子 ++ 增加操作符
infinite loop 无穷回圈 无限循环
infinite recursive 无穷递回 无限递归
information 资讯 信息
infrastructure 公共基础建设
inheritance 继承、继承机制 继承、继承机制
inline 行内 内联
inline expansion 行内展开 内联展开
initialization 初始化(动作) 初始化
initialization list 初值列 初始值列表
initialize 初始化 初始化
inner class 内隐类别 内嵌类
instance 实体 实例
(根据某种表述而实际产生的“东西”)
instantiated 具现化、实体化(常应用于 template) 实例化
instantiation 具现体、具现化实体(常应用于 template) 实例
integer (integral) 整数(的) 整型(的)
integrate 整合 集成
interacts 交谈、互动 交互
interface 接口 接口
for GUI 接口 界面
interpreter 直译器 解释器
invariants 恒常性,约束条件 约束条件
invoke 唤起 调用
iterate 迭代(回圈一个轮回一个轮回地进行) 迭代
iterative 反复的,迭代的
iterator 迭代器(一种泛型指标) 迭代器
iteration 迭代(回圈每次轮回称为一个 iteration) 迭代
item 项目、条款 项、条款、项目
laser 雷射 激光
level 阶 层 (级)
例 high level 高阶 高层
library 程式库、函式库 库、函数库
lifetime 生命期、寿命 生命期、寿命
link 联结、连结 连接,链接
linker 联结器、连结器 连接器
literal constant 字面常数(例 3.14 或 "hi" 这等常数值) 字面常数
list 串行(linked-list) 列表、表、链表
list box 列表方块、列表框 列表框
load 载入 装载
loader 载入器 装载器、载入器
local 区域的(对应于 global) 局部的
local object 区域物件 局部对象
lock 机锁
loop 回圈 循环
lvalue 左值 左值
macro 巨集 宏
magic number 魔术数字 魔法数
maintain 维护 维护
manipulator 操纵器(iostream 预先定义的一种东西) 操纵器
marshal 编列 列集
叁考 demarshal
mechanism 机制 机制
member 成员 成员
member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取操作符
member function 成员函式 成员函数
member initialization list
成员初值列 成员初始值列表
memberwise 以 member 为单元┅、members 逐一┅ 以成员为单位
memberwise 以 members 为单元逐一复制
memory 记忆体 内存
menu 表单、选单 菜单
message 讯息 消息
message based 以讯息为基础的 基于消息的
message loop 讯息回圈 消息环
method (java) 方法、行为、函式 方法
meta- 超- 元-
例 meta-programming 超编程 元编程
micro 微 微
middleware 中介层 中间件
modeling 模塑
modeling language 塑模语言,建模语言
modem 数据机 调制解调器
mole 模组 模块
modifier 饰词 修饰符
most derived class 最末层衍生类别 最底层的派生类
mouse 鼠标 鼠标
mutable 可变的 可变的
multi-tasking 多工 多任务
namespace 命名空间 名字空间、命名空间
native 原生的 本地的、固有的
nested class 巢状类别 嵌套类
network 网路 网络
network card 网路卡 网卡
object 物件 对象
object based 以物件为基础的 基于对象的
object file 目的档 目标文件
object model 物件模型 对象模型
object oriented 物件导向的 面向对象的
online 线上 在线
opaque 不透明的
operand 运算元 操作数
operating system (OS) 作业系统 操作系统
operation 操作、操作行为 操作
operator 运算子 操作符、运算符
option 选项,可选方案 选项
ordinary 常规的 常规的
overflow 上限溢位(相对于 underflow) 溢出(underflow:下溢)
overhead 额外负担、额外开销 额外开销
overload 多载化、多载化、重载 重载
overloaded function 多载化函式 重载的函数
overloaded operator 多载化运算子 被重载的操作符
overloaded set 多载集合 重载集合
override 改写、覆写 重载、改写、重新定义
(在 derived class 中重新定义虚拟函式
package 套件 包
pair 对组
palette 调色盘、组件盘、工具箱
pane 窗格 窗格
(有时为嵌板之意,例 Java Content Pane)
parallel 平行 并行
parameter 叁数(函式叁数列上的变数) 叁数、形式叁数、形叁
parameter list 叁数列 叁数列表
parent class 父类别(或称 base class) 父类
parentheses 小括号、小括号 圆括号、圆括号
parse 解析 解析
part 零件 部件
partial specialization 偏特化(ref. C++ Primer 3/e, 16.10) 局部特化
(ref. full specialization)
pass by address 传址(函式引数的传递方式)(非正式用语)传地址
pass by reference 传址(函式引数的一种传递方式) 传地址, 按引用传递
pass by value 传值(函式引数的一种传递方式) 按值传递
pattern 范式、样式 模式
performance 效率、性能兼而有之 性能
persistence 永续性 持久性
pixel 图素、像素 像素
placement delete ref. C++ Primer 3/e, 15.8.2
placement new ref. C++ Primer 3/e, 15.8.2
platform 平台 平台
pointer 指标 指针
址位器(和址叁器 reference 形成对映,满好)
poll 轮询 轮询
polymorphism 多型 多态
pop up 冒起式、弹出式 弹出式
port 端口 端口
postfix 后置式、后序式 后置式
precedence 优先序(通常用于运算子的优先执行次序)
prefix 前置式、前序式 前置式
preprocessor 前处理器 预处理器
prime 质数 素数
primitive type 基本型别 (不同于 base class,基础类别)
print 打印 打印
printer 印表机 打印机
priority 优先权 (通常用于执行绪获得 CPU 时间的优先次序)
procere 程序 过程
proceral 程序性的、程序式的 过程式的、过程化的
process 行程 进程
profile 评测 评测
profiler 效能(效率)评测器 效能(性能)评测器
programmer 程式员 程序员
programming 编程、程式设计、程式化 编程
progress bar 进度指示器 进度指示器
project 专案 项目、工程
property 属性
protocol 协定 协议
pseudo code 假码、虚拟码、伪码 伪码
qualified 经过资格修饰(例如加上 scope 运算子) 限定
qualifier 资格修饰词、饰词 限定修饰词
quality 品质 质量
queue 伫列 队列
radian 径度 弧度
radio button 圆钮 单选按钮
raise 引发(常用来表示发出一个 exception) 引起、引发
random number 随机数、乱数 随机数
range 范围、区间(用于 STL 时) 范围、区间
rank 等级、分等(ref. C++Primer 3/e 9,15章) 等级
raw 生鲜的、未经处理的 未经处理的
record 记录 记录
recordset 记录集 记录集
recursive 递回 递归
re-direction 重导向 重定向
refactoring 重构、重整 重构
refer 取用 叁考
refer to 指向、指涉、指代
reference (C++ 中类似指标的东西,相当于 "化身") 引用、叁考
址叁器, see pointer
register 暂存器 寄存器
reflection 反射 反射、映像
relational database 关联式资料库 关系数据库
represent 表述,表现 表述,表现
resolve 决议(为算式中的符号名称寻找 解析
对应之宣告式的过程)
resolution 决议程序、决议过程 解析过程
resolution 分辨率 分辨率
restriction 局限
return 传回、回返 返回
return type 回返型别 返回类型
return value 回返值 返回值
robust 强固、稳健 健壮
robustness 强固性、稳健性 健壮性
routine 例程 例程
runtime 执行期 运行期、运行时
common language runtime (CLR) 译为“通用语言执行层”
rvalue 右值 右值
save 储存 存储
schele 排程 调度
scheler 排程器 调度程序
scheme 结构纲目、组织纲目
scroll bar 卷轴 滚动条
scope 生存空间、生存范围、范畴、作用域 生存空间
scope operator 生存空间(范围决议)运算子 :: 生存空间操作符
scope resolution operator
生存空间决议运算子 生存空间解析操作符
(与scope operator同)
screen 萤幕 屏幕
search 搜寻 查找
semantics 语意 语义
sequential container 序列式容器 顺序式容器
(对应于 associative container)
server 服务器、伺服端 服务器、服务端
serial 串行
serialization 次第读写,序列化 序列化
(serialize)
setter (相对于 getter) 设值函式
signal 信号
signature 标记式、签名式、署名式 签名
slider 滚轴 滑块
slot 条孔、槽 槽
smart pointer 灵巧指标、精灵指标 智能指针
snapshot 萤幕快照(图) 屏幕截图
specialization 特殊化、特殊化定义、特殊化宣告 特化
specification 规格 规格、规范
splitter 分裂视窗 切分窗口
software 软体 软件
solution 解法,解决方案 方案
source 原始码 源码、源代码
stack 堆叠 栈
stack unwinding 堆叠辗转开解(此词用于 exception 主题) 栈辗转开解 *
standard library 标准程式库
standard template library 标准模板程式库
statement 述句 语句、声明
status bar 状态列、状态栏 状态条
STL 见 standard template library
stream 资料流、串流 流
string 字串 字符串
subroutine
subscript operator 下标运算子 [ ] 下标操作符
subtype 子型别 子类型
support 支援 支持
suspend 虚悬 挂起
symbol 符号 记号
syntax 语法 语法