我想学习linux,怎么起步好呢?? 我是一个高中生。。C/C++那些也不会~谢谢了~

查看:9655|回复:23
最近很困惑,因为我在想我以后是先C++发展还是JAVA发展。
& && && && & 我高中二年级就自学了C语言,那时的热情很高,让我感受到了编程思考的魅力。现在我大一下学期,学校开了C++课程,我的C++老师因为我参加了ACM比赛所以经常和我交流。她说她以前带的一位学生参加Topcoder比赛,那位学生是她的得意门生,因为他算法好用C++现在在一家游戏公司实习,8000月薪转正13000。她说的最令我烦恼的一句话是,“现在中国的游戏行业前景很好,很多公司向我要人都给不出,就要C++。C++在后期的表现很好,很多算法都可以拿它来实现,而JAVA的后期很难。C++你学好了我会介绍你去那实习。”(她也知道我对JAVA有兴趣,我觉得她想我也走那位师兄那样的路吧)。
& && && && &而我的想法呢,因为这么多年来看了那么多新闻,论坛,博客。我其实对开源行业很感兴趣(对游戏没什么兴趣,玩得也很差,可能我玩连连看,找茬还有些智力游戏技术好点····),我很想先那个方向发展,而之前c++给我的感觉就是基于微软的东西(要用到MFC那些,而我就是不太想用微软的东西,正在学习LINUX。),而JAVA给我的感觉就是基于网络的,可以在网络上开发(我特别感兴趣的是移动平台的开源软件。)。但是现在我听了老师的话很迷惑,我该往哪里走?(可能我对JAVA和C++的了解只是皮毛,希望各位朋友纠正下让我早点确立方向。)
& && && && & 再说清楚点我的想法,以后想基于linux平台开发一些优秀的开源软件(可能在PC网络上,也可能在手机网络上,也可能二者。),不做游戏少那一两千的我没关系,我觉得人要在自己感兴趣的方向发挥自己的天赋才能有成就。现在就想问各位我是应该学哪样??(我因为现在在专攻算法和数据结构(这个才是最重要的吧),平时都用C做,也许算法好了什么语言没什么关系,但是我想的是选好了就往下走,精力和时间不会分散嘛)。
真正来说,作为一个刚出道的程序员是不能挑食的,不过你的条件那么好,就可以随意点了。
C++和JAVA之间的选择,别人只能提意见。我只说一点点,C++的标准是由国际标准组织制订的,没有什么过时之说,JAVA是某个公司的,现在还被收购了,前途不明。现实是大部分JAVA程序员混得可能比C++程序员好多了,小部分C++程序员是JAVA程序员永远比不上的。
面向哪个平台你要考虑好,WINDOWS平台不是你想象那样只有MFC,还有开发驱动工具WDK,还有WTL、WPF等,只不过普通程序员为了应付工作,随便用窗体拉几个控件堆一起而已。中国的程序员和用户一样都是给微软带偏了的鸭子,只知道MFC了,虽说在这个绑手绑脚的系统里很多事都干不了,但是现在这个系统逐步开放了,在官网可以下到演示内核代码了,你也可以在其他地方找到2K的源码,利用这些你可以学习内核编程。
我也很支持你到LINUX平台去冲刺,不过开源不等于免费,免费部分你还是用业余时间搞吧,毕竟我们所处的环境不同。桌面开发会用到GNOME和QT,GNOME是完全C开发的可以在C/C++中应用,而QT只能用在C++中。如果你想进入LINUX平台搞开发的话,我建议你往两个方向走,服务器和嵌入式系统。服务器方面东西不少,而且开发网络游戏服务器端的工作估计不错,比如《征途》的原版服务器端就是运行在LINUX平台的。嵌入式系统方面,比如手机等数码产品,而且工资不比开发游戏的低,具体资料看本版顶置的目录和51CTO的开发频道的嵌入式块。
最后,我只想说一下,不要只定一个方向,多学习点东西就多一分生存机会,但不要太杂,博而不精不是好事。大部分人现在的工作都不是专业或兴趣所在。虽然你对一个系统有兴趣,但不要怀着鄙视的心理接触另一个系统,可能出来工作后要靠它混饭吃。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]
感谢斑竹的指点,来这个论坛看了很多的贴,这的感觉很温馨,每个人都互相鼓励,有错又能指出,以后一定会留意这里的东西。
& && && && && &用了这么多年微软的东西,搞到自己对它的不满逐渐放大····我一直知道微软很强大,整个IT界围绕它衍生了很多行业,很长的一段时间它还是会发展下去,即使管理层换了,高手都跳槽到google了,还是很多行业不会让它倒的。以后我会认真点对待C++的了,因为哪天可能我真的得靠它吃饭。相信学好了C++如果真的想转JAVA时也不会难了。
& && && && & 另外斑竹的话也让我对C++有了更深的了解,之前我热爱C,但是就是不喜欢C++就是因为有了先入为主的思想,认为C++出来都是为微软服务的···。
& && && && & 关于开源,我一直都没认为它就是免费,反而它这种商业模式很大程度吸引了我。嵌入式系统的东西我会去了解一下,因为每当我问到高手们我向linux发展该向哪时,你们都说嵌入式系统。如果这样的话,我会先看看需要哪些知识,再重新规划下目标。还有斑竹你最后说的话再次提醒了我了,先谢谢了,我还记得当年初中升高中时,明明不喜欢化学,生物,政治,我基本没看过那些书,到了临考前5个月好朋友说,“现在不是偏科的时候,你上省重点还得靠它们帮呢。”,我不得不努力点啃那些书去上重点高中。
& && && && &&&最后澄清一下,我不是什么强人,在的大学也不是什么很好的学校,我知道我只能努力锻炼自己的能力才能去选择自己真正想做的事情。
是啊,版主不错啊!
班主真是个牛人!!
这样的交流环境确实很温馨:loveliness:
不错啊,,,
呵呵。。。我也在想
斑竹多讲点吧 关于C++的 我不是学计算机的 工作需要 对C++要求还蛮高的 我要是想转程序员 以后会是什么样子呢? 就是讲讲多数的C++程序员现在做什么 以后又能做什么呢?
你应该问学了C/C++的不能做什么,纵观所有系统都有C/C++的足迹。
C/C++,开发其他高级语言的语言。
JAVA的虚拟机是用什么编写的?
C#托管代码的托管执行环境是用什么编写的?
用汇编写的,不可能。
用那种语言本身写的,搞笑,自己都要托管给别人了。
历史上有过一些结构化很好思维很先进的语言但都死于古板了。
C/C++,有高级特性也有底层操作能力,是一个放置四海皆能用的语言,不过灵活也带来相应的难度,特别对初学者。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]
中级工程师
版主真是牛人:(pdd_26):
灯下闲读 半生浮名只虚妄...
我是一名初学者,对于楼主的一个观点,我觉得不太正确~~~
&c++给我的感觉就是基于微软的东西&
C++有一个是基于微软,那就是windows程序设计...
学了LINUX,你应该知道它是用C写的..但它已经独立于微软之外了~~~~
首先,C++不是微软的东西,它是一个国际标准,任何有能力的团体和个人都可以实现该语言的编译器。
其次,LINUX里GCC是一个功能强大的编译器,它早就实现了C++99的标准,而微软从VS2005才开始支持C++99的标准。
再次,LINUX的内核部分是用C语言编写,这样可以保证简洁高效,而应用软件里很多用到C++,比如用QT库开发的应用程序,而GNOME也有面向C++的接口。
最后,不要成为“被微软带偏的小鸭子”。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]
我也知道C语言是一种标准而已。
现在了解了一下WIN API(也是用C编的哦)后,眼界开阔了不少。而且在这个同时,我也开始玩Linux了,那种感觉就是爽,哈哈。
& &&&以前楼主也说得很对,不要只定一个方向,我现在一心学习好C/C++,到时候学好了,想向嵌入式发展,或者LAMP那些方向发展都应该不难了,我们最重要的是打好基础,基础很重要,斑竹就是那种基础很好的人,向斑竹学习。
高级工程师
:(mars_15): 我目前还徘徊在网络跟软件之间呢。。。
搞软件的话我估计会是专供C++,但是我的编程又很烂。。所以之前很长的时间里面我都是扔了编程去搞网络,现在迫于就业压力可能又要重拾编程,重新开始学习!我又不确定凭我的能力C++能不能在短短两三个月的时间里有明显的效果!
我以前接触个JAVA,我个人感觉JAVA很难,后来我便放弃JAVA,来学C++了.
欢迎你来到更恐怖的地方了。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]
哇~~斑竹&&真是博学!
期待你能分享的更多!!
--------------------一个民办大学,没有学历,编程一塌糊涂,又想去网络的困惑之人!!!!!!!
对了!斑竹!!
很快就要暑假了!!
想利用暑假充充电!!
最近学校开了JAVA
但是学的云里雾里的
希望能给推荐一本书-------------偏向新人,基础的!!
先谢谢了·······
JAVA接触比较少,只买了一本书,介绍得比较全面的。
《Java编程入门经典(第四版)》 Rogers Cadenhead 著 梅兴文 译 人民邮电出版社
号称24小时就掌握关键知识的,不过我没时间看透,不过感觉你学完这本书直接就可以应付相关的开发工作了。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]我为什么要学习Linux? - 文章 - 伯乐在线
& 我为什么要学习Linux?
好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客了。有时间能静下来写点东西总是很好的一件事,如果写技术方面的博客,不仅能给读者提供一些解决问题 的线索,也能加深自己对技术点的理解,如果写的是自己对项目的感悟,也算是对自己所做的工作的总结。现在终于有时间写点东西了,感觉还是不错的。
今天这篇博客不是写关于具体技术的,而是我对程序员怎样学习和提高自己能力的一些感 悟。我是今年7月初毕业的,离开学校后就直接进入之前实习的公司上班了。现在算来工作了也将近半年了,算上实习的时间,将近一年了。在这期间,参与了几个 android项目的开发,也维护过别人写的项目,虽然都不是很大的项目,但也学习了不少东西。在这其间,我亲身经历了一个设计拙劣的项目,是怎么样一步 步趋于混乱而最终变的完全不可维护。从这件事情我了解到优秀的程序员是多么可贵,而“不优秀”的程序员是怎样把项目一步步的搞砸搞烂,也了解到做出一款优 秀的软件是多么的困难。什么样的程序员才算优秀的程序员,而什么样的程序员是“不优秀”的?(我不愿意说别人坏话,只能委婉的说“不优秀”)作为一个工作 不到半年的新人,谈论这个问题好像没什么权威性可言, 我也只是简单的谈论一下自己的看法,鉴于自己的阅历和经验不是很丰富,难免具有局限性,读这篇文章的读者可以指出我的错误。
我认为,优秀程序员和不优秀程序员的区别首先是态度上的区别。优秀的程序员有自己的理 想,他们想做出好的东西,而不是混混日子而已,他们思考很多,不管是项目开始之前还是在项目进行中,项目完成之后也会进行总结。他们对待问题比较严谨,思 考比较全面,在动手写代码之前肯定经过了一定的思考,对可能引入的问题进行预估。而不优秀的程序员对待问题比较随意,也就是态度上不是那么认真,代码写的 也比较随意,从不考虑以后的变化因素,今天吃饱不管明天肚子饿,他们不会意识到他们的代码已经污染了整个项目。 在发现问题时,优秀的程序员总是想办法弥补,他们会找出自己的代码写的不好的地方,谨慎的修改或大胆的推翻重写,这样的话把问题消灭在萌芽阶段而不会让整 个项目偏出正轨。而不优秀的程序员,很少能发现问题,即使能发现问题,也是迟迟不肯做出弥补,他们总是侥幸的认为这些问题不会在后期暴露出来,所以问题越 积越多,最后导致整个项目混乱不堪,错误百出,无法维护。
除了态度上的不同,在能力上也有很大的差别。显而易见,优秀的程序员懂得比较多,他们 乐于深入研究原理,对底层的知识有一定的了解或者了解的很透彻,而不只是停留在调用一个API;而不优秀的程序员一般不喜欢思考,对原理的兴趣也不多,他 们不愿意花一些时间把一些问题搞明白,而只是简单的调用一下API,如果解决不了问题,随便在网上搜一段代码复制过来就万事大吉。所以遇到比较难缠的问 题,优秀的程序员总是能从原理出发,一针见血的看出问题的真正原因,进而解决问题,而不优秀的程序员总是停留在表面,在网上搜了很长时间也没有解决问题。 我深切的认识到,如果只是停留在调用API而不深入原理,永远也用不好API。
除此之外,优秀的程序员的另一个特点是善于并乐于学习,他们对自己所从事的工作有浓厚 的兴趣,有强烈的好奇心,他们总是想把问题弄明白,他们喜欢清晰,而不是迷迷糊糊的感觉。对一个人的进步起决定性作用的因素是刻苦的学习,而不是所谓的 “经验”。就像有人说的那样,在公司里工作不会使你成为大牛,只有持续的学习才能让你有长足的进步。现在很多招聘职位要求有几年的工作经验,这是最容易让 人误导的。工作时间长的就能力一定强吗?举个例子,有两个清洁工,一个干了十年,每天还在默默的工作,而另一个只干了几天,经过自己的思考发明了一个新的 工具或方法,让他的工作事半功倍。所以说,工作经验是很虚的东西,他用时间来计量,一个人工作了5年,他可能在5年中每天都学习进步,也可能一个经验用了 5年而没有什么实质性的提高。
扯了这么多,好像和题目没什么关系。现在扯点和题目相关的。作为一个搞Android 应用开发的,我为什么要学Linux呢?我工作中又不会写Linux程序,再说Linux内核博大精深,代码海量,关系错综复杂,学习Linux内核肯定 要耗费大量的时间和精力,那我为什么还要学呢?在说这个问题之前,先谈谈我对学习的看法。
在学习一个东西之前,出于保险起见,我们总是会询问别人的意见,而在这些意见中,总是 会有人说学这个干什么,工作中又用不到。如果谁给了你这样的建议,那么你一定要小心,因为基本上可以断定他是一个不爱学习的人。有很多东西,不是因为你 “感觉”有用才学它,而是学了之后才能知道它有用。我的一位朋友是做C#的,他在业余时间学了Perl,当时学的时候总是有人认为没有用,但是当他学会之 后,可以使用Perl强大的文本处理能力,去整理格式混乱的源码文件,可以写个程序自动的给领导发邮件。还有我大学的一位老师,年轻时因为英语比较好,被 单位派去美国,获得了深造的机会,回来后做了我们学校的物理系主任,很多人也认为英语没有用,呵呵。我进入公司实习的时候,看了设计模式,在我翻看 《Head First设计模式》时,被一个有经验的同事看见了,他告诉我看设计模式没有用,因为我们的项目是不会用到设计模式的。我不知道这是什么逻辑。反正当我看 完设计模式之后,真的被这些设计巧妙而又极具实用性的模式所震撼,在以后的项目中,我大量使用了这些模式或者设计原则。所以如果一个工作了两三年或者更长 时间的程序员还没有学习过设计模式,我会深深的鄙视他,认为他不是一个真正的程序员。
我上大学时学习了java语言,当时还费了不少劲。基本的语法比较熟悉了之后,还是感 觉到有些东西总是糊里糊涂,不够清晰,比如说不知道反射是怎样工作的。所以找了《深入Java虚拟机》来看,当我看了两遍这本书之后,感觉到原来不清晰的 地方都显得自然而然,知道了class文件结构是怎样的,类是怎样被加载的,指令是怎么样被执行的,方法是怎样被动态绑定的。这些知识对我有很大的帮助, 假如我不学习Java虚拟机,只是单纯的写Java程序,即使写上10年,也不见的比我现在对Java的理解更透彻。
说了这么多,只是想说学习是有用的,大大的有用。一个经验用5年并不等于有5年的工作 经验,一个不学习的程序员是不会有什么发展机会的。所以,对于一个java程序员,还分不清对象和对象的引用,对于一个IOS程序员,还分不清 ViewController到底是MVC中的视图还是控制器,那么没错,你该学习了,该静下心来好好巩固一下基础了。
最后,来到正题。我为什么学习Linux内核?首先,我对Linux有很深的兴趣和好 奇心,我喜欢专研一下。从实用性出发,我可能一辈子都没有机会编写Linux内核,也可能一辈子都不会从事Linux驱动开发相关的工作,但是我知道它对 我是有用的。能进一步加深对操作系统中概念和实现的理解,对底层的深入理解,能让我打下扎实的基础。一些新技术其实都是架构在基础的东西之上的。基础牢 固,以后再学习什么新技术都会水到渠成。有人可能会反驳,说学习底层的东西没用,优秀的程序员应该专注于设计,项目管理或架构等上层的知识,我的观点是,设计,项目管理或架构等上层的知识和底层的知识一点都不冲突,不懂底层的人,基础不扎实,在上层也不会走的顺畅,设想一下,如果没有深厚的基础知识,你怎么能知道自己架构出来的东西能不能实现呢?
写到这里文章就写完了,由于比较困,可能写的有些散乱,在最后总结一下这篇文章的主要观点。
1 我们要做优秀的程序员,不要做“不优秀”的程序员;
2 学习是有用的,如果有人给你的建议是学XXX没用,那么你可要当心;
3 底层的知识和高层的知识不是不能相容的,真正优秀的程序员应该两者兼顾。
可能感兴趣的话题
作为一个工作半年的年轻人有这样的感悟让老人汗颜。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线2013年5月 Linux/Unix社区大版内专家分月排行榜第三2012年10月 Linux/Unix社区大版内专家分月排行榜第三2012年7月 Linux/Unix社区大版内专家分月排行榜第三2011年12月 Linux/Unix社区大版内专家分月排行榜第三
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年4月 Linux/Unix社区大版内专家分月排行榜第三2012年12月 Linux/Unix社区大版内专家分月排行榜第三
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
2012年11月 Linux/Unix社区大版内专家分月排行榜第二2011年8月 Linux/Unix社区大版内专家分月排行榜第二2008年10月 C/C++大版内专家分月排行榜第二
2012年8月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

 

随机推荐