如何优雅地进入IT世界

作者: 逸之 | 来源:发表于2014-06-06 14:16 被阅读8724次

    以下三段是废话,请跳过。

    (废话段1)有文科生想了解IT世界。这并不是多么神奇的事,想中小学时代还不分文理时,该喜欢IT的本来就喜欢。小学时,我当着全班的面说将来想成为“电脑大师”,称呼虽然脑残,至少证明我从小就热爱这东西;高中时姑父问我以后想做什么,那时词库大了,我说想做软件工程师,非常精准、到位,庆幸自己在成长的同时并未抛弃儿时的爱好与理想;大学志愿,我把软件工程填在第一专业,并如愿以偿地进去了,然后发现根本没人愿意报这专业,全是调剂过来的。有这么一份从小到大毫不动摇的爱好与理想,这是一个多么励志的故事啊!

    (废话段2)然而与此形成鲜明对比的是,我并没有如饥似渴地学习专业知识,既没成学霸,也没成大牛。小学时,光是记住鼠标发明者的名字就胜人一筹了,如今真正接触这个领域,越来越意识到自己是何等无知,结果就在无知中彷徨度日,进步甚微。现在,我这枚渺小的IT屌丝要写一篇《如何优雅地进入IT世界》,顿时发现这纯粹是件不自量力高调寻喷的蠢事。

    (废话段3)然而题既已开,又怎能轻言放弃,上网查询,思忖片刻,柳暗花明。做这件事,上有大神无数,装逼无路,况自己尚在学校,不了解外头行情,断不敢班门弄斧,把自己知道的说出来就可以了。从水平上讲,我也只算刚踏入门槛,如何再往进走自己也正在摸索,于是只好把“如何抬腿跨进门槛”的经验拿出来分享。我是个学生,所能道者大抵也便是学校里教的内容,但这些课程本身便是让一个外行成为内行的系统化途径,如此而言,我以下要写的还是具有一定价值的(自我安慰状)。

    IT者,Information Technology也,乃信息技术之意,简释之就是处理信息的技术合集,笼统地说包括软硬件两大部分,个人出于兴趣去接触,软件是个很好的选择,零成本,可操作性高,故而此处只讨论软件部分。

    IT是个魅力十足的神奇世界,它不像别的领域那样只可远观难以把玩。你若对医学感兴趣,最多抓只老鼠研究研究,不可能有机会在人身上动刀子;你若对园艺感兴趣,大抵只能买几样盆景,一般人无法真正去大规模种植、管理、营销。IT则好比文学,你写首打油诗就步入了文学殿堂,你写个hello world就进入了IT世界,而这一切都是极易上手、无需成本的。

    然而IT比文学复杂得多,小学生作文与莫言的书用的都是那么些字,而在IT界中不同领域、不同层面所用到的技术则截然不同,一辈子都没法了解全部。我们所能做的是,通过一些基础知识入门,然后选择自己感兴趣的方面再深入学习。PS:这里要给的不是学习方法,仅是学习内容。

    基础中的基础

    我们不妨就从最简单的hello world开始,从编程开始。众所周知,计算机的运行靠的是01码,我们称之为机器码(机器语言),计算机能识别,人看着就头大了,于是出现了汇编,汇编使用了人能看懂的自然语言中的单词代替对应的机器码,比如ADD表示两数相加,瞬间有了可读性。汇编相当于对机器语言的直译(它们同属低级语言),编写复杂程序时难度依然很大。其实别说复杂程序了,我单看入门书上的那些简单的例子就要疯掉了,一个简单功能它要写好多句。而且汇编面向硬件,这台机子上写的程序可能在另一台上就没法用。

    于是伟大的发明诞生了,那就是高级语言,我们现在常听说的C、C++、Java、Pascal、Python等等都属于高级语言。编程入门首选C,许多人建议以Python、Ruby作为第一语言,说是容易上手,但我仍建议选C,或许上手会慢些,但它更接近硬件,更有助于掌握编程语言的思想精髓。而话说回来,学C其实也不难,其规模并不大,一本两三百页的薄书就能讲解清楚。

    C之后就是C++,这是为了理解面向对象的思想,所谓世间万物皆对象,具体怎么回事这里就不赘述了。Java也是典型的面向对象语言,但C++与C一脉相承,它们的语法是一样的,甚至可以混用,学起来比Java轻松一些。虽然Java用途甚广,但你不必担心,学会C++之后Java掌握起来轻而易举。

    至此,在语言学习上其实已经足够了,在没有应用需求的情况下,不必急于接触更多其他语言。编程思想达到一定程度,掌握一门新语言是分分钟的事,或者说根本不需要掌握,用的时候搞本书查一查就完了。关键是,对于编程而言,最重要的并不是看书学习,而是实际动手操作。刚入大学时,学长就忽悠我们说这个专业动手性强,可以自己做很多东西,结果到头来学了那么久编程,做了那么多作业,为自己做的程序少得可怜。或许是我想象力不够丰富,不是初学者的好榜样。练习编程,除了完成练习题之外,最好能尝试去实现一些自己的想法,比如小游戏,比如手机端的APP,还可以做个小网站,挂在自己电脑上,别人可以访问,成就感满满,再正式些,申请个域名,租个服务器,都可以开始创业了!想想还有点小激动,但这一切都是建立在牢实的基础之上的。

    在实际应用中,若想做好程序,光学语言是片面的,我们还需要其他一些必备基础,它们使你对程序、对计算机了解更全面、更透彻,我总结为五大方面(以对编程的影响程度排序),也是我们专业求职的必考内容。

    1) 数据结构与算法

    既已编程,又何能脱离数据结构与算法,表、树、图,排序、检索,虽然许多语言都已经做好了封装,但掌握一点基本思想还是十分必要的。这些东西十分锻炼人的思维能力,不止编程,在其他地方也大有作用。许多人对算法兴趣浓厚,智商大考验,这种考验甚至脱离于IT,进入了数学领域,深入下去,你会为那些NB算法而惊叹。

    2) 数据库

    刚接触数据库时我瞬间凌乱了,原来除了文件系统还有其他组织数据的方式,它是如此犀利,操作灵活,安全性高。重要的是,许多程序都需要数据库支持,因此编程必备。

    3) 操作系统

    操作系统是人和计算机之间的桥梁,它管理着计算机所有的软硬件资源。程序运行于操作系统之上,就如船只浮于水,你若对操作不够了解,做程序便只能停留在面上,你的浆划不到水里,船也没法控制。举个简单的例子,不了解进程的工作原理,怎么做多进程软件呢?

    4) 计算机网络

    网络在当今的IT界扮演着越来越重要的角色,现在一台不联网的电脑能做的事少之又少。于编程而言,不学网络写不了分布式软件;于素养而言,一个不懂网络的IT人士未免也太水了吧!

    5) 计算机组成原理

    如果你对计算机这复杂的玩意儿的构成及原理很感兴趣,这方面的知识不容错过。它是揭开计算机神秘面纱的关键,小到编码与指令,大到存储与I/O,是了解计算机硬件的好途径。它看似对编程没有直接影响,更多的是属于素养型的知识(但学通之后猛一回头,相信你对程序设计会有更高层次的领悟)。

    基础中的扩展

    1) 编译原理

    当你程序写到一定程度,成就感会渐渐消失,为什么呢?因为你所用的高级语言都进行了一定程度的封装,你接触不到它们的工作原理,这个时候就该编译原理登场了。编译是将高级语言转换为机器语言的过程,是将人类思想翻译给计算机去执行的过程。编译原理告诉你高级语言的工作原理、它们是如何被设计出来的、为什么一句代码你这样写可以那样写不行。

    2) 汇编语言

    除非做一些特殊产品,现在已经很少使用汇编,况乎业余人士。若你学有余力,可适当了解之;若你兴趣浓厚,我也不拦着你成为大神。当然话说回来,汇编对于IT素养是不可或缺的,百度百科有言:“至今为止,还没有程序员敢断定汇编语言是不需要学的。一个不懂汇编语言的程序员,只是三流的程序员,这是大部分人的共识;同时,技术汇编语言是面向机器的程序设计语言,精湛的汇编程序员,已经脱离软件开发,挤身于工业电子编程中。一个电子工程师,主要的开发语言就是汇编,C语言使用只占极少部分,而电子开发工程师更是千金难求,在一些工业公司,一个核心的电子工程师比其它任何职员待遇都高。”

    应用方向

    基础学好之后便可以选择一些自己感兴趣的方向深入了解了,遗憾的是,众多的应用方向虽然有趣,但若不从事这样的行业,我们大抵也只能停留在纸上谈兵的层面。而既兴趣使然又何所谓呢,仍然抑制不住自己挖掘理论知识的冲动吧。PS:有不尽处,恳请补充。

    1) 嵌入式

    嵌入式是一个应用极广的方向,工业中的车床、监控,航天领域的卫星、火箭,上网用的路由器、交换机,生活中的汽车、手机、各种家电……只要是一台实现了一定程度自动化的用电机器,就无不涉及嵌入式系统。如果你好奇这些玩意儿是怎么实现的,果断走起。

    2) Linux/Unix

    相信你在学习操作系统的时候就已经接触到这货,没错,这货就是个操作系统。平时大家都习惯于Windows,初接触Linux/Unix一定多少有点别扭,这里不单是操作习惯的区别(比如Mac OS与Windows的区别),它们在根本上有着很大不同。不同在哪里,不必赘述,百度一下你就知道,知乎一下更能得到许多切实的回答。电脑里要是装了个Linux/Unix,感觉瞬间高大上了有木有,随便输两句命令,各种装逼范不解释,异常专业。国家现在也仍未放弃做自己的操作系统,你若有心,不妨炼成大神,勇敢地去实现OS报国的梦想吧!Linux的艺术在于开源和命令行,你若是出于好奇想体验一下手感还是算了吧,作为普通计算机用户,若是没有非要在Linux下跑的软件,根本不需要装这玩意儿,完了许多事还做不了(or不好做)。我自己就相当不喜欢Linux/Unix,作为一名“专业人士”着实不该,找工作时多重要呀,尼玛再重要我也不想去碰。

    3) 云计算

    云计算是分布式计算的一种,你可以先了解一下分布式计算,但相信你会对云计算最感兴趣。云是一个比较新的概念,现在计算机的许多硬件技术都发展到了一定的瓶颈,单台计算机的计算能力十分有限,而超级计算机的成本又非常高,于是人们考虑将普通的计算机联合起来使用,正所谓众人拾柴火焰高。好比寒暑假作业一大堆,同学们分工合作,每人负责一小部分,一瞬间就做完了。《电磁炮》里的御坂网络就是一个云计算的例子,性能表现堪比“树形图设计者”,在第二季中还成果计算出导弹轨迹,咳咳,扯远了。云时代以通信的代价换取计算效果,现在如火如荼的云存储、云服务器想必大家都有耳闻,不少人都已经在用了。然而目前不论是云计算还是分布式计算都仅处于初级阶段,尚未达到理想中的那种状态,基本上还是采用集群(依然是集中式)实现的,依然分服务器和客户端。以云存储为例,我们的个人PC上并未划出一部分硬盘为云服务。但看形势人们似乎并没有想往这方面发展,而是致力于实现终端的简化,简言之,以后你买一台能上网的显示器就可以当PC用了,所有的计算与存储均在云端完成。然而我相信云的力量远不如此,只有想不到,没有做不到。

    4) 存储

    计算机一强于计算,二强于存储,这就是其人类远不能及的两大能力。数据在计算机中的组织形式非常有趣,也是我个人最喜欢的部分,存储的金字塔结构、存储介质、文件系统、云存储什么都老有意思了。可以说,存储是计算机离普通用户最近的部分,上网也好,听歌也罢,我们几乎每天都在电脑里存取东西。4G以上的电影拷不进FAT32的U盘、迅雷会员的离线下载、网盘的云秒传,无不与日常生活息息相关。

    5) 无线通信

    这部分内容特别有意思,至少我是这么认为,可能是贴近生活的原因:我们天天在使用手机,也好奇着手机通信是怎么实现的。上面基础部分的计算机网络大抵覆盖了有线通信的内容,而人类所用的通信基本上就是有线和无线两类,在这里补一补无线,你就理解全面了。并且现在无线的分量越来越重,4G手机的网速能秒杀绝大部分家庭宽带,无线路由器也逐渐成为家中必备,笔记本、平板、手机无不如饥似渴地接进WiFi,有线正被无线蚕食鲸吞。如今都诞生了无线充电的方式,何况通信呢!

    6) 语音、图像处理

    如果你对语音输入、语音合成、指纹识别、人脸识别这类技术有兴趣,欢迎进入此坑。当时我差点就选这方向了,幸亏灵机一动,哎妈这不都是算法和数学么,罪过罪过。开个玩笑,了解一下其基本原理还是比较轻松的。

    行业资讯

    IT是个日新月异的行业,光顾着技术研究而不跟着前沿走是闭关锁国的陋习。拿经典的摩尔定律来说,计算机配置翻番那么快,而现如今的新产品换代更加迅猛,资讯跟踪真可谓是逆水行舟不进则退啊!若是条件允许,能订些杂志是最好的,实在不行只好淘电子版、关注各种博与微信了。

    配件:CPU/APU、显卡、硬盘、主板、显示器,甚至鼠标、键盘、机箱、电源,配件控、性能控、装机控走起,游戏发烧友更是这方面的专家。现在配件们已经涉足庞大的手机平板市场了,更是不得不关注。

    产品:PC、一体机、笔记本、平板、手机,各大品牌,配置如何,卖点何在,价格多少,高端货什么的买不起看看也舒服啊。

    新发明:技术改变生活,你崇尚自由,不妨在家里搭个NAS,坐着躺着拿平板看部高清电影;你喜欢客厅里的沙发,不妨搞一台智能电视,海量资源;你爱运动,好新鲜,可穿戴设备花样层出……不过话说可穿戴还未普及,可植入都已经被提出来了。

    公司动向:利益是推动技术发展的巨动力,你看那眼花缭乱的新产品们,哪样不是市场竞争的成果,好在企业们的战斗给消费者带来的基本上都是好处。现在打得热火朝天的苹果谷歌微软、英特尔AMD、联想三星小米诺基亚,互联网公司更是数不胜数。谁说市场是没有硝烟的战场,我看是狼烟四起火光冲天啊。

    相关文章

      网友评论

      • 9086c8e68c91:写的真好!赞
        逸之: @9086c8e68c91 又成狗忽悠了一个熟人注册😆
      • 逸之:@深爱不抵久伴 :sweat_smile: 确实没有优雅……就一套句 :sweat_smile:
      • 195d4535f952:高中计算机会考都没考过 :cold_sweat: ,大学学C,C++,后来为了就业,突击学习java,找到的工作却是web前端,突然又想研究一下object-c.............回想起来,进入IT世界,一点也没感觉到优雅,
      • 逸之:@justwind 也不是,网上只看干货或小诗,其他的习惯捧书看
      • justwind:@逸之 原来你还是喜欢干货,我们就是喝点鸡汤就好,特别是这冬天。
      • 逸之:@justwind 见过封面,确实不错,但多是人文类作品,没有看这类电子版的习惯。
      • justwind:@逸之 ipad上多看阅读的书城里能免费下,编辑和制作还算是不错的。
      • 逸之:@justwind 表示从未看过简书的杂志 :sweat_smile:
      • justwind:@逸之 呵呵,其实我只看了前三段废话,后面的就没看了。在网上看文章似乎没太大的耐心,所以我觉得简书出杂志版挺好的,就是编辑的工作量比较大。
      • 逸之:@justwind 伪文艺工科男
      • justwind:哈哈,原来又是文艺IT男。居然又看到谭浩强的名字,好久不见。
      • 逸之:@yalelynn ok,都在研读中,现在回头看谭浩强的,果然有点相形见绌了,虽然一直以来对它的印象很好的 :sweat:
      • 逸之:@yalelynn 不能这样啊,咱们在讨论入门书 :hushed:
      • 逸之:@yalelynn 《明解C语言》已看部分,并无明显特色;对《C语言点滴》期待甚高,非常感谢你能将其介绍给我。然后,还能再推荐一些不?多多益善 :grin:
      • 逸之:@Viztor 哥我已经打算把这句话删掉了好吗
      • Viztor:谭浩强的《C程序设计》= - =不是被批斗的典范么
      • 逸之:@Kent_Zhang 根本不够啊 :sweat_smile:
      • Kent_Zhang:@璞凌 外壳和结构啊!!!!
      • 逸之:@Kent_Zhang 所以怎么用来搞嵌入式啊 :no_mouth:
      • Kent_Zhang:@璞凌 IC不可能打印出来的吧!!!
      • 逸之:@Kent_Zhang 只是个空壳子没有IC啊
      • Kent_Zhang:@璞凌 板子加结构件不行么?
      • 逸之:@Gnat 一种高大上的感觉,可是依然没有吸引到我啊~ :sweat: 是我太伪专业了
      • 逸之:@Kent_Zhang 集成电路无能啊,还是实现不了嵌入式啊
      • Kent_Zhang:@璞凌 结构件啊,外壳什么的。
      • district10:@璞凌 我觉得最大的收获是脚本使用吧。
        前两天还帮人转化了一些需要导入数据库的数据(https://github.com/district10/dotfiles/tree/master/scripts.sh/csv2json),会脚本,生活会顺畅很多。

        外,Vim 和 Emacs 编辑器也能让编辑文档和代码更顺畅。(例如刚写好的这篇:http://gnat-tang-archive.qiniudn.com/emacs-vim-md.7z)
      • 逸之:@Gnat 你这是学Linux的经验,有没有其他方面的收获或者进步?因为如果真的对专业学习帮助很大的话,我还是想考虑去接触接触的
      • district10:@璞凌 我是去年暑假一不小心装了 Ubuntu(还手残格了整个盘)没办法装回 Windows,就这么奇遇了。。。先看鸟哥的教程(不用太认真,get 点常识就行),然后学点 vim,shell 工具,gcc 就差不多了。最忌折腾各种桌面。zsh 值得一试。Github 值得一试。
      • district10:@臆影 处女座的工科生表示错别字是我的最爱~
      • 逸之:@yalelynn :+1: 非常有理,看来我是个传统的老顽固么 :sweat: 眼界也不够(这个我也有自知之明)。朋友能不能推荐几本更合适的供我学习学习,这也是我重新撸一遍C的好机会,若是顺利也考虑再写一篇心得,在此先谢过了 :pray:
      • 逸之:@臆影 以后能帮忙直接指出一下么,导致我自己又看了一遍= =
      • 逸之:@不是 写得我脑袋都大了……
      • 逸之:@Gnat 关于Linux的学习经验朋友能否分享一下?
      • 逸之:@Kent_Zhang 能打印嵌入式所需的硬件?
      • 玫瑰病了:@UncleRiver 处女座的理科生看到废话1里面的错别字就不想再看下去了...
      • ili:看的我脑袋都大了。。
      • UncleRiver:估计文科生不会想看完这篇文章……
      • happypeter:@Gnat 非常赞同!
      • district10:用 Linux 来是我进步最快的一年(还有两个月就一周年了)。外,第一们语言真心不推荐 C,学点 Python,脚本或者前端HTML,CSS,JavaScript 更适合非专业人士。
      • district10:@yalelynn :scream: 哈哈,我也有看那本书的黑历史。
      • Kent_Zhang:@璞凌 打印模型啊,自己的设计如果需要结构件的话可以考虑叫小伙伴帮忙画点零件印出来呗
      • 逸之:@Kent_Zhang 3D打印机怎么玩?(没接触过)
      • Kent_Zhang:无线通信可以玩一玩软件无线电,异常带感。玩嵌入式的话,神器除了板子就是3D打印机,有板子和3D打印机妥妥的玩耍。
      • 逸之:@刀爷 噗~其实作为程序员本身大部分也是“我有个好想法”,但最终也没去实现
      • 逸之:@laiyilong 写时查了一下的,C应该算归入高级语言,低级语言单指机器码和汇编
      • 逸之:@yalelynn 个人认为他的《C程序设计》还是非常适合初学者看的啊,求指正
      • 9403a499e621:C不能算作高级语言吧?
      • SUN:"谭浩强的书特别适合入门"?
      • 神奇的小狮子:科普好文!点赞喜欢!
      • 刀爷:现在的互联网思维啊,很多人最喜欢说一句话:
        我有个超级棒的想法,就差个程序员来帮我实现了!
      • geoeee:路漫漫其修远兮
      • 翟英昌:非常好的科普!

      本文标题:如何优雅地进入IT世界

      本文链接:https://www.haomeiwen.com/subject/qcadtttx.html