计算机2级学,web和C后,哪个对3级的学习更加有帮助?还是张杰 我们都一样样?

计算机二级学什么对网站建设有用?_百度知道
计算机二级学什么对网站建设有用?
提问者采纳
了解计算机语言的流程,便于理解和入门、Java、C++、Access)学习这些东西对你将来学习网站编程语言有一定的基础作用、数据库程序设计(包括Visual FoxPro、Delphi)、Visual Basic:语言程序设计(包括C计算机二级考试科目
提问者评价
其他类似问题
您可能关注的推广回答者:
计算机二级的相关知识
按默认排序
其他3条回答
一点用没有 做网站用的几个语言和数据库内容都不在2级里面
不知道你说的网站建设是网页制作了,还是web服务器搭建。严格的来说计算机二级和这两者都没有关系,网页设计,主要用到的是html php
javascript
web服务器用到的是服务器搭建,用到的数据库也基本上都是mysql 和sqlserve 再高端点的就是db2
oacle等,然后再加一点服务器配置了,貌似计算机二级里面每个方向都没有和网站建设有关系。计算机二级讲的都是一些很基础的东西,没有太大的实用性。要考的话建议考二级c了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁计算机2级C语言等级考试_百度知道
计算机2级C语言等级考试
计算机2级C语言等级考试? 注意事项
自减;  printf(“x1=%8,否则跳过分支体; &lt,写成,分支嵌套是不难的?   学习C语言始终要记住“曙光在前头”和“千金难买回头看”,然后根据程序流程写出源程序,输出三步曲的程序就是顺序结构,对函数的定义,设计这类程序时往往都要先绘制其程序流程图;(2*a),接着执行第2分支,在学习中我们主要学习while,后执行循环体。这就要求掌握算法,它决定同级运算符的运算顺序.4f-%8.14159*r*r,常见的输入;  }   ③嵌套分支语句;0时其绝对值是为x的反号,即goto循环;br&#47,但初学者往往会觉的这种表达式难读。程序流程图是根据解题分析所绘制的程序执行流程图,只要正确绘制出流程图;a = 3,做好练习与上机调试、do…while.4fi\  i =sqrt(-d)&#47。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),其程序的语句顺序就是输入圆的半径r,而有些可暂时放弃不记;=0)   {x1=(-b+sqrt(d))&#47,嵌套结构也就不难了。   顺序结构,大多学不好的就是因为一开始遇到困难就放弃、上课能专心听讲;while 循环和for循环都是先判断表达式, i),因此程序段为,一是当条件为真;br&#47,不要忘了回头弄清遗留下的问题和加深理解前面的知识:当我们把握好上述几方面后。   ①if(条件)   {分支体}   这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,然而却又是最重要的;(2*a),根据我们的《C程序设计》教学大纲中。对于要先做判断再选择的问题就要使用分支结构,应明确它们的异同点。其程序段如下,方程有两个实根,编写出的程序就往往很长,而do…while循环是先执行循环体后判断表达式,执行分支体,用来描述重复执行某段算法的问题、调用,运算种类远多于其它程序设计语言。如,因此常说,这就要清楚三种循环的格式和执行顺序,如自加,怎么说自己听不懂呢,查找下一个分支是否匹配: c = a,一般情况下它们可以互相代替换,这时分支体就不会执行。不过大多数情况下顺序结构都是作为程序的一部分,i) &lt,否则(b^2-4ac&lt,曾经和好多同学谈他的问题,我们知道,如把while循环的例题。 顺序结构可以独立使用构成一个简单的完整程序。   那么,根据不同的程序流程选择适当的分支语句,它的执行顺序是自上而下,是不能用break和 continue语句进行控制的,当x&gt,这是我们学生最不易做到的,回答是听不懂;   ②if(条件)   {分支1}   else   {分支2}   这是典型的分支结构:求ax^2+bx+c=0的根   分析,不能达到预期的目的,C语言的运算非常灵活?   一.学好C语言的运算符和运算顺序   这是学好《C程序设计》的基础:   d=b*b-4*a*c。下面我介绍几种基本的分支结构?相应的根本就没学习,执行其后的块;2a。   ④switch开关语句。它有两条分支路径可选、值的返回等中要尤其注重理解和应用;br&#47:a =n”;2a,这样做把程序设计分析与语言分开,而x&lt,难以理解、放弃这样三个过程,关键原因就是对运算符和运算顺序理解不透不全,弄清各分支所要执行的功能,学习后面的知识,x2=%8:C程序=主函数+子函数;   else if(条件2) {分支2}   else if(条件3) {分支3}   ……   else if(条件n) {分支n}   else {分支n+1}   嵌套分支语句虽可解决多个入口和出口的问题,我们均可广义的把它们看成一个语句,这就要求我们要清楚这些算法的内在含义  结语,这当然要用到第三个杯子,只要求我们掌握一些简单的算法,执行分支1在初学C语言时、三个数的比较、循环结构中的循环体等;如果不匹配、计算; 执行结果是a = 5,否则就可能成了一个死循环,“千金难买回头看”是学习知识的重要方法; c = a.4fi&#92,b = 5,不是新知识,b的值,鼓足勇气进行学习。 因此.   二.学好C语言的四种程序结构   (1)顺序结构   顺序结构的程序设计是最简单的,这节课你听过课吗,如果相匹配。   学习分支结构不要被分支嵌套所迷惑,输出圆的面积s、do ,每个模块都编写成一个C函数,只要我们对此合理进行分类:其语句格式为:   if(条件1) {分支1},否则执行分支2,例如分支结构中的复合语句; & &lt。   (2) 分支结构   顺序结构的程序虽然能解决计算,分支1和分支2都可以是1条或若干条语句构成,我们如何学好《C程序设计》呢,它的所有分支都是并列的;0)有两个共轭复根,将每种循环的流程图理解透彻后就会明白如何替换使用,只要同学们能克服畏难;&&&gt,要完成对问题的分析就容易了。当多种不同运算组成一个运算表达式,其绝对值不变,假如第三个杯子是c,根本就没听过课; 则执行结果就变成a = b = c = 5。分支结构适合于带有逻辑或关系比较等条件判断的计算,这是程序设计中最能发挥计算机特长的程序结构。另外还要注意的是这三种循环都可以用break语句跳出循环,优先级为1 ~ 15,计算s = 3,取决于开关设置,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,运算的优先顺序和结合规则显得十分重要,只要对双分支的理解清楚、厌学,语句结构变得非常复杂:用while和do…while循环时,等用到时再记不迟,也可以是多条语句即复合语句,待学完后面的章节知识,用continue语句结束本次循环;  x2=(-b-sqrt(d))/br&#47。如两个数的交换;=0时;  printf(“x2=%8。分支结构的执行是依据一定的条件选择执行路径,x1,设计出相应程序;0) x=-x,即将复杂的C程序分为若干模块,如果条件成立,这是初学者的一个常见错误?回答又是没有,现交换a。如,到底执行哪一块,前面的问题也就迎刃而解了。   在学完这三个循环后,功能十分丰富,其它都是从左至右结合;=0时,这一方面我感觉是我们同学最欠缺.4f、逗号运算和三目运算使表达式更为简单,x2),就是说; &lt:if(x&  }   else   {r=-b/n”r,使得问题简单化、结构重复多。在学习中,才能前后贯穿。   (4)模块化程序结构   C语言的模块化程序结构用函数来实现、顺序结构,那么正确的程序为;&gt,找到解决问题的方法; &lt,但超过3重嵌套后,将来用起来得心应手、3级和第14级为从右至左结合外,以便在不同场合下使用、不想听;br&#47:要计算x的绝对值,它不同if…else 语句,分支中也可以有循环。   例如、分支结构和循环结构并不彼此孤立的,即一个运算式中出现多种运算符时,第3分支……的块,只要按照解决问题的顺序写出相应的语句就行。在实际编程过程中常将这三种结构相互结合以实现各种算法,在掌握这些基本算法后,我反问,并通过上机调试加以巩固,而for循环一般在语句1中进行的,有些运算符在理解后更会牢记心中:   循环结构可以减少源程序重复书写的工作量,直到遇到break语句,超过3重可以用下面的语句;br&#47。四种循环可以用来处理同一问题,这个问题就好像交换两个杯子水,而不是严格按照语句出现的物理顺序,又谈何学的好,其实不管哪种结构,再以相应的编程语言写出代码,《C程序设计》运算符可分为15种优先级、选择法排序和冒泡法排序,这样能更好地理解它们的作用,循环变量的初始化的操作应在循环体之前,记住这些运算也就不困难了,用for语句重新编写一个程序。学习C语言就是要经过几个反复; b = c,也就是说do…while的循环体最少被执行一次,但是要编程的问题较大,造成可读性差。  三.掌握一些简单的算法   编程其实一大部分工作就是分析问题,解决这个问题的方法是将C程序设计成模块化结构,程序执行时,b = c = 3如果改变其顺序,但一般不提倡用goto循环;  printf(“x1=%8,而goto语句与if构成的循环,积累应该掌握的C知识,易于理解。在表达式方面较其它程序语言更为简洁。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用,也就是表达式的值与常量表达式相匹配的那一路,对于程序的阅读和理解都极为不便; b = c。   (3)循环结构,找出它们与我们在数学中所学到运算之间的不同点之后;n”r。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,依次执行;   if(d&gt:该语句也是多分支选择语句、while循环,与其它结构一起构成一个复杂的程序.4f+%8,初学者最容易犯这种错误。   先要明确运算符按优先级不同分类,建议嵌套在3重以内,而while 循环和for就可能一次都不执行、顺序结构:因为当b^2-4ac&gt,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,从高到低,除第2.4f\ < a = b,C语言中提供四种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处;&gt,例如计算圆的面积、输出等问题,由第一分支开始查找,在循环中可以有分支,但不能做判断再选择、for三种循环。嵌套只不过是分支中又包括分支语句而已;&gt,根据绝对值定义,不明白的地方多问多想;&gt?Cwhile循环和for循环,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁;br&#47
其他类似问题
按默认排序
其他1条回答
a=a-(a-5) -&gt.m=(int)(a&#47.3 那i=12 另外2个所以就变成0了3; a=0-(0-5) -&gt.因为3个scanf都是整型%d 就是说int型 所以你输入12; a=5 把这个值赋给c 那c=52.试试这个41. a,b=0 a-=a-5 -&gt.第四题题目是什么 看表明1 scanf里 应该是%f吧 你给那些变量定义的是双精度的浮点数;60);.,b没有被赋值 所以a
计算机2级的相关知识
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁请问学C还是C++好呢-中国学网-中国IT综合门户网站
> 请问学C还是C++好呢
请问学C还是C++好呢
转载 编辑:李强
为了帮助网友解决“请问学C还是C++好呢”相关的问题,中国学网通过互联网对“请问学C还是C++好呢”相关的解决方案进行了整理,用户详细问题包括:直在做Java方面的东西,但是最近感觉做起没什么意思,请问学C还是C++好呢,学习的激情也不大了,想学学其它的。谢谢,具体解决方案如下:解决方案1:反之亦然学C++要有C基础。总之入门的话显然是从C开始,越往后你会发现二者差别越大,有种你去看看boost源码,之后你可以决定向精通C发展还是向精通C++发展,对比两个只有十来行的程序根本没有意义(而且你那程序中根本没有体现C++真正编程思想)。完全不赞同楼上说的“学了一门另外就是小菜”的说法。二者的编程风格和思想会有非常大的差别,事实上无论是C还是C++要真正学通是需要很长时间的。特别是C++,语言细节太多,楼上说的什么语句简洁易懂简直是扯淡,但是精通C++的不见得能说自己精通C,学C不一要C++基础。会C++的可以说自己会C,会C的也可以说自己很快能学会C++,看得你吐血。但是不要以为C和C++很接近,实质上二者差别非常大解决方案2:对于初学者,r;=r;a[i]-10+&#39,r; if(n&lt、12……输出是用的c;%d%d&quot,C的代码长度会比C++的短; while(scanf(&quot,a[i]-10+&#39。在C++中可以使用一些C的语句;iostream& if(n&;int main(){&)、输出这些方面;&#92,但是在C中不可以使用C++的语句,讲十进制转换为任意进制;r不超过16;0) {printf(&}两个语言都差不多,要用A表示10;} while(n) {a[++i]=n%r; n*=-1;);9) cout&lt在某些方面C是比C++有优势的。最好还是学C++;n'C语言代码。但是C++有自己的长处;);i--) {if(a[i]&gt,i,a[i]);}C++语言; n/ } return 0,最大差别就是在头文件和输入;;n'%d&i&&lt!=EOF) { int a[100000];} while(n) {a[++i]=n%r;0) {cout&int main(){ int n,C和C++大部分是通用的,&r);这点是比较重要的:#include&%c&quot,r是转为的进制; } return 0;/A' }
putchar('):进制转换; n/ i=-1;-&&&=r.h& &#39,再学另一个就是小菜了,讲十进制转换为任意进制;\ n*=-1,r是转为的进制,i,感觉语句比较简单易懂,我是学C++的;i--) {if(a[i]&gt,只要学好一门就可以了; i=-1;& else printf("n是十进制数;9) printf(&} for(i;=0;r&&n&&r) { int a[100000];a[i];}
putchar(' while(cin&} for(i;&#47,思路清晰; else cout&lt:进制转换;r不超过16;&#39,&n,就是用于面向对象;i>#include&;stdio。其实学习C++还是比较好的;n&A&#39,中间可以嵌套C语言,以此类推11;=0。实例比较一下,学C++和C没有什么区别的;;,有些运算的速度也是比C++的快;n是十进制数解决方案3:学C好些,C语言通用,不同版本的兼容性好。C++就有些乱了,而且太复杂。解决方案4:你会JAVA,那就有面向对象的思想,觉得你应该先学C,然后靠着面向对象的思想C++很容易上手!解决方案5:学C++ &= 学C建议学C++解决方案6:学c吧!学完咯可以结合java搞嵌入式开发通过对数据库的索引,我们还为您准备了:问:我是高中,想学习一下,所以请大家教教,我应该从什么开始学啊C语言还是...答:高中劝你学C语言,学扎实后再学习C++,因为C语言本身就比较难,C++又将C语言扩展了好多,所以先打好C语言的基础,又不会让你感觉太困难,无处下手,又能为学其他语言打基矗===========================================问:相比而言,哪个的综合性能较好呢?哪个的学习周期较长?哪个难度大? 如果用...答:c++ 就是c的扩充,兼容c。 所以c++层次更高很多,也是所用之处最多的语言,从多数应用软件,电脑游戏到现在微软的受机windows系统,c++应用越来越广。 而c主要用于比较基于硬件的开发,操作系统基本都是c语言编的。 而且中国现在的层次也只是多...===========================================问:相比而言,哪个的综合性能较好呢?哪个的学习周期较长?哪个难度大? 如果用...答:楼上的是不正确的! 要先学C语言,然后再学C++ 理由1:楼主可以去网上搜一下大学的课程表,都是先C再C++,这从侧面证明C++比较难 理由2:C++语言是C语言的扩展,也就是"强力升级"版,C语言是面向过程编程,按照指令一条条下去就行, C++是面向对...===========================================问:相比而言,哪个的综合性能较好呢?哪个的学习周期较长?哪个难度大? 如果用...答:推荐qt,MFC难学难改,谁用谁知道===========================================问:一直在做Java方面的东西,但是最近感觉做起没什么意思,学习的激情也不...答:学C++要有C基础,学C不一要C++基矗 但是不要以为C和C++很接近,实质上二者差别非常大。会C++的可以说自己会C,会C的也可以说自己很快能学会C++,但是精通C++的不见得能说自己精通C,反之亦然。 总之入门的话显然是从C开始,之后你可以决定向精通...===========================================问:现在学C好还是学C++好呢?答:我不知道哪个好,但是我分析一下吧。 C语言相对于C++来说,有一下优势: C语言语法更加简洁,在学习语言本身的时候,学C的成本比C++低。 操作系统的底层的API是C写的。 运行速度快 代码更加清晰,更容易懂。 C++也有优势: 支持面向对象。 第三...===========================================问:现在学C好还是学C++好呢?答:尽管C++是从C演变过去的,你可以把C++看做一个C语言的扩展,但是你只要记住这是两门,别管他是谁演变成的谁,如果你想知道那个好学的话肯定是C语言,因为C语言并没有类阿模板啊等等一些复杂的概念,C语言比较“单纯”,但是现在应用比较多的可能是...===========================================问:我是php程序员,工作语言主要就是php,想学个其他的语言,其实我对嵌入...答:个人建议:要学哪种语言,关键是看你做什么方向的开发 底层就用的学C/C++, web应用的学java/php ,php的开发效率更高(较小型项目),java的应用更广泛,知识点更多, 如果是单纯学习知识点的:学习内存操作相关的,学C/C++,要学习面向对象思想的...===========================================问:我是php程序员,工作语言主要就是php,想学个其他的语言,其实我对嵌入...答:个人觉得先c,如果你的c 学的好了,c++ 其实没什么难度。class 和struct 本质上是一个东西。===========================================很多人问过这类问题。其实学C还是C++要看你的发展方向。如果是以数学解题为主,学C就够了。如果是要编程,那C++就比较好。但如果你的发展方向不是职业编程者的话,我...===========================================学C++要有C基础,学C不一要C++基础。但是不要以为C和C++很接近,实质上二者差别非... 事实上无论是C还是C++要真正学通是需要很长时间的。特别是C++,语言细节太多,楼上...===========================================C++,别犹豫,Java中,跟C一点都沾不上边,C中的知识在Java中基本就没用到,建议先学C++,本人就是===========================================C偏向于底层,不算合适,驱动还行,C++ 主要是大型软件,还有游戏开发等等,比较大的项目。JAVA软件在中国比较多,一些商务的,推荐你学C++,但是比较难,不过你学通了C++ 的话...===========================================一、管理方向:智商要求较低,性格外向最好。 C语言,linux操作系统,数据库。 二、开发方向:性格内向,因为喜欢感兴趣而学编程最好。 1、系统级开发,嵌入式开发。 C/C++ linu...===========================================C++。学习C比较好的书是清华大学谭浩强教授的《C程序设计》。要学C++,必先学C。... 很多人推荐《Thinking in C++》,我也看过。不过对于刚开始学习C++的话我认为还是选...===========================================看你想学到什么程度的编程语言,如果你想很出色,那你从C学起,再学C++。 先学好过程编程和基本C类语言的语法。在学C++学习面向对象的编程方式,中间的时间和幸苦不是...===========================================误导新人,还说C/C++做不出东西!!这个恐怕是21世纪天大的笑话了。。。 本人的观点是说,C/C++是强大的,不是做不出东西来。。。你想真正学计算机编程选择C/C++绝对不会...===========================================学C就好了。甚至有人建议学javascript,actionscript这些比较简单的脚本语言就够了,而且还使用些。 计算机专业的新生的话,我也听过有的学校是直接学C++的。===========================================然后把这些预构件连接起来就成了房子.当然有时也自己做一些预构件.因此程序员考试不考Delphi,而考C.C语言是程序员的必修课,把C学一个八成后,就不要用C来写程序了,那样...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助问下计算机等级的划分,和2级C语言和3级网络的区别
问下计算机等级的划分,和2级C语言和3级网络的区别
C语言就是编程,国家指定C语言三级网络考试语言,所以想考好三级网络就得学好C语言,你看考试大纲就清楚了.
三级计算机网络考试大纲
基本要求&& & 1. 具有计算机系统及应用的基础知识。& & 2. 掌握计算机局域网的基本概念和工作原理。& 3. 了解网络操作系统的基本知识。& 4. 掌握Internet的基础知识,了解电子政务与电子商务的应用。 & 5. 掌握组网、网络管理与网络安全等计算机网络应用的基本知识。& & 6. 了解网络技术的发展。 & 7. 掌握计算机操作并具有C语言编程(含上机调试)的能力。考试内容一、 基本知识& 1. 计算机系统的组成。&& & 2. 计算机软件的基础知识。& 3. 多媒体的基本概念。& & 4. 计算机应用领域。二、 计算机网络的基本概念&& & 1. 计算机网络的定义与分类。&& & 2. 数据通信技术基础。 & 3. 网络体系结构与协议的基本概念。& & 4. 广域网、局域网与城域网的分类、特点与典型系统。&& & 5. 网络互联技术与互联设备。三、 局域网应用技术& & 1. 局域网分类与基本工作原理。&& & 2. 高速局域网。&& & 3. 局域网的组网方法。& & 4. 结构化布线技术。四、 网络操作系统&& & 1. 操作系统的基本功能。& & 2. 网络操作系统的基本功能。 & 3. 了解当前流行的网络操作系统的概况。五、 Internet基础 & 1. Internet的基本结构与主要服务。& & 2. Internet通信协议???TCP/IP。 & 3. Internet接入方法。& & 4. 超文本、超媒体与Web浏览器.。六、 网络安全技术&&& & 1. 信息安全的基本概念。 & 2. 网络管理的基本概念。 & 3. 网络安全策略。& 4. 加密与认证技术。 & 5. 防火墙技术的基本概念。七、 网络应用:电子商务与电子政务& 1. 电子商务基本概念与系统结构。 & 2. 电子政务基本概念与系统结构。& & 3. 浏览器、电子邮件及Web服务器的安全特性。 & 4. Web站点的内容策划与应用。& & 5. 使用Internet进行网上购物与访问政府网站。八、 网络技术发展& & 1. 网络应用技术的发展。& & 2. 宽带网络技术。& & 3. 网络新技术。九、 上机操作& & 1. 掌握计算机基本操作。 & 2. 熟练掌握C语言程序设计基本技术、编程和调试。&& & 3. 掌握与考试内容相关的上机应用。考试方式& 1. 笔试:120分钟,满分100分。& & 2. 上机考试:60分钟,满分100分。
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号新手关于如何看编程经典书的一些疑惑?
昨晚翻了萧大的151个答案,看了很多,收获也有些,总结如下:1.《csapp》2.《sicp》3.《算法导论》4.脚踏实地学2+年小白问题来了:1.学了这些如何实践到现实的项目中去,小白的意思是,如何应用到现在的Web开发,移动开发,类似做出一个Demo中去,小白太菜,描述不好,囧。2.很多公司要求参与过什么项目,学了这些能做出什么?3.这几本书学习的先后顺序?我在想提问的方式和语气是不是欠妥,不妥求见谅。
按投票排序
很多学计算机的朋友,都有类似的困惑:我学了计算机专业,怎么还是做不出网站、软件、APP?很多人误以为是教材不接轨,因此崇拜国外教材,其实不是那么回事。我尽量详细地答一下,顺便也讲讲计算机科学到底是干什么的。假如有个同学,受过基本的语文训练,初学写作,梦想成为金庸那样的小说家。他现在想知道,如何提高创作能力,并练习写第一篇小说。这时,有个中文系的大学生路过,面对这位略有稚气的同学,给出了高票答案:我不认为学生写小说有啥意义。学生,就要沉得下心。你看我懂文学理论,要写小说的时候,哪怕不会组词,有本辞典就能写了。所以你不要浪费时间去搞那些,你要先把文学的本质理解透彻,达到我的境界,就能“会当凌绝顶”。所以你现在应该学习《深入理解现当代诗歌》、《文本的结构和意义的生成》以及《音韵导论》,然后脚踏实地学习2+年,这些才是语言的内功。这位同学当场被这些华丽的书名击倒,跑到知乎恭恭敬敬提问:我想写小说,大师给我推荐三本经典,我应该按什么顺序学?学了这些,我能写出什么?不用觉得滑稽,初学者被高大上的书目击倒是正常的,这三本书也确实都是入门经典。但是我们要先搞明白,它们入的是什么门。CSAPP 《深入理解计算机系统》这是 CMU 的“计算机科学导论”的教材。是操作系统入门。(这门课程要求学生有编程基础)SICP 《计算机程序的构造和解释》这是 MIT 的6.001课程的教材。是编程语言入门。(这门课在好几年前就改成Python了)CLRS 《算法导论》这是 MIT 的6.006课程的教材。是算法分析入门。那么操作系统、编程语言、算法分析又属于什么呢?我们系统地看看,计算机科学到底是干什么的。CS大体可以分成这么几个大领域:硬件、系统、软件、网络、计算理论、计算方法。硬件 —— 数字电路、集成电路、存储器、各种硬件设计和验证方法等。系统 —— 计算机架构(指令集、串/并行、网格、云端之类)、嵌入式、实时系统等。软件 —— 操作系统、虚拟机、编程语言、软件设计/开发/验证的工具和方法论等。网络 —— 计算机网络的架构、协议、组件、路径算法、性能分析等。计算理论 —— 可计算性、形式语言和自动机、密码、逻辑、算法分析等。计算方法 —— 数值计算、符号计算、并行计算、计算机图形学、人工智能、机器学习等。你可以按这个提纲,逐个了解一下CS是干什么的。但现在可以先看着这些词,大概感受一下。我们再说那三本书:操作系统和编程语言,是软件领域中小领域,而算法分析是计算理论中的小领域,这是那三本书在计算机科学中的位置。它们作为所谓“经典”,入的就是这几个门。现在你知道这几本书是干什么的了,那么你的问题来了:做网站、做APP又属于这里面的哪个位置?答案是,哪个也不属于。你看整个计算机科学,研究的都是非常底层或基础的东西,与你说的“现实中的产品开发”,基本上是没有关系的。即使有些名称看着和开发有关,其实也不是一回事。比如这里所说的“编程语言”,就好比语言学,是研究各种语言结构的,而不是教你用语言写作的。你要认识到这一点,这不是教材好坏的问题,而是分工不同。就像天文学不是教你制造望远镜的,机械动力学不是教你开挖掘机的。那么问题又来了,你现在就想学习做网站、做APP,这是什么?怎么学?哪家强?实际上,国内大学极少有独立的CS专业,都是加个“与技术”,全称叫“计算机科学与技术”。顾名思义,这就包括计算机科学、计算机技术两部分。你想学的这些,就属于那个“与技术”。你想学的是技术方向,别人推荐的却是科学方向的经典,这个就是你困惑的根本原因。说到这里,我想题主应该已经理解了:计算机科学是干什么的,那三本书是干什么的,以及为什么学完了还是做不出来网站和APP。接下来,我想你会问这两个问题:1、如果我想搞技术,那么学习科学部分还有没有必要?我的观点是,这不是有没有必要的问题。这两者之间的区别,是追求的目标不同:科学追求尽量深入,探索原理;而技术追求尽量封装,提高效率。各种高级技术都是力求隐藏细节,以提高效率。而你选择学习内容的标准,就看它能否显著提高你的生产力。有些技术高度依赖底层细节或原理,造成了效率瓶颈,就应该学。但具体到Web、APP开发,最能提高你生产力的,就是那些前/后端框架和脚本,学完了你马上就能做产品,而不是《计算机程序的构造和解释》什么的。当然,上边有些朋友告诉你,你要学挖掘机,一定要先学机械动力学,否则你就没有内功,永远不可能成为挖掘机高手,机械动力学才是真正的知识,只是现在社会太浮躁,没人愿意花时间学。然而,我并没否认机械动力学的价值,它能让你把挖掘机分析得头头是道,甚至设计制造挖掘机。但是,如果你的目标是开挖掘机,那你就不该这样入门,因为这是两回事。说了这么多,希望你明白了。2、我现在应该如何提高技术水平?学技术的关键思路是两点:一个是模仿,一个是边实践边学。比如说学挖掘机,首先你要知道基本操作,然后看别人是怎么开的,最后自己上去开。遇到问题,比如跑偏了,你研究一下,挖掘无力,你再研究一下,弄明白了就继续开。具体到你说的做网站为例,首先你可以看看《Head First HTML5》和《Head First PHP & MySQL》,或者用Codecademy,学会基本操作。然后找一些作品,比如WordPress,和它的一些经典模板,去看别人是怎么做的。然后,你就可以自己设计一个小网站,尝试把它做出来。不用等什么都学会了再开始做。做的过程中,你遇到什么障碍,再有针对性地去学习和解决。这种边实践边学习的模式,才是学技术的正确思路,这跟搞理论研究的思路是不一样的。最后,再跟你说两个题外话。第一,这几本书,就是大学教材而已,没有那么神。我们以前搞OI,初三就把《算法导论》的习题做得滚瓜烂熟,也就算是入个门,从地下室来到地面的水平。只是有人刚来到地面,就跟你大谈“会当凌绝顶”、“程序员世界的高富帅”什么的,这个不至于的,没必要激动。第二,我面试过一个前端,问他最喜欢什么书,他说TAOCP,连QQ签名都是“只盼TAOCP出第五卷”。我问这对前端有何帮助,他说这是内功。后来考查写代码,他写不出来,说这个不是内功,而他擅长内功。我说那你先证明一下辗转相除法吧,他又强调他擅长的是计算机内功,而不是数学。但其实这个证明,就是TAOCP第一卷、第一章的第一道例题。
没时间,晚上再说,先随便说几句。这些都是计算机的基础学科,学好了基础,迁移技术和往高处爬都很容易。说实话,我不认为学生做个网站有啥意义,我要做网站的时候找个东西看一下就好了,我要做windows程序找个最佳实践和几个例子看看就好了,你把每种api都会背了,也只是一种经验*n而已。学生,就要沉得下心。以学算法为例,第一步完成之后,也就是大致的算法你都知道优劣和实现了,那你以后一辈子的光景,都不必为这些分析啊性能啊最佳数据结构之类的问题发愁困惑。这个境界,只要把算法导论上的算法看看熟就好了,甚至公式证明习题你都完全可以不看,一点关系都没有。我去年说过,7天就够了,结果被一堆喷子围攻。。。哎,我就是7天的嘛没人信,每天十几个小时手写了一本本子诶,人非各种挑刺,很没意思啊,7天真的可以让你算法入门的啊。。。。然后第二层,就是那些喷我不做习题不看证明的人其实也没达到的境界,设计算法,手机屏幕太小先不展开讲了。其实编程高手的能力无非是对特定问题像语言,算法,平台,库,底层设施等知识的理解程度高以及对设计和思想的透彻理解。简单说来就是越深入理解,越能掌控全局。如果你只想做泛泛之辈,随便怎么玩都行。像你只会算法,那只能说是算法强,没有平台知识,不能解决平台问题,所以说算法平台这些东西你本来就逃不掉,必须学好。番外讲两个小故事,一个是fb发布的php编译cpp的工具,php社区用户不行,所以用着拙劣的语言也写不出堪用的工具,而写得出的人压根不会用php,这个东西的出现完全是因为巧合,世上本不会有这样的工具。喷子要说了扎克伯格就用php造fb,比你牛逼多了,是呀,你赶紧去学php造下一个fb吧。还有一个是前几年手机游戏刚火爆,很多公司ios的游戏用cocos2d,安卓就重写一份,其实把objc的运行时弄到安卓上再写几个基础库函数就好了,何必重写。。。。。其实还可以自己弄一个何必用cocos2d,我说就月旬就可以写出来结果又被无知的人在知乎轮了。。。码畜会说unity包办一切,其实unity这种工具你不改是不能做得更快更好的,渲染器那么糟糕,当然你如果就只是想普普通通,怎样都行。所以你学好这些cs学生本应该学好的专业课,以后就少了一个喷我的程序员。你应该感到庆幸的是这些书都是我用人肉看出来的,我看了很多别的坑爹书,不希望有人再看烂书误入歧途。我从事的领域不够多,所以推书也不够全,以本科基础为主,但这足够让你打下坚实的基础了。看了这些书,腰还是会疼,走路还是会费劲,一口气也上不了5楼,但是我保证一个人会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然还只能是屌丝但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但,你好好看书,那就是体验会当凌绝顶的感觉哟欢迎实践过的同学现身说法
先解释一下这几本书都是干什么的。《csapp》,底层。有三个部分:一、汇编和反汇编,对破解感兴趣的人可以看看,之后再看看雪的那几本书。二、计算机体系结构,处理器流水线,内存和性能优化。三、linux C,不过讲的也是不够全面,直接看《apue》好了。《sicp》,讲函数式语言编程思想,即函数式语言的“设计模式”。(设计模式是针对OO来说的,但是函数式语言我实在找不到一个对应的词)。《算法导论》,算法。链表、堆栈、图、树,贪心、动态规划、回溯、分治、递归。这些词汇本身稍微懂编程的人应该都知道。这几本书对web开发有什么用?你第一个问题是“如何应用到现在的Web开发”,我的意思是,如果这些知识对web开发有用,那么你自然而然的就会找这些书看,而不是靠人推荐。从字面上来看,这些书常人也能看出来,不是教你如何编程的书。比如说你要用php+mysql开发一个项目,你就应该去找《php 与 mysql web开发》这种教人php语法和库的书。我承认写php也要懂底层,要懂zval容器机制,才能够多快好省,但这些知识的量,跟写出一个OS所需知识的量远远没办法比。如果你不需要自己动手写一个OS,而又学了这么多的知识,不是浪费还是什么?再比如算法,php的库里面内置了asort,用于给数组排序,你自己实现的,不仅代码难懂,效率上还会起反作用。现在的一般条件下,没有什么项目需要如此苛刻的时间和空间复杂度,算法这种东西短期还是作用甚微的。假如你懂得php而不会sql,你就应该花一个星期了解一下如何编写sql语句,学习e-r模型如何设计表。而不是看《帆船书》里面讲的如何自己编写一个数据库服务,再用这个你自己写的数据库去实现你的应用。计算机是一层一层的,最下面是硬件,上面是OS,之后是各种库和框架,再上面才是你的应用。编写一个工具,和用一个工具开发应用,是两类人干的事情,也是两种不同的事情。那么这些书有什么用?如果你是非从业者,只是玩玩而已,那么请跳过这一节,你做好你的应用就行了。对于从业者,干到一定年头之后,可能竞争力下降,竞争不过那些精力旺盛,成本低,又年轻的新人。这个时候就需要往脑力劳动发展,大致有这么几个方向,技术型有算法工程师和架构工程师,管理型有项目管理师之类的。当你退出编程一线,就需要以上那些东西了。很多人开始只是想开发一个App,不小心看了数据结构算法,然后又想学OS和网络,然后又不得已转成了架构和项目管理。最后退休前才发现,其实只想做一个App而已。所以入行之前先想清楚你需要什么,上了贼船就下不来了。学了这些能做出什么?《csapp》还是属于实践性比较强那一类,我就简要说说里面的lab吧。lab2:反编译一段c语言程序,找出过关的密码。类似CrackedMe,这种程序你可以在吾爱破解上面找到成千上万个。lab3:还是反编译,利用缓冲区溢出,显示指定信息。这个在当今用处不大了,一部分东西不是C写的而无从下手,另外,C语言程序员基本有了安全意识,知道要检查边界值什么的。lab9:写一个基本的bash,也就是linux里那个命令行。你可以体会一下管道过滤器模型。lab10:写一个基本的代理服务器,需要用到套接字,文件读写,线程,中断之类的东西,相当于把最后面那几章糅合起来。这几本书学习的先后顺序?这几本可以简要归结为“底层”和“算法”两类。对于前者,顺序不重要,可能很多本讲的东西都差不多。我们当时这方面的课程,后一门课讲前一门课的一部分东西,参考前一门课的教材。你看到讲的内容都重复的时候就可以终止了。对于后者,真心不建议你一上来就看《算法导论》。我的建议是先找一些比较薄,比较易懂的书,比如普林斯顿的《算法》,或者阿苏外耶的《算法设计技巧与分析》。另外,就是刷各种OJ了,算法理解得再好,不能写成代码,那就是玩具,成为不了真正的工具。解题写代码的过程比你啃书要快乐一万倍。最后,再啃那本《算法导论》,知乎上一上来就推荐这本书的,不是显摆B格,就是估计为难你的。计算机的世界,最重要的一点就是讲究“权衡”。如果你是在职的程序员,先把你的工作做好,先把你的技术使用熟练,有一份稳定而且自己满意的收入之后,再研究这些有的没的。如果你是在校生,不用跑知乎上面来问了,课表已经给了你答案。最后额外补充一个东西:如何学习编程我们都知道,从无到有的过程是非常困难的,就像如何从有机物演变为第一个生命体一样。我觉得光回答完你的问题还不够,需要一种切实可行的方法论来引导你如何编程,然后你就不会跑知乎上问如此别扭的问题了。1、实践别看《csapp》这么高大上,他不过是底层方向入门的课用的教材罢了。我们当时做的事情不过是安装linux、学会使用shell和vim,摆弄gcc和gdb,最后,还是写代码。跟我们后来的web开发课程,安装mysql,配置apache,了解ssh库的使用,反复调试ajax,强不到哪里去。还有算法,你以为光看书就行了嘛?我们基本不是lab就是OJ,小作业也有代码。你打竞赛的话,基本是这东西,而且没有ide检查,对代码质量要求更高,基本相当于在白板上面写代码。在编程这件事情上面,一定要遵从实践派的思想,上机多接触代码,之后多反思,很多东西不用刻意去记就会了。你光看书背书,知识都记住了,写出来的代码根本就编译不过,还调试不出来哪里错了。2、举一反三实际开发过程中,经常要切换库或者语言。一切命令式支持面向对象的语言都是共通的,只要你有举一反三的思维。比如,熟练C++之后,一个星期熟练Java,之后用一些Java自己的特性独立做出一个项目。其实这些都不用重新买书去看,互联网资源很丰富,看看教程和文档就够了。换个语言和库能有多难的事。3、现学现用业务才是软件的灵魂。你的软件要服务于各行各业的人,适用于不同领域。比如,做医疗仪器的软件要懂医疗行业,做机床的控制软件要懂制造业,等等。再比如,你的软件要用到一些新的库,或者要用到一些新的算法,怎么办,谁也不是天生就会的,花时间去了解,然后马上投入实践。4、教材如果你要看书的话,尽量找国外的书。教程的话,哪里的无所谓。主要是因为国内的书,特别是作为教材出的书,都是为了出书而出书,很少有像教程那样真正打算教会别人而出书的。
作为一名认真读过《csapp》《sicp》《算法》的结构工程师,转型为Android开发的人。
这三本书给我留下很深的印象,优点可自行豆瓣或者亚马逊,不表。
第一.csapp给我打下了很好的计算机软硬系统框架基础知识。我基本上从计算机系统小白了解到16进制运算--&位运算--&机器码--&指令集--&条件判断机制--& 分阶储存机制--&进程,线程机制--&通讯机制...看完这本书的一个很显著的能力提升是对代码优化的能力,如果接着学习《算法》会深有体会,有时候少写一个内嵌判断可以减少一个数量级的运算量。顺便增加了C语言知识。
第二.作为一本的优秀的导学教材,如果自觉自己哪方面的知识欠缺,可以直接翻看csapp的相关参考书籍,顺藤摸瓜,是一个很好的看书技巧。
《SICP》我看的是Lisp语言版的,让我惊奇的是编程语言可以是这样的。基本上不需要花时间去学习语法,就可以循序看懂代码。这本书,我没看完,我知识的储备和编程实践经验欠缺导致,这本书的后1/3部分,我很难再理解,暂时放弃。这本书跟caspp是较为互补的,csapp侧重硬件部分,而sicp基本上都是软件部分。特别是语言的部分打开了一个很好的视野,元语言的部分,让我知道如何在一门语言的基础上写另外一门语言。此后,我不再拘泥于编程语言。
《算法》第四版,我看了将近一个月。如果说,前两本书让我见识到了计算机过往惊奇的发展历程,这本书则让我看到了计算机未来惊叹的无限可能,这正是吸引我持续学习的动力所在。
关于现实的例子部分可以看我另外一个回答:。
在知乎上,能明显的感觉到,越来越多的非计算机专业的人都在朝着互联网行业发展,自学编程,可能多数人都曾被各大牛软工无意间晒的薪水亮瞎了双眼。作为其中一名,我最深的体会是,兴趣应该是第一位的。自学的过程中,我花费了2000+小时用于看书,编程,调试...甚至我工作后,每天早上7点起床,看书2小时(这个习惯很好),九点半上班到晚上十一点下班,十二点睡觉,几乎不感觉到累。
我以前做结构工程师的时候,工作时间一周40小时,稍微一加班就觉得违愿。
最后来点现实的忠告:25岁之后自学编程,其实是一条九死一生的道路。
需要具备以下加分条件若干才有可能成功:
1.兴趣驱动。
2.有靠谱的领路人(此法效率最高)。
3.高于平均线的自学能力。
4.英语能力良好,可无碍阅读开发文档。
5.具备一定的经济基础能力,可支撑一年以上无收入生活。
如果是奔着提高收入去转行的人,我更推荐去看《富爸爸 穷爸爸》系列,看完那个更能直接改变你的经济情况。
以上。---------------------------------------------------------原文------------------------------------------------------------------很多人都对工科有一种很大的误解:看到工程师用X工具造出来了Y产品,就以为X工具很厉害,自己去学会了X工具同样可以造出来Y产品。
现实是:你确实可以通过教程或者模仿,采用X工具做出Y产品。但是,如果稍微偏离了教程,就一头雾水。
原因是:支撑工程师用X工具能造出来Y产品的实际上是隐藏在X工具之前的A~W基础理论知识;脱离了X工具,工程师可以用其他工具应用A~W,同样可以造出Y产品。举个例子:现在做电子产品结构设计MD的大部分都是用PROE三维软件画图再交给模具厂开模生产,看起来就是会用PROE就能做结构设计一样,但是我敢打赌,如果你真是仅仅只是会PROE,没有其他任何的机械设计基础,即使你PROE用的人件合一,没有任何一家靠谱公司会录用你的。
道理其实很简单,但是社会的浮躁使得越来越少的人愿意花几倍于学习X工具的时间去学习A~W这些真正的知识。再加上某些培训机构鼓吹教程和模仿的便捷,从几年前的三维设计室内设计到今天的JAVA培训,时代的悲哀总是存在。
CSAPP&深入理解计算机系统&正如它的前言所说,“如果你研究和领会了这本书的概念,你将成为少数的牛人,这些牛人知道事情是如何运作的,也知道当事情出现故障时如何修复。”这是一本适合有编程语言基础,真正有志于编程的导学教材。初次读完全本含练习题不含家庭作业,预计花费时间120个小时到200小时左右。
我同时支持了 和
同学的答案。1、古话说的好,学而不思则罔,思而不学则殆。学编程,关键是灵活运用自己的知识储备;知识储备越多(即要多学),原理理解越透彻(要多思考),能找到的解决方案就越多。只是学很多,却没理解,那就不可能把知识储备转化成解决方案;头脑很好,逻辑严谨,却没有足够的知识储备,同样经常会陷入找不到解决方案的尴尬境地。2、小马过河,牛说河水很浅,刚过蹄子,松鼠说它兄弟前几天刚被淹死:谁在撒谎?都没撒谎。个人情况不同而已。你要结合它们自身的情况以及语境,再对比自身情况,找到其中蕴含的信息。事实上,只要你有一定的逻辑基础、有解决问题的能力,那么哪怕仅仅是看了本《XX语言入门》,你也真就能入门。我当初是在高中刚毕业,还没见过电脑是啥样时,到同学打短工的打印店里趁着看了一下午公认坑爹的《QBasic语言入门教程》,然后回家思考了一个月,编程就入了门。等到了大学,没上过几次机,就可以用QBasic/C写一些字符动画格式的小游戏了。——当然,能这么做的前提是:在此之前,我已经有了动画原理、电视机原理、几何(主要是坐标概念)之类知识储备。然后,算法与数据结构方面的教材,就更加开阔了我的眼界——一点都不夸张:国内本科通用的那本数据结构教材,我只花了一下午就看完了,之后没有再翻开第二遍。不需要了。(当然,那本本科教材比较浅,加上之前做游戏已经有过很多思考,自然学一遍就够了。以后当然还得找别的书看)————————————————————————总之呢,如果你处于“学了一门语言,却不知道如何用它来解决问题”的阶段,这说明你只是学了些死知识,还没学会用它们来思考。那么建议看推荐的那几本书入门——若即便这样都还入不了门,那数学、逻辑等方面就需要补一补了(或许拆一些机械小玩具、自制并搞懂收音机之类东西的原理也能有所帮助)。而如果你处于“学了一门语言,简单问题能解决,稍难的问题两眼一抹黑”,这就说明你已经有了一定的“程序员的思考能力”,但知识储备不足,那么建议看推荐的那些书提高。
反正已经这么乱了,也不妨多我一个答案再来添堵。我一直认为程序员有三种。一种是像E.W.Dijkstra、王垠、 这种大师,信手拈来,九浅一深。第二种是Martin Fowler、
、这种高手,身经百战,内功精湛。第三种就是
V大这种行者,技艺娴熟,洞悉万物。做Web和App开发的那不叫程序员,说到底还不是在不停地做重复劳动?做OI、OJ、OK、OL的也不叫程序员,说到底还不是把老的算法抄来反复练习?程序员比他们多出来的就是对本质的思考。你想做Web、做App的话,要掌握的是领域和建模相关的理论技术。这样子才可能抽取需求完成设计建模,进一步转为代码实现。至于代码实现,随便看某一个框架入门教程就够你用了。于是我也非常不负责任的推荐你一本用来学习建模的书:嗯,估计你可能不太看得懂里面的图画,建议你再参考一下:---------------------
下面正式回答题主的问题
------------------------小白问题来了:1.学了这些如何实践到现实的项目中去,小白的意思是,如何应用到现在的Web开发,移动开发,类似做出一个Demo中去,小白太菜,描述不好,囧。前文已经回答过了。2.很多公司要求参与过什么项目,学了这些能做出什么?学了这些能做的东西还是比较多,比如一个OS的demo,一个虚拟机demo,一个Scheme解释器。很多公司要求参与过项目,也不是像一两个小的demo那样子的;而且像v大那样子没学过做Web也没写过App的不一样还是进了M$RA。3.这几本书学习的先后顺序?这几本书的先后顺序没啥可探讨的,我倒是觉得,你可以先通过做Web、App来尝试一下(说不定你突然觉得Android平台的生态圈太脑残了自己撸一个rOS或者YuOS出来呢。这样子你提到的那三本书应该都有用了。
我的情况应该是从
所说的计算机技术入门,现在往计算机科学方向走。我赞同
的答案,原因无他,新人先踏上计算机技术容易走歪路,什么歪路?被所谓“技术”的创作者、狂热信徒们进行宣传轰炸,先觉得其神乎其神,入了教,接下去觉得这东西真的比安利还好啊!于是成了组织中“坚定”的一员同时展开对其他新人小白的洗脑灌输:你知道XXX吗?你看垠神年轻时因为接触了一些“计算机技术”后写得文章(早年博文还可以在搜索引擎上搜到),连他这般大智慧的人都会受影响,我认为仅有非常少的新人能在这条路上保持坚定清晰的“技术为我用、技术为我驭”的头脑。以及我对现在的媒体资讯有种本能上的畏惧,看看这些标题吧:问题来了,一个学习计算机不久的学生凭什么在这些信息中保持清晰、理智的判断力?有没有人因此而认为银弹真的存在了?我相信大有人在。如果只是兴趣爱好做Web开发,那只要能把网站架起来足矣。如果是以此作为职业,做到深处,会不会遇到性能瓶颈?需不需要对运作中的一部分数据做独立的缓存策略?如果是并发场景,遇到Race Condition了?不懂PV原语、信号量怎么办?Endpoint并发上不去发现瓶颈在一部分计算上,如何将这部分计算做成异步而保证I/O的畅通?是不是要懂MQ、消费者/生产者模型、Pub/Sub模型?如何让用户连上服务器后保持连接直到有消息返回(典型的站内通知场景,此处不用WebSocket)?用长轮询技术?它是怎么做到同时挂住成千上万个连接的?在我的理解中一个线程处理一个连接,这么多连接数服务器根本吃不消啊?什么,有个I/O多路复用技术?为什么这框架号称高并发,超擅长处理I/O密集型应用,但我写的程序效率却还不如以往的那些呢?听说Node.js这个解决方案很不错,可以用JavaScript做服务端应用,它为什么单线程还那么快?又听说最近有个国人的解决方案叫fib.js很火,能够用同步的方式编写异步应用,想了解背后的技术?什么,协程?这特么不是山寨版的线程么,为什么在一个线程中跑那么多协程有时会比同时跑多个线程要快多了,同时程序运行所需的空间也小多了?什么是内核态、用户态、栈帧?如果您看到这里还是对我写的东西无感,我觉得您对核心竞争力也无感。学而不思则罔,思而不学则殆。如果您和我一样,也是从计算机技术入门,我假设您对我之前说的媒体银弹宣传导向认可并且已经具备了一定的免疫力,那么我想说,其实“银弹”还是有的,例如:哈希表的查找速度比线性表要快链表的插入删除操作速度比线性表要快(根据场景而论,请看评论区)在有序线性表中查找元素存在问题的最好的解决方案是二分查找法最近访问过的数据,不久之后很可能再次被访问一旦访问了某个存储单元,不就之后其附近的存储单元也会被访问
其实吧,很多人都在撒谎,他们没告诉你在读那些经典著作之前他们都读了什么入门的东西。毕竟国内大学生的英文水准根本就达不到流利阅读英文作品的地步,就算是浅显如CS著作也是难读。更不要说,这些人在读大学之前就学了很多相关东西了,已经比普通人早,和转行进来的人隔着两层距离。
我一直是“学习编程”的传教士,我鼓励人们无论因为什么目的都应该学习编程,哪怕只有一点点。但我经常遇到的困难就是人们往往认为编程是一件需要花费时间的学习的技能,需要很多基础知识。好吧,我承认编程唯一需要的基础知识就是——英语。如果你不会英语我真的很难保证你会精通编程,但并不表示完全学不了。如果题主已经有了我上面所说的基础,那么可以接着往下看。上面的网站是一个自学编程的网站,使用它仅仅需要英语而已。可以从HTML&CSS学起,然后javascript,并用上面的例子学习创建一个主页。完成这些之后可以在PHP,Python或者Ruby中选一个学习(我个人推荐python),整个过程大概40学时左右,也就是你大学一个学期的一门课的量。然后使用这三门语言中的任意一种语言下的web框架(PHP的我不太清楚,python可以用Django,Ruby可以用Rail),按照官方文档的例子+模板完成一个个人博客,去万网购买一个一年期的域名(大概70块钱),再直接租一台小型的虚拟主机(一个月10块-20块不等),将这个网站放到虚拟主机上并向外服务,最后在上面转载10+篇以上编程相关的技术文章(总计要200学时左右,相当于大学一个学期的5门课)。然后去微软的office模板中心去下载一个看起来炫酷一点的简历模板,写上自己做这个网站用到的技术,并且在项目经验上写上使用XX语言1年,建有自己的网站,期望岗位是研发。最后将这份简历给20家公司投过去(网投就可以),等待面试通知。之后随便选一家公司,但记住在面试的最后阶段,一定要底气十足的要求薪资8K,13薪,5险一金,以及补助若干,如果对方比较主动,可以要1W。正式入职之后你的编程学习之路才正式开始,工作中需要用到什么技术就去买什么书,看什么网站,不会的地方就问同事。希望我的答案能帮助到你。
我在北大教SICP,这本书还是很有意思的,能开阔眼界。不过真的蛮难懂,备课很费劲。我觉得要做个好程序员,没什么一定之规,不会算法也可以,只会算法也可以,似乎就没有什么是一定要掌握的。如果你对现实要解决的问题和需求了解得很透彻,哪怕连快速排序都不会写,哪怕只会用VB和C,也一样能够靠写程序过上很好的日子。这是个人的经验之谈。但是作为一个程序员而言,我已经老了,我说的也许过时了。我觉得不少软件的开发用不到什么高深的技术和算法,只要界面过得去,有别人没想到的功能就可以了。当然还要会营销,那就不是程序员的事情了。
你看看周芷若同学,基础知识不好,直接速成九阴真经,遇到杨过的后人,还不是被虐成狗。
杀鸡不用牛刀啊这些书都是高手写的我实在很讨厌程编程的各种大部头很多都是翻译过来的,文理不通,看着非常别扭。比如说,外国人常常说In fact,翻译过来就是“事实上”,但是我们正常人会这样说话吗。我们喜欢说“其实”我很早以前曾经自己写了一本ASP的书,名字叫ASP七日速成汤。没拿去印刷就扔在网络上给大家下载,看过都说哎呀早看到这本书早就入门计算机了。虽然ASP过时了。但是里面还是讲了不少计算机基础的东西,你可以找来看看,应该还能搜得到。我觉得书这东西出来就是用来读的,必须要搞笑生动让人容易理解,搞那么多艰深的术语真心没必要。但是你这个情况,又和书的关系不是那么大。关键是你的定位啊老兄我看了你要达到的目标,根本和这些书八竿子打不着。你这个情况,我给你个建议你先别看书去找个编程培训班(我保证你本地一大把,很多都是包你找工作的),选一个方向,学几个月你就差不多有基本水平了,而且还有你说的“项目经验”。因为这些培训班都是跟公司很做的,常常接一些外包项目,就需要你们这样嗷嗷待哺的学生来打工,不用给你工钱你还要交学费內说实话,如果不是接触游戏开发,算法这个东西用的机会实在是不多。一般被这种培训班揠苗助长以后 ,你差不多会倒腾了,但是你会发现你只是学了些实战技巧,隐藏在实战技巧下面的兵法,你还不了解,但是那时候你入门了,看书就能看的进去了。这时候去看,吸收就快得多,很多平时的疑问也很容易就迎刃而解。大部分书,我都是当做字典用的,完全没耽误我成为一个合格的程序员。最后,编程这玩意,真的还是要热忱的。小弟9岁的时候就在小霸王学习机上写程序写到11点,不玩里面的卡带游戏你敢想象吗?但是到了现在我也没多牛叉,因为这条路稍微走走还行,走精真的不容易。希望你能成功
所谓练内功厚积薄发是给资(zhi)质(shang)高的人说的,资质低的练内功只能走火入魔。。。码农面试普遍考算法其实考的就是智商,而智商不是能学出来的。所以我的结论是:如果你觉得周围的人都笨的要死,那就学的比他们理论一点,准备打后期。如果你觉得周围的人都比你聪明,那就老老实实30天精通iOS开发和厚黑学,反正后期往上爬也只能靠管理,别指望技术。
1.学了这些如何实践到现实的项目中去,小白的意思是,如何应用到现在的Web开发,移动开发,类似做出一个Demo中去,小白太菜,描述不好,囧。一般你见到的web项目都是苦力项目,极少有那些会用到这些知识的,譬如说阿里做的那个数据库什么的。但是数据库怎么能算web项目呢,顶多算web公司搞的项目。2.很多公司要求参与过什么项目,学了这些能做出什么?基本没有3.这几本书学习的先后顺序?随便什么顺序
他只是推荐了几本名气比较大的书。当然,我不是说这几本书不好。即便如此,我也不建议你看这几本书,因为对你来说用处不大。那个建议从PHP开始的答案就更扯了,这三本书他可能一本都没仔细看过,就跑来告诉你里面讲了什么了。PHP这门语言实在太复杂,上手太难,不建议从PHP开始。想想我以前花了大概2个月,也没能上手PHP。同样是没人指导的情况下,Erlang一下午就上手了。我觉得你最想看到的答案是像下面这样的。这几本书都很好,从哪本看起都没问题。能看完很好,但不看也没啥问题。只要能学习轮子哥那种精神,即便有一个足够好用的轮子,也要自己用奇葩的方法造一个方的轮子出来,就可以了。
csapp太细致了 而且很底层 现在也没深入去看 SICP真是受益匪浅(我是被《黑客与画家》洗脑以后看的此书)算法导论这本书可以用很多"看法" 因为算法这个东西即是前沿领域的刀锋 也是构建软件工程的基石 算法导论里面不但详解了各类算法 也举出大量论证 更多的是介绍算法和设计算法的思想
所以名为导论
当然你也可以抛开学术性的考究 单单作为掌握算法的工具 也是极佳
以前看到过一个比喻 把编程思想比喻成武学内功 把编程技巧比喻成外功 而使用的编程语言则是各门武学
照这个比喻 上面这些书可以看成内功心法 教给你的是编程思想 在遇到问题和需求时如何用计算机的思路来hack之
这些书无一不是经典 全是出之大师之手 读之 相当于能站在大师的视角来理解计算机 这也是吾等”普通人“所希冀的 至于谈到公司为何要招项目经验丰富的人 这个可以当做另外一个话题了 自己也是刚毕业参加工作 公司的项目和以前学校做的玩具差距还是很大的
在接触到真正的产品项目和涉及的面越来越广的时候 就发现了 编程是很琐碎的或者应该说做编程项目是很琐碎的
因为很多时候光有编程思想也是写不出好项目的 很难直述 举例来说吧 java在表现多态的时候,实例变量和实例方法表现不一致rails里验证boolean不为空不能使用presence: true, 而要使用inclusion: [true, false]图片的路径最好不要出现ad(就算是广告O(∩_∩)O~
有些人会装adblocks之类的插件)等等 这些大概都算不上什么编程思想 只是一些语言和工具使用时的一些细节技巧和经验吧 但离开这些细节也不行 有时候想当然的写出一段代码 但是就是不能正常运行
很大可能就是被些细节和坑给绊住了 我坚信很多大牛前辈都是从无数坑趟过来的 一些项目的解决方案 也是一种经验的积累 所以就算你编程理解和思想上不差一些经验丰富的前辈 但是工作效率和可靠程度肯定是比之不如的 答案写得比较乱(理科生) 希望对题主有些帮助
萧井陌和vczh说的这些书虽然很好,但是短期你是用不到的。他们的路子是都是让你预备进BAT或以上级别的牛公司。你想做什么产品,就去读那方面的好代码。撸一些框架(熟悉常见的开发套路),然后读一些开源的产品(1w-10w行规模的),不失为一条迅速找工作的好方法。为避免误会补充一下,那些书还是要看,早一天晚一天的问题而已。
打个比方,计算机系统(底层的硬件和作为基础架构的操作系统和平台)是身体的话(A部分),算法和数据结构是灵魂(B部分),结合起来是一个有机的生命,要做出伟大的事,活出美好的生活(C部分)。CSAPP针对的是A部分,解释这个身体(计算机系统)在现实中是什么样的(但没有涉及硬件部分)。如同开车,对引擎工作原理的了解有助于成为一个更好的司机,程序员了解了这部分内容后有助于写出更好的程序。CLRS针对的是B部分。SICP则针对C部分,讲怎么用计算过程中的各种抽象方法来解决问题(前3章和第4章的大部分);但同时也有A部分的内容,不过是在相较于CSAPP更抽象的层次描述了计算机系统(第4章第一节,第5章),拿这部分与CSAPP对比着看,很有意思。这些东西当然都很有营养,但不是光有营养就能让人成为一个运动健将的。成为运动健将需要多在场地中训练,但是肯定也离不了这些营养,营养不良的练的再多不也是废柴么。
说了你也不会信,搞Web开发、移动应用开发,完全不需要学、也用不着那些计算机理论的东西,包括你说的那三本书!
同是小白,我回答一点自己学习过程中得感受吧。我觉得吧,牛人们都是站在他们现在的高度来推荐这些书的,他们通过经验提炼出来的建议固然是非常好的。但是这并不代表他们推荐了这些书你就得沿着这条线去走,每个人得练级过程都不一样。我给刚来没有什么编程经验的师弟说数据结构非常重要必须学好,至少要知道碰上哪一类问题用什么数据结构,结果最近发现他只看数据结构力图学完数据结构再开始写代码。也许他认为我是这么过来的,但是事实上并不是啊,我也是写了很多垃圾代码,然后看书,学习,再想方设法的把学到得东西往课题里用。说了这些我就是想告诉题主,牛人们推荐的书也好,练级路线也好,不一定代表他们就是这么过来的,即使是也未必就适合我们这样的小白,每个人的学习能力理解能力都不一样的。所以建议题主根据自己的兴趣方向,一边实践一边学习理论,这两条线是不矛盾的,最后争取把理论与实践结合,即使暂时结合不上也不要紧,你储备着就好,指不定什么时候用上呢。记得好像是 说过的,新手就是先选让自己最有成就感的事来做,先让自己有成就感最重要(记不清是不是轮子哥说的了,记错了轮子哥勿怪啊)。

我要回帖

更多关于 都一样 的文章

 

随机推荐