怎么如何看待自拍现象许多信息技术学科方面的大神一身戾气的现象

大概就想表达三个意思。&br&三者重要性依次递增。&br&&br&&b&一是,“计算机行业”严格来讲应当是指制造、销售计算机的行业。&/b&&br&&br&以电为例是最极好的。&br&电力化是人类技术水平的巨大进步。你想到的,想不到的,几乎各行各业的效率都被电气化带来了巨大的提高。当电力变成一种基础设施后,这个世界越发离不开电,但是,电力行业却不再是当年那个最火热的行业,也不再能给这个行业的雇员数倍于平均值的高薪水。&br&是的,微软、谷歌真的用了很多电,但我们不会再觉得微软、谷歌是电力行业的巨头。&br&题主指的计算机行业的热潮其实也&b&渐渐以计算机为起点迁移开来了&/b&。&br&热潮最初是肖克利半导体实验室,然后是仙童半导体,因特尔,然后惠普,IBM,然后微软,然后谷歌,然后脸谱。“计算机行业”最酷的公司从物理学家变成了哈佛的辍学生,从关注领域晶体管、半导体变成了社交网络。&b&从微软开始,这条产业线上的王者就不算名副其实的“计算机行业”了&/b&。&br&&br&&br&&b&二是,说这个行业能一直火下去的人虽然不一定年轻但还是太年轻了。&/b&&br&&br&一个行业火不火的关键是什么?&br&&b&是重要性吗?&br&从来不是。&/b&&br&三十年前的中国,在油粮站有个饭碗是让人艳羡的工作。&br&三百年前的中国,贩盐是无本万利的关系国家“核心利益”的行业。&br&但现在都不是了。&br&尽管盐、油和粮依然有无可替代的重要性,但都不再是什么珍贵的资源了。&br&它们的作用变成一种廉价普及的基础服务。它们不再是被少部分人因为&b&垄断资源或技术壁垒&/b&控制的珍稀资源了。&br&&br&最开始,电力作为一种新兴技术是被少部分人掌握的技术资源。&br&这些人开的公司都叫电气公司。&br&&b&后来电本身不再重要,重要的变成了以电为基础的衍生技术。&/b&&br&电气公司变成了,发电站(真正的电力公司)、照明公司、电话电报公司等等。&br&&br&“计算机行业”也一样。依赖计算机、软件、互联网的行业会越来越多,&br&我们能想到的每一样物品都可以通电,我们能想到的每一样物品也能连接计算和网络。&br&&br&但是它们会在&b&计算和网络构成基础设施&/b&后演化成新的行业。&b&以计算和网络为基础的衍生技术&/b&的新行业。&br&&br&&b&技术产业的兴亡衰替是亘古不变的规律。&/b&&br&妄图坐在浪头就不下的人都在做&b&春秋大梦。&/b&&br&&br&&b&三是,这个行业虽然不会一直火下去,但计算机科学会在相当长(超过我们有生之年的长度里)都是一个极好的专业。&/b&&br&&br&&b&因为计算机科学正在变成一个非常有生命力的核心学科&/b&。&br&&br&人类历史上其实有很多学科都名噪一时,但是能像数学、物理学一样保持长久的生命力、能吸引一代又一代最杰出的头脑的学科实在凤毛麟角。&br&尽管历史还很短,但我相信计算机科学会加入数学物理的俱乐部,吸引一代又一代杰出的年轻人。&br&&br&数学家和物理学家大约自牛顿时代开始起分道扬镳。近代科学体系逐渐建立,物理学成为基础科学的内核和新技术的理论基础。在这个时间点上,有非常多的物理背景学生在进入化学、生物领域后有出色贡献;反之则不然,化学、生物背景的学生进入物理领域很困难。从历史来看,物理学的边界在不断拓展,在吞噬化学、生物学的知识边界。&b&在技术更新的时候,也是物理学家在研究热功当量、内燃机原理(后来交给了新学科Mechanical Engineering的人),物理学家在研究晶体管(后来交给了新学科Electrical Engineering的人),物理学作为基础科学的核心学科也一直站在技术创新的最前沿。&/b&&br&&br&我观测到&b&计算机科学已经开始发挥着类似的作用&/b&了。&br&计算机科学背景的学生可以进入很多领域,在无论是化学、生物、医药等基层科学还是软件、机械、航空航天等工程科学都有特别的竞争力。&b&计算机科学的知识体系都是有价值可移植的。&/b&我见过&b&很多计算机科学背景的科学家在进入其他领域也有突出的表现。&/b&我简单罗列一下,计算神经学、计算生物学、化学模拟、材料模拟、药物模拟等等等等。&br&&b&甚至在物理领域,计算机科学背景的科学家也显示出特别的竞争力&/b&。(当然,从物理进入计算机科学的人也不遑多让,比如姚期智,物理学本科博士,再进入计算机科学领域拿到博士学位,最后获得图灵奖。)如果有一天,一位计算机科学背景出身的科学家获得诺贝尔物理学奖,我不会觉得很奇怪。&br&而且,计算机科学也会像物理学一样,&b&站在技术的最前沿,贡献基础理论&/b&(比如计算方法、机器学习),&b&也贡献技术发明&/b&(比如计算机视觉、自然语言处理。自动驾驶)。我相信在计算机视觉、人机交互等领域成熟之后,部分比较独立的领域也会脱出计算机科学冠以某种Engineering的名字,比如Intelligence Engineering. 就像曾经脱出物理的那些Engineering.&br&&br&物理学/计算机科学与数学的关系也很类似,它们原本都与数学是一体的,它们都在依靠数学模型解决各种基础的问题。这两个学科极具竞争力的知识体系都很方便进入基础科学和工程科学。当然,也都容易进入金融领域。你可以想一想金融领域有多少数学、物理学、计算机科学背景的人。&br&&br&所有把计算机科学读成怎么写软件的人,只把计算机科学当成普通的热门专业的人,那你们就错了。计算机科学和曾经热过的生物或通讯都很不一样。&br&我都想说,&br&&b&你们误解了计算机科学真正的优雅和力量&/b&。&br&&br&是的,大多数读CS的同学都进入软件工程行业了,但这是历史进程的问题。这不是说计算机科学就是教会学生写软件码代码。现在还是Software Engineering的浪潮罢了。而浪潮必将落下。&br&&br&但&b&计算机科学是可以造起新浪潮的学科&/b&,这不AI-Driven的时代正在来临。后面?当然还会有机会的。;)&br&&br&&b&所以说,真正能历久弥新、坚如磐石的是计算机科学,而不是“计算机行业”(更不是写APP写网站的码农)。&/b&&br&&br&今时今日,你问我支不支持年轻人学计算机科学,我是支持的。&br&&b&它能完成时代浪潮赋予的使命,也有经得起时间检验的生命力。&/b&&br&&br&一点微小的看法,谢谢大家阅读。
大概就想表达三个意思。三者重要性依次递增。一是,“计算机行业”严格来讲应当是指制造、销售计算机的行业。以电为例是最极好的。电力化是人类技术水平的巨大进步。你想到的,想不到的,几乎各行各业的效率都被电气化带来了巨大的提高。当电力变成一种基础…
数学方面:&br&&img src=&/7e8ceb9006724_b.jpg& data-rawwidth=&71& data-rawheight=&92& class=&content_image& width=&71&&&br&&a href=&///?target=http%3A///subject/6675562/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mathematics for 3D Game Programming and Computer Graphics, 3rd Edition (豆瓣)&i class=&icon-external&&&/i&&/a&:比较全面,而且有一些原创内容。作者是&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C4 Game Engine&i class=&icon-external&&&/i&&/a&的开发者。&br&&br&&img src=&/2e7d721ecc02bcb1ce47d8_b.jpg& data-rawwidth=&72& data-rawheight=&90& class=&content_image& width=&72&&&a href=&///?target=http%3A///subject/2170925/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Geometric Tools for Computer Graphics (豆瓣)&i class=&icon-external&&&/i&&/a&:有很多有用的2D/3D几何算法,例如各种相交测试、距离等。&br&&br&物理方面:&br&&img src=&/b0b80b3bca32f2412380_b.jpg& data-rawwidth=&70& data-rawheight=&92& class=&content_image& width=&70&&&a href=&///?target=http%3A///subject/6961941/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Physics for Game Developers (豆瓣)&i class=&icon-external&&&/i&&/a&:入门级读物。&br&&br&&img src=&/1fbde5836_b.jpg& data-rawwidth=&70& data-rawheight=&92& class=&content_image& width=&70&&&a href=&///?target=http%3A///subject/5487835/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Physics Engine Development, Second Edition (豆瓣)&i class=&icon-external&&&/i&&/a&:稍进阶和全面。&br&&br&&img src=&/cd6be4a8c2b463c3eae8c9d_b.jpg& data-rawwidth=&70& data-rawheight=&92& class=&content_image& width=&70&&&a href=&///?target=http%3A///subject/4289764/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Physics (豆瓣)&i class=&icon-external&&&/i&&/a&:非常深入。&br&&br&&img src=&/ef3b111e037b30fccb0e6_b.jpg& data-rawwidth=&66& data-rawheight=&98& class=&content_image& width=&66&&&a href=&///?target=http%3A///subject/2584523/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fluid Simulation for Computer Graphics (豆瓣)&i class=&icon-external&&&/i&&/a&:专门讲图形用的流体力学。&br&&br&&img src=&/c3fe879baa2443_b.jpg& data-rawwidth=&64& data-rawheight=&100& class=&content_image& width=&64&&&a href=&///?target=http%3A///subject/5489586/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Physics Pearls (豆瓣)&i class=&icon-external&&&/i&&/a&:类似Gems类,一些文章不错。&br&&br&我收集分类了各种游戏和图形相关的书籍,如:&br&&a href=&///?target=http%3A///doulist/1445735/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&計算機圖形: 相關數學&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///doulist/1445541/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&遊戲編程: 計算物理&i class=&icon-external&&&/i&&/a&
数学方面::比较全面,而且有一些原创内容。作者是的开发者。:有很多有用的2D/3D几何算法,例如各种相交测试…
&b&编程能力是一种解决问题的能力。&/b&如果问题没能被很好地解决,知道再多也没用。&br&&b&编程能力是一种运用机器解决问题的能力。&/b&首先是要判断问题在什么程度上可被机器解决,比如理论计算机科学会告诉我们什么可做、什么理论上不可做、什么理论上可做实践上不可做。然后是让机器更好地理解问题,比如计算机都是(图灵-冯诺依曼模型)等价,但不同的问题可能会适用不同的编程语言。再后是让机器能更高效率地解决问题,比如同样的问题可能会有效率差别巨大的算法。&br&&b&编程能力是一种抽象问题的能力。&/b&借用轮子是很好的办法,省力省时间。今天任何软件工程师都会有意无意地使用很多轮子,从操作系统编译器数据库网络到算法数据结构。想高效地借用轮子,就需要将问题分解再分解,抽象再抽象。任何一个实用的系统(不包括教科书上的示例程序和简单的脚本程序)都需要进行大量的分拆和组合。所以系统设计是编程能力里的高级技能,加合理的假设简化问题尤其有难度,此处不展开讨论。高手和新手的区别在于新手往往不知道轮子的适用范围,而高手的手上轮子数量多且熟知各种轮子的差异,所以对不同的问题可以轻松地找到合适的轮子,当实在找不到合适的轮子时可以自己动手改造现有的轮子。平时有时间拆装和改造已有的轮子会对水平提升有较大帮助。当然能知道怎样快速在搜索引擎里搜出轮子也是一种能力。&br&&b&编程能力是一种需要考虑扩展性的能力。&/b&算法竞赛中的很多算法考虑的是单机的内存算法,计算模型经过高度抽象,在实践中机器的模型更为复杂。比如单机的多级结构带来的各种时间空间复杂度的取舍平衡,多机网络中如何能在提高单机性能外进一步优化整体性能。除了在机器端的扩展,在程序员一端的扩展也很重要。复杂的问题和工程往往意味着团队协同以及更长时间的开发维护,团队分工和设计沟通这里暂且不论。举个容易被忽视的例子,程序中的注释。高手会更在意完整且表达清楚的注释,因为这是写给现在和未来的团队(包括自己和其他成员)看的,直接影响到长期的整体开发维护效率。&br&&b&编程能力是一种取舍的能力。&/b&局部的最优解未必是全局的最优解。如果一个美妙的解决方案需要将完工时间向后推迟一两个月,需要考虑是否先使用平凡方案解决问题,之后再进行优化。当你的工作延后会阻碍别人的工作时尤其如此。发现一个绝妙的优化方案时先想想这个优化是否真的有价值,如果只是系统中很小的部分,那么不要为了追求心理满足而花很多时间放一个漂亮的轮子上去(参考Amdahl定律)。&br&&b&编程能力是一种预见未来的能力。&/b&目前的方案有哪些假设和局限性,在何种情形下会遇到问题甚至崩溃。在未来出现问题时问题是否需要重新定义,系统是否需要重新设计,代码是否需要重构或优化等等都需要未雨绸缪。&br&&b&编程能力是一种工程能力。&/b&无它,唯手熟尔。&br&&br&&br&&b&编程能力是一种解决问题的能力。&/b&如果问题没能被很好地解决,知道再多也没用。&br&&b&编程能力是一种解决问题的能力。&/b&如果问题没能被很好地解决,知道再多也没用。&br&(重要的事情说三遍,重要的事情说三遍,重要的事情说三遍)
编程能力是一种解决问题的能力。如果问题没能被很好地解决,知道再多也没用。编程能力是一种运用机器解决问题的能力。首先是要判断问题在什么程度上可被机器解决,比如理论计算机科学会告诉我们什么可做、什么理论上不可做、什么理论上可做实践上不可做。然…
带我入门的师傅也是本科专业化学,自学java,毕业后进入IT公司做Java开发,后有跳到别的公司玩小型机,中型机,后进入Top5德企做IT运维,天天玩linux,现在在某知名操作系统公司做大中华区的Tech Support,工作7年,在北京年薪30w+,他属于悟性很强,自我很有追求的人,是我前进的榜样!&br&我不了解化学专业如何,但我知道IT行业相比于传统行业,机会真的很多,容易创业,也容易被市场淘汰,而且挣外快的机会也比较多。&br&&br&一、热门专业为什么热门?热门专业容易失业吗?&br&热门专业热门是因为就业容易,发展空间大,能针对更多的人提供更公开、公平的机会,而且以后的薪水能让你养家糊口,过得还不错。&br&你以为选择热门专业是大家脑子犯糊涂了?no no no,中国正越来越市场化,就业也是根据供需关系来的,专业热门是因为市场确实需要这样的人才,10年前,我选专业的时候也怀疑过,这么热门的专业,报的人肯定很多,到时候就业怕是人太多了,no no no,对于每个行业的人才需求,教育部是有预计和统计的,同时会把招生名额下放给各大院校,实际上这个行业里能有多少从业人员是有一定计划的。随大流不一定对,但至少避免了很多已知的风险,比如我有些高中同学毕业后无奈的都去考公务员了,什么食品检测,环境学,语文系,其实一个国家的发展一定是需要这些人才的,可惜的是我们国家现在暂时还用不上。&br&所以,选择热门专业是没有错的,就业容易就说明了工作岗位足够多,顶多大家互相跳来跳去,说容易失业那是铁饭碗的思想,老掉牙了!&br&&br&二、考研耽误了两年,转行有关系吗?&br&答案是你可能需要把其它计划也推迟两年,比如买房,结婚,生孩子,当然了这不是绝对的,该转的时候就要转,老是把着以前付出的努力是没用的,这就很换工作一样,你在一家公司待的越久,越不容易跳槽,因为你觉得自己在这里付出了这么多,不想就这样抛弃这些努力,实际上真正应该权衡的是远期利益,比如:我在这个公司虽然上升空间不够大,但我很自由,我可以出去兼职,或者自己开公司,挣两份钱。比如:我在这里拿的钱不多,但我喜欢这个工作,未来我能做出成绩。比如:这个工作虽然辛苦,挣得不多,但能为我积累很多人脉,帮助我以后创业。&br&所以,转不转行要看远期利益那个更好,如果你无法确定那个可能更好,就选择你喜欢的,这种工作你才能投入更多热情,更容易做出成绩来。&br&实际上IT行业入门门槛真的很低,因为发展很迅速,人才需求量大,有时候不得不跨专业招收,我就招过好几个,这种人能否有所作为或者能否胜任工作完全看自我要求。&br&计算机专业毕业生的优势只在前两年,我公司有位技术大拿是物流专业毕业,但人家的自我学习能力强,自我要求高,计算机专业知识把计算机专业生秒成渣。&br&所以,不要有这种顾虑,该转就转,但要足够坚定的走下去。&br&&br&三、IT行业是青春饭?&br&很多人觉得IT行业是青春饭,这是错误的认识,他们是不知道一个有着十几年从业经验的技术人员对于IT公司来说意味着多大的财富,我举个例子,我们公司和原厂商共同竞标一个千万级项目,正好用户的某台核心设备有问题,原厂的工程师折腾了一个月没解决得了,我方工程师一早上就搞定了,结果就是我们中标了,这位工程师从业已经二十年了。&br&国外有很多四五十岁的码农大叔,开发了linux,java,shell,python,开源社区等等,这些东西对IT行业的影响简直不可估量。&br&中国的IT行业现在还处于发现阶段,整个IT发展的理念还比较保守,落后,这导致在整个团队的建设中存在诸多问题,最大的一点就是不重视人才,这是中国国内IT企业的通病,总认为只要领头羊不换,小兵走多少无所谓,而IT如果作为一种服务来看待,团队的稳定性至关重要,有经验的工作人员的工作效率要大大高于初参加工作的人。&br&认为技术不能永远做下去是一种很短视的看法,但这是IT行业职员的普遍认识,原因是1、一线技术工作压力太大,对身体有一定的负担,也比较忙,不能很好的照顾家庭,实际上一般从业超过10年的技术人员基本不可能再担任一线工作,因为这是人才的极大浪费,他们一般都属于二线,三线,技术管理岗等,比如二线tech support,软件项目经理。2、国内公司普遍不重视技术人员,技术岗位的经济收入相比于管理岗不够高,没有权利,在地位上往往受制于管理岗位。3、技术岗位职业发展会存在局限性,存在上升天花板。4、人们的传统观念里认为管人比管机器更高级。&br&&br&&br&四、互联网是泡沫?&br&说什么互联网是泡沫的都是看了几个新闻在哪里胡扯,你知道互联网背后是什么吗?互联网只是整个IT行业的最前沿而已,背后还有非常庞大的队伍,开发,测试,数据分析,运维,营销等等。互联网正在快速改变世界,未来还将产生更大改变,我们的生活会越来越智能化,越来越移动化,这些全都要靠IT,等未来物联网或智慧地球真正形成,每天所采集的数据会是天文数字,这些数据的采集,传输,汇总,储存,处理全都要靠IT,所以我可以明确的告诉你,这个行业是很有前景的,目前还没到发展的最高速。&br&&br&但IT行业的工作压力也确实比较大,做特别是程序员,运维,售后,这三个的压力最大。&br&鉴于你是从化学转过来的,我建议你好好学习下《计算机组织与结构》,《操作系统原理》,《计算机网络》,《unix操作系统基础》这几门课,这对于以后转型和提高会很有帮助,也能助你进入更高层次。
带我入门的师傅也是本科专业化学,自学java,毕业后进入IT公司做Java开发,后有跳到别的公司玩小型机,中型机,后进入Top5德企做IT运维,天天玩linux,现在在某知名操作系统公司做大中华区的Tech Support,工作7年,在北京年薪30w+,他属于悟性很强,自我很…
除了写图形界面或者写游戏,或者模型上类似于界面跟游戏类的软件。其他优先选择C。&br&&br&比方说你写个 dir 命令,用C语言应该是比C加加要好的,git这种无界面命令行程序,用C也是很好的。一些实时性嵌入式应用,主循环其实就是个有限状态自动机的,用C也很好,用C加加没有什么优势。&br&&br&硬件驱动程序什么的,C还是主流。用C加加的少。&br&&br&实际上有些低配置系统甚至连C加加标准库都放不下的。但是用C还是游刃有余。当然这样的系统这些年越来越少了。&br&&br&C加加总的来说对技术人员要求还是高些。毕竟C用静态用全局更多一旦开辟好了空间,内存占用长期稳定不变,而C加加动态分配多,查内存泄露之类的复杂很多,当然主要还是对嵌入式系统更明显,桌面系统其实泄露点内存问题不大,因为其进程每次持续运行时间不长,嵌入式系统要7x24小时运行所以内存泄露问题才显得重要。&br&&br&大致就这样了。
除了写图形界面或者写游戏,或者模型上类似于界面跟游戏类的软件。其他优先选择C。比方说你写个 dir 命令,用C语言应该是比C加加要好的,git这种无界面命令行程序,用C也是很好的。一些实时性嵌入式应用,主循环其实就是个有限状态自动机的,用C也很好,用C…
我来写个较为通用,针对所有大学以前并对编程感兴趣的(其实编程换成其他的东西也有可能适合,本文有一定内容是专业无关的)&br&&br&&b&这是一场豪赌:[放弃一定的学校知识,换取专业能力],无论你押那边都可能会对一生进行很大的影响,我也不知道自己赌对了不,请各位看官自己看着办,冷静地以自己的实际条件做选择,因为这个选择依赖于大量个人因素。&/b&&br&&b&[Caution]前方极多个人例子,没什么客观数据,信不过的就直接点小红叉注意。&/b&&br&&b&1:能换取什么好处?&/b&&br&&b&1.1:极高的专业能力&/b&&br&这个不用多说,单看字面时间投入,小学开始学的话,直到大学入学,一共投入12年。。。试想想你进入大学旁边同桌能跟PHD谈笑风生的一幕。。。当然这只是理论上的一个数据,跟大学,怎么自学的,天赋等多种因素有关,但是在一段时间后能碾压没有专业知识的本科生是绝对的。以我为例,我的战斗力看我回答+github就知道了,代价为高中三年+初中两年(其实初中的可以不算因为初中没电脑又跟着谭走,基本上是0作用(从侧面说明了有人指路的重要性))&br&&b&1.2:被动技能&/b&&br&编程需要很不错的英语(至少本土人阅读能力水平左右),再加上一定的逻辑思维能力,有时候需要特定的数学分支(组合数学,微积分,离散数学,抽象袋鼠(我偷偷的卖个萌)),两个合起来能达到一定的考试加分的作用,以本人为例,单单靠编程撑起来的英语数学,托福阅读29听力满分,SAT数学满分,在不背单词的情况下2K(不是秀,那有逗比SAT2K都会秀的,谁都知道跟2.4K比起来是渣,但是在这点投入的情况下很不错了),高考目测英语无压力数学帮不了太多。&br&&b&1.3:选校优势&/b&&br&你能在大学前选出自己的兴趣,你就不需要跟着综合排名跑,一心的去找专业排名更轻松。(我不知道国内情况欢迎评论区补充)国外学校很多偏科严重,比如Dartmouth CS排40左右,综排40左右的我校(Go Husky!)UW CS倒是能排第5左右(很久以前看的,可能有点不准确但是差距也够说明重点的了)(UW CSE是难进,但是CS前十并且CS系随便进的Wisconsin的综合排名也跟Husky差不多)而且你学得越深入就越冷门,越冷门偏科现象就会越高,拿我作例,我学的是冷门中的冷门Coq,冷门程度足以经常拿Haskell开玩笑称之为主流语言(见&a class=& wrap external& href=&///?target=http%3A//www.cis.upenn.edu/%7Ebcpierce/sf/current/Basics.html& target=&_blank& rel=&nofollow noreferrer&&Basics: Functional Programming in Coq&i class=&icon-external&&&/i&&/a&中搜conventional),然后运气很好的是UW在这方面很不错,甚至有不小会Coq的PHD。对了,当然排名不是一切,不过不看重排名的话学自己喜欢的东西不就可以了么?&br&&br&&b&2:会以什么做代价?&/b&&br&&b&2.1:基础知识&br&&/b&国际部很水,我靠初中学的+高中自学的+重要点的课听一点点都能混到全班前五,但是国内的不知道失去一定的基础教育会有什么考试(单独提)以外的恶果,欢迎补充。&br&&b&2.2:基础知识导致的大学排名&/b&&br&我是13名学校里面甚至保底的都把我拒了,只剩下两个UW一个普度,然而我旁边有努力程度不如我的进了10~20的(UCB,Brown),如果我不学CS的话估计可以进前30前20,会与期望下跌很多,心理承受能力不好的就别赌了。对了,别以为美国大学很看重课外活动,SAT2.2K以前都是空的,见&a href=&///?target=https%3A///What-is-the-biggest-reason-Brian-Bi-believes-caused-him-not-to-be-accepted-by-prestigious-American-universities& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/What-is-the-b&/span&&span class=&invisible&&iggest-reason-Brian-Bi-believes-caused-him-not-to-be-accepted-by-prestigious-American-universities&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&b&2.3:大学排名导致的工作条件,考研条件&/b&&br&是好的文凭重要还是更多能力重要?我不知道,连大学的课都没上过我怎么知道?欢迎补充。&br&&b&2.4:大学排名导致的教育质量&/b&&br&大学一般都讲究自学,并且教材都公开,还有很多公开课,本科差距我说会微乎其微,这方面更重要的是大学会浪费你多少时间重学,能怎么节省时间等等,而不是排名。&br&&br&&b&3:有什么个人因素需要考虑?&/b&&br&&b&3.1:自身&/b&&br&成绩,意志力,天赋,自信心,离SAT/高考的时间&br&&b&3.2:经济&/b&&br&学CS的话没有电脑没有网没有电就省省吧,凶多吉小,其他学科估计要求更槽,比如核物理只有土豪才玩得起,只能啃理论&br&&b&3.3:父母&/b&&br&大部分时候父母是你的经济来源,并且父母不支持的话走这条路压力会很大&br&&b&3.4:学校&/b&&br&毕竟你大部分时间都得在学校过,老师来硬的不给你看书或不给你上课写代码(我这里老师很好,可能是我成绩好的缘故,一节课可以抽出一半时间写程序,午休,课间都可以)你要考虑考虑怎么破&br&&b&&br&4:决定跟进以后要做的事情&br&4.1:找一群人&/b&&br&找到一个好的社区,指路,试水,球问,受教,教人(教人的时候你学习比受教还高),甚至毕业后工作内推都有很大帮助,对了如果对定理证明感兴趣的同学可以加(特大雾)&b&&br&4.1:玩几天试试水&br&&/b&过几天后悔还来得及,也就赌进去几天,过几年你就失去了几年,更糟糕的是几年后不想继续下去又不舍得投进去的筹码&br&&b&4.1:跟父母老师商量好&/b&&br&他们不支持,你的学习效率会大大降低&br&&b&4.2:选择细分方向&br&&/b&当然不建议选太细,比如&我要研究如何用遗传算法提高NLP效率&,你连大体的水都没摸清就别在角落自high,但是NLP,ML等作为方向还是没问题的,同样的不建议选很高时效性的东西,因为你离工作还有很多年,学一些基础性的东西是最好的选择(比如PLT)比如说Obj C我觉得不合适,你一学来不能为其他东西打基础二你工作的时候估计都被swift或者swift++霸占光市场了(就算Obj C能再战10年,你本科毕业不接着读也有10年时间,然后呢?看看PLT,60年了Lambda Calculus还是一个模样)&br&&b&4.3:投入时间&/b&&br&当然你可以两个一起搞,不过专业投入时间要一天投入至少一个小时,不然学的还不如忘的多,简直原地踏步。极端一点不上大学也有可能行得通,还能省下大学要求你重学CS101或者什么没用的强制性课程的时间&br&&br&对了竞赛没提,因为我不熟,要看竞赛的同学看下其他答案怎么说&br&&b&就是这样,祝大家看完以后早日学会游泳提前XX。。。我呸不对,做出明智的适合自己的选择。&/b&
我来写个较为通用,针对所有大学以前并对编程感兴趣的(其实编程换成其他的东西也有可能适合,本文有一定内容是专业无关的)这是一场豪赌:[放弃一定的学校知识,换取专业能力],无论你押那边都可能会对一生进行很大的影响,我也不知道自己赌对了不,请各位…
讲一下我的个人理解。本人担任某二本院校acm指导教师近10年。&br&&b&排名第一的答案是朝着牛人的路子去的,但绝大多数人都不会成为牛人。&/b&如果不准备考研、搞学术,普通工程师应该有更合适的路子。&br&&br&首先说一下acm。&br&搞算法可能涉及大致三类&br&1 基本数据结构,枚举,递归,回溯,搜索算法,动态规划,图论(基础)&br&2 图论(高级),博弈,数论,几何,组合数学.......&br&3 神经网络、遗传算法等等等等(这些对acm也没有大用,有兴趣可以玩)&br&能搞定第1类,基本可以拿到省级比赛的三等奖,冲击二等奖。&br&搞定第2类,可以冲击省级比赛一等奖,参加亚洲赛甚至总决赛。但对非985、211学生来说,一是要付出大量时间精力,二是还要看天赋。&br&做acm的好处是&br&a 快速提高编程基础能力&br&b 培养逻辑思维能力&br&c 培养自主学习能力&br&所以,在做项目的时候,搞过acm的学生优势在于:学习比较快,逻辑更清晰,不容易出低级bug。但这些能力在你能较好的掌握第1类算法后,就已经具备了;再去研究第2类算法,增加的主要是对具体算法的理解,对逻辑思维和学习能力的提高已没有之前明显了。&br&因此,对于想玩一下acm的同学,好好学习一下第1类问题就可以了。&br&花大量时间精力去研究第2类问题,意义并不大&br&1) 工程中用到的概率很小&br&2) 如果工程中要用,到时候再学也不迟&br&除非对acm非常有兴趣和信心,想拿更好的奖,准备考研,你可以继续下去。&br&否则,绝大多数同学,我建议在学完第一类问题就不要在acm花太多时间了。&br&一般985、211的学生acm可以一直玩到大4甚至研1,因为acm成绩好的估计都保研了。但如果本科毕业要工作的同学,在大3参加完一些比赛后,就应该离开acm了,否则你没时间去积累项目经验。当然,你可以和acm的同学继续玩在一起,但不应该是主力。&br&&br&积累项目经验的意义&br&1 有个说法是,”学《编译原理》,就自己实现一个编译器,学《操作系统》,就自己写一个操作系统,学《数据库原理》,就自己写一个小型的数据库管理系统,学《数据结构》,就把书上的代码习题全都做一遍,并且熟练掌握“,这个方法在国内可能并不可行&br&a 国外每门课的大作业基本都是项目级的。但国内由于师生比和教学方法的问题,老师如果出大作业,最多最后简单给你评个分,过程中能给的指导有限,全靠你自己去摸索。&br&b 靠你自己摸索做的结果多半是,做的不会很深入并且很难真正理解,因为你不知道这些东西&b&到底有什么卵用&/b&。&br&当你做过几个Java项目,能熟练使用List、Map、Set这些工具类的时候,你对《数据结构》的理解更直观了。&br&当你做过几个手机端项目,其中要用到数据库并且数据量还比较大,你会发现原来看起来没有卵用的索引、联合查询、事务是多么有用。&br&当你做过有一定复杂度的Android项目后,对进程与线程、Activity堆栈、Android消息机制这些操作系统的基本知识也掌握的差不多了,如果还想深入,可以去看Android源码,甚至底层Linux内核源码。&br&做项目的意义在于,把书本知识变成属于你的活的知识。&br&2 计算机专业的几门课程主课,”数据结构与算法“、”计算机组成和计算机系统架构“、”编译原理“、”数据库“、”操作系统“、”计算机网络“、”软件工程“,往深里学,每一门可以学的没完。&br&另外,其他专业的课程间的关联性和延续性要更强。相对来说,计算机专业的这几门主课,都基本独立并自成一个体系。&br&所以,对于本科生来说,想在4年时间把这些课程都学得很精深,是不可能的,也没有必要。靠谱的做法是,多数课程能做到基本掌握即可,抓住一两个方向去深入学习。&br&当然,一开始你也不知道哪些方向适合你,并且更有兴趣。那么,多做几个不同类型的项目,应该能找到兴趣点。&br&3 当你在做第一个项目的时候,你考虑可能只是实现功能和消除bug。当你在做第二个项目的时候,你会发现之前的程序运行效率很差,很会考虑优化问题,使用合适的数据结构和算法,简化程序流程,合理的使用线程。当你做第三个项目的时候,你会发现之前的代码架构都多么恶心,扩展性和可维护性很差,你会考虑程序架构的问题,考虑复用性、扩展性等等问题。你每做一个项目,你关注的点应该随之拓展,能力可以不断提高。&br&所以,沿着Android、iOS、前端或后端,任何一个方向深入下去,你学到的不仅是这个方向的&b&招式&/b&,也会获得一种叫项目经验或工程素养的东西,这就是&b&内功&/b&。&br&&br&最后总结一下。&br&在我看来,在这个信息爆炸的时代,知识的稀缺性变的没那么重要了。知识总是在哪里,不是在这本书上就说在哪个书上,不是在这个网页上就说在哪个网页上。你要学,随时都可以。&br&相对的,人的时间和精力变成更稀缺的东西,在有限的时间里,学什么和怎么去学,变得更重要。所以,充分利用大学4年时间,形成一个能提升个人核心竞争力的能力架构,比囤积大量分散的知识,要有价值的多。&br&&br&另外,绝大多数人的归宿都不是牛人,在计算机的任何一个领域,做一个靠谱的工程师,就已经很了不起了。
讲一下我的个人理解。本人担任某二本院校acm指导教师近10年。排名第一的答案是朝着牛人的路子去的,但绝大多数人都不会成为牛人。如果不准备考研、搞学术,普通工程师应该有更合适的路子。首先说一下acm。搞算法可能涉及大致三类1 基本数据结构,枚举,递归…
体验。呵呵。体验。&br&&br&我因此砸烂过一支键盘。具体情形,请参照“德国 boy”相关视频,自行脑补。&br&&br&哪怕知道可能要因此遭受一些人参公鸡,我也还是来学王垠,开一发地图炮吧。&br&&br&&u&&i&&b&特别声明,以下内容基本都是调侃和玩笑,请看官不要太认真;特别地,这些问题,很大程度上是学界的代码开发模式的问题,Fortran 不过是这些问题的一个替罪羊罢了。&br&&/b&&/i&&/u&&br&开喷。&br&&br&Fortran 是一个应该得到恰当的荣誉并下葬安息的亡灵。只是,今日之学界中,这个亡灵喜欢跳出来诈诈尸,口中念叨着些咒语,大致是些“祖宗之法不可破”、“前人智慧的结晶”、“语法严谨、简单易学、运行如风”之类,听着让人心里发毛。就不多说这僵尸还诞下了一个名叫 IDL 的怪胎的事儿了,省得过分地得罪同行。&br&&br&这里并不全是说 Fortran 本身的不好:(被这帮人视若无物的)C/C++ 中的未定义行为、泛滥的宏定义,也会坑得人生活不能自理。&br&&br&更多的,&u&&i&&b&是 Fortran 所代表的编程范式的问题,因为一门语言包含了它的编程范式。&/b&&/i&&/u& Fortran 有编程范式么?若说有,那大概可以用这几个词来形容:粗暴、混乱、不计后果。这时,Fortran 的“语法严谨”便显得有些可笑:这反倒使得程序员不再小心谨慎,结果把自己陷入更多的坑中。&br&&br&一旦一份代码用上了 Fortran,则往往意味着,这份代码背上了&i&&b&沉重的历史负担&/b&&/i&——你可以说它融汇了前人的智慧,但你更应该看到前人的局限,以及,由涓滴之流般的偷懒汇成的江河般泛滥的愚蠢和短视。所以,以下几个问题中,至少出现一个的几率,将变得非常大:&br&&br&1. 更换平台编译时、编译旧代码时,动辄出错,且难以排查——很多时候是因为 gfortran 的 F77 兼容模式不能完全兼容某些写法,剩下则多是 ifort 和 gfortran (以及它们各自的用户)间的恩♂恩♂怨♂怨,少数时候是代码中调用的某些库的 API 做了个不痛不痒的改名(没错 fftw 我说的就是你);&br&2. 代码中有 goto;&br&3. 你会看到一个上千行甚至几千行的 subroutine/function;&br&4. 你会看到一个有一百多个参数的 subroutine/function;&br&5. 各种不知所云的变量名,以及完全无用的注释;&br&6. “if a & 0”?恭喜,编译错误,因为,“你那个 0 是个短整形,而 a 是个长整/浮点”;&br&7, 你得经常跑到一个函数的开头去看一个变量的定义;&br&8. write 的某个数字超宽了?恭喜你,你得到了一堆星号,谁关心你辛辛苦苦跑出来的数字去哪儿了啊——我当然知道这么做有它固有的原因,不过,这真是“时代的局限”五个字的最好样本之一;&br&9. 各种没有料到的惊喜,酸爽无比,把 least surprise 原则破坏殆尽。&br&&br&最重要的,一份用上 Fortran 的代码,很可能有着根本没写过代码、速成培训后大干快上大炼钢铁的半吊子程序猿/程序媛——哪怕,他们可能是非常优秀的科研人员,他们的智商可能是我的两倍左右甚至三倍多,但是,不会写程序就是不会写程序。&br&&br&请看官不要说数组下标越界检查之类(在足够复杂的代码中几乎从未正确发挥过作用的)算不上优势的优势了,也不要抱着“Fortran 就是比 C/C++ 快、容易优化”、“Fortran 的数值计算库丰富、容易使用、高度优化”(我真的不信有啥东西的优化的高度能比过 -O3 下的 STL)的迷思不放了。知乎上已有够多的人详细论证这个问题了,英文网站上相关的论述更是一挖一麻袋。&br&&br&以及,最重要的,我一直认为,作为一份科研用途的代码,&i&&b&可维护性的提升比运行速度的提升,重要得太多&/b&&/i&太多太多太多了。平庸的运行速度,至多消耗了更多的机时——这在至今仍然日新月异地发展着的计算机那儿常常不是个事儿;低劣的可维护性,吞噬的则是科研中两样最重要的东西:一曰&i&&b&可重现性&/b&&/i&,二曰(有经验的)&i&&b&科研人员的生命&/b&&/i&。我承认,用 C/C++/Julia 仍然有一定概率写出难以维护的代码,但至少,客观上看,Fortran 带来的沉重历史负担,基本摧毁了”存在可维护性“的可能性;同时,Fortran 的低门槛,客观上使得太多人养成了大炼钢铁式的编程习惯,让很多原本可圈可点的代码落到最后臭不可闻。&br&&br&我心目中的”优秀代码“,也算是有个参照标准的——比如,Linux 内核。它固然有过并有着许许多多的 bug,可是它是一个庞大却可以维护的系统。如果 Linux Kernel 是荷马史诗,那么,那些(以 Fortran 为首的)科研所用代码,至多只能算是《尤利西斯》了。&br&&br&然后,是的,我知道孤证不立,我知道有人喜欢喷“这是逻辑错误”,也有人会讲另一面的故事,但我还是要讲故事。&br&&br&我刚到某屯搬砖的时候,与一个师兄合作,用上一份叫做 Pinocchio 的代码(&a class=& wrap external& href=&///?target=http%3A//adlibitum.oats.inaf.it/monaco/Homepage/Pinocchio/& target=&_blank& rel=&nofollow noreferrer&&PINOCCHIO Home Page&i class=&icon-external&&&/i&&/a&)。这份代码是用来模拟星系团尺度上的暗物质演化的,使用微扰论替代直接求解 N-S 方程,使其可以在小计算机上跑出效果还不错的大尺度结构模拟。首先,花了一个周末,这货才能被成功编译,原因是 gfortran 不接受某些 ifort 的写法——这还不是整形长度之类的细节,而就是关于某些日常用法的语法不一致——以及 fftw 更改 API 的坑。编译成功,随即跑了个 &img src=&///equation?tex=500%5E3& alt=&500^3& eeimg=&1&& 的,looking good。接着,就遇上大坑了。我们需要 &img src=&///equation?tex=& alt=&1500^3& eeimg=&1&& 的分辨率,可一把边长设置为 1500,程序马上就崩溃了。整形溢出。那好说嘛,把数组指标改为长整型不就得了——当然不,这样更改后的代码,同样跑 &img src=&///equation?tex=500%5E3& alt=&500^3& eeimg=&1&&,得出的结果与数组下标为普通整型时不!一!致!(固定随机数种子之后,这个代码每次得到的结果是完全一样的)调了整整一周,毫无进展。决定暂时不管那么多,先跑 &img src=&///equation?tex=& alt=&1500^3& eeimg=&1&&,跑完后,看到输出数据里头一堆 *****(输出超宽),心都碎了…… &br&&br&以及,我要喷我最想喷的货色:Enzo(&a href=&///?target=http%3A//enzo-project.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Enzo Project&i class=&icon-external&&&/i&&/a&)。正是这个奇葩,让我失去了对天体物理 simulation 的几乎所有兴趣和信心。虽然这个 code 的 C++ 部分也很烂,但 Fortran 部分更是坑得人生活不能自理,最后便合成了一篇集 C++ 和 Fortran 烂法之大成的东西。&br&&br&就在前不久,我这个 rotation 项目都快结束了,还被它给坑过。我那位 rotation 老板在二十年前为此写过一个模块,用 F77 写的。时至今日,他一直以为该模块在此程序中发挥着巨大的作用,直到我发现,调用这个模块的部分,被人注释掉了。他顿时花容失色,令我重启该调用,却发现巨量无法修正的编译错误——是的,gfortran 的“兼容模式”下支持的 F77 已经不是他当年那个 F77 了。老板长叹一声道,幸好我后来用了 C++……&br&&br&然后,再来看点儿来自 enzo 的酸掉你大牙的东西,F77 和 F90 都有。比如,这个宏伟的参数列表:&br&&br&&img data-rawheight=&472& data-rawwidth=&463& src=&/d9b1b2c0cb9ffbb30a6f916fd909c09e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&463& data-original=&/d9b1b2c0cb9ffbb30a6f916fd909c09e_r.jpg&&&br&&img data-rawheight=&433& data-rawwidth=&438& src=&/b5e305a12c42e2ec9230_b.jpg& class=&origin_image zh-lightbox-thumb& width=&438& data-original=&/b5e305a12c42e2ec9230_r.jpg&&&br&以及前一个函数在 C++ 中的调用,是不是感受到了一种灵压:&br&&br&&img data-rawheight=&870& data-rawwidth=&565& src=&/fd650ce1ae3d2a22b2910fff5829bc48_b.jpg& class=&origin_image zh-lightbox-thumb& width=&565& data-original=&/fd650ce1ae3d2a22b2910fff5829bc48_r.jpg&&&br&这个赋值方式真是不错:&br&&br&&img data-rawheight=&702& data-rawwidth=&480& src=&/223afdfaee6d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/223afdfaee6d_r.jpg&&&br&此朵数组的眼神,忧郁得让人蛋疼:&br&&br&&img data-rawheight=&744& data-rawwidth=&460& src=&/8e80b87ae23f42f482a5dd2b7a5d469d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/8e80b87ae23f42f482a5dd2b7a5d469d_r.jpg&&&br&Fortran,Let's GOTO places(广告语原句:Toyota, let's go places):&br&&br&&img data-rawheight=&615& data-rawwidth=&456& src=&/de78da17bd7c07b3ade214_b.jpg& class=&origin_image zh-lightbox-thumb& width=&456& data-original=&/de78da17bd7c07b3ade214_r.jpg&&&br&当然还有很多 crap,比如:&br&&br&&img data-rawheight=&153& data-rawwidth=&553& src=&/ddd58e830bffad_b.jpg& class=&origin_image zh-lightbox-thumb& width=&553& data-original=&/ddd58e830bffad_r.jpg&&&br&现在的计算机,缓存都已经够大了;函数调用带来的开销,早都是零头了;还在以这种手段拼命避免函数调用,简直就是防止他人维护,良心大大的坏了。若是用 cpp 写个 class,也能省得一不小心写错一个参数的位置啊——面向对象再是大坑,至少能让人们有一个靠谱的 namespace 可用(F90/95 的命名空间?呵呵)。&br&&br&就那种可维护性,算得再快,又能怎样?&br&&br&最后,私货。&br&&br&高德纳(曾经记成 RMS 了,感谢纠正):“过早的优化是万恶之源”。我得加一句,“自以为是的优化是万恶之源”,包括&i&&b&在今日&/b&&/i&仍然坚持使用 Fortran 开发新项目。&br&&br&人在做,天在看,implicit 留隐患;&br&GOTO 一出亲友散,非结构化天下乱。&br&诚心诚念 CPlus 好,抓紧重构灭退保。&br&众生皆为数值来,Fortran 险恶杀时间。&br&CPlus 弟子说真相,教你脱险莫拒绝。&br&&br&天灭 Fortran,快看 Julia!Numpy/Scipy/Cython 坠吼!Haskell 赛高!&br&&br&全世界被 Fortran 坑过的人,联合起来!Fortran-sufferers of the world, unite!
体验。呵呵。体验。我因此砸烂过一支键盘。具体情形,请参照“德国 boy”相关视频,自行脑补。哪怕知道可能要因此遭受一些人参公鸡,我也还是来学王垠,开一发地图炮吧。特别声明,以下内容基本都是调侃和玩笑,请看官不要太认真;特别地,这些问题,很大程…
客观因素:程序猿的生产资料本身没有时间空间限制(交易所、生产线都要关门或轮班)。&br&&br&主观因素:习惯于用现在努力和等待换未来幸福的人,会一直努力和等待下去,永远忘记幸福。&br&&br&这不仅仅是生活压力和工会的问题,对比硅谷的中国程序猿和印度程序猿可以看的更清楚。&br&&a class=&internal& href=&/question//answer/&&如何看待 2015 年 美国 H1B 抽签,印度人比中国人申请数多 10 倍的作弊手段? - lau phunter 的回答&/a&&br&&a data-title=&@lau phunter& data-editable=&true& class=&member_mention& href=&///people/bae4da& data-hash=&bae4da& data-tip=&p$b$bae4da&&@lau phunter&/a&&a data-title=&@Coke& data-editable=&true& class=&member_mention& href=&///people/9e798ea71faa00ebe2b256d8a3091d40& data-hash=&9e798ea71faa00ebe2b256d8a3091d40& data-tip=&p$b$9e798ea71faa00ebe2b256d8a3091d40&&@Coke&/a&&br&在中国只有为了&b&“未来”的画饼&/b&不在乎&b&当下忍一时&/b&的辛苦驯顺的人才能既通过高考晋升又(没有其他背景)安于当白领。这种人无论走到哪里都会招来别人的欺压,&b&自己是自己的地狱,在多民族自由社会尤甚&/b&。在高三自愿加班,一辈子自愿加班,老板招了这种人不让他加班都对不起公司。&br&&br&都鄙视穷人懒、农村人“赚钱生娃放养”傻……这种懒实际上是一种生存策略,高考没考上好学校的穷学生平均结婚年龄比考上的早的多。而且无论在中国还是美国,当权者会为了稳定/选票讨好这种人,牺牲驯顺的白领。
客观因素:程序猿的生产资料本身没有时间空间限制(交易所、生产线都要关门或轮班)。主观因素:习惯于用现在努力和等待换未来幸福的人,会一直努力和等待下去,永远忘记幸福。这不仅仅是生活压力和工会的问题,对比硅谷的中国程序猿和印度程序猿可以看的更…
已有帐号?
无法登录?
社交帐号登录
2360 人关注
370 个回答
228 人关注
363 个回答
1273 人关注
187 个回答
490 人关注
574 个回答
504 人关注
280 个回答

我要回帖

更多关于 如何看待追星现象 的文章

 

随机推荐