原始地址:http://www.cocoachina.com/gamedev/misc/2014/0613/8808.html

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

 
(废话段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、联想三星小米诺基亚,互联网公司更是数不胜数。谁说市场是没有硝烟的战场,我看是狼烟四起火光冲天啊。

如何优雅的进入IT世界的更多相关文章

  1. 在这个看脸的世界,该如何优雅的创建JS对象

    Javascript是一门解释型的语言,是基于对象的,严格来说并不怎么符合的面向对象的标准,显著的特点就是函数就是“一等对象”,与传统的面向对象语言不同的时,Javascript有“一千种”方法来创建 ...

  2. 如何优雅地使用Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...

  3. 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感

    上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...

  4. R You Ready?——大数据时代下优雅、卓越的统计分析及绘图环境

    作者按:本文根据去年11月份CSDN举办的“大数据技术大会”演讲材料整理,最初发表于2012年2月期<程序员>杂志. 0  R 的安装

  5. 优雅地使用Windows

    优雅地使用Windows 理财推荐:收益还行,安全性比余额宝高,只能自己的卡转进转出所以被盗也不怕,重要的是快速取现实时到账呢 1 现金宝 :点击进入现金宝 或者百度现金宝 2 百度理财 8.baid ...

  6. 如何优雅地使用 Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比 于难于上手的Vim,浮肿沉重的Ecli ...

  7. 【网络资料】如何优雅地使用Sublime Text3

    如何优雅地使用Sublime Text3 Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相 ...

  8. 从容而优雅(leisurely and elegant)

    每时每刻, 我都变得更好了. ----- 法国心理学家   埃米尔 . 库埃 每时每刻, 我都变得更忙了. ----- 罗伯特 . 西奥迪尼 咬牙切齿的寒风, 昏暗的路灯, 默默的走过那一段从教室到寝 ...

  9. Linux就这个范儿 第12章 一个网络一个世界

    Linux就这个范儿 第12章 一个网络一个世界 与Linux有缘相识还得从一项开发任务说起.十八年前,我在Nucleus  OS上开发无线网桥AP,需要加入STP生成树协议(SpanningTree ...

随机推荐

  1. redis安装使用教程

    一:安装redis 1.下载redis并安装 $wget http://redis.googlecode.com/files/redis-2.2.10.tar.gz $tar zvxf redis-2 ...

  2. 使用CocoaPods管理第三方类库[效率]

    项目文件夹   加入第三方框架后的项目文件夹例如以下图 为什么要用Cocoapods?   iOS开发中经常使用的第三方库,比方: 1.FMDB:在使用SQLite是仅仅须要加入libsqlite3. ...

  3. zabbix详解(一)

    zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管 ...

  4. 006-Hadoop Hive sql语法详解1-数据结构和Hive表建立

    1.认识hive:  Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表, ...

  5. Linux常见错误之Could not get lock /var/lib/dpkg/lock - open

    在Ubuntu系统上安装vim是遇到的问题: root@ubuntu:/# vim The program 'vim' can be found in the following packages: ...

  6. kettle配置命名参数

    bat 调度文件如下 cd D:/Program Files/kettle700/data-integrationKitchen.bat /rep repository /dir /TEST /job ...

  7. Flask form(登录,注册)

    用户登录 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...

  8. Magento 本地搬家至网络服务器步骤

    1.将本地的Magento的数据库备份下来. 2.将本地的Magento网站资料做成ZIP资料. 3.将Magento网站 ZIP资料上传到服务器的域名指向的资料夹内. 4.将ZIP解压出来,移动到域 ...

  9. WEB前端研发工程师编程能力成长之路(1)

    [背景] 如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧: 如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧: 如果你是四五年的前端开发高手,没有难题能难得住 ...

  10. SpringBoot入门学习(一)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我 ...