想学习编程,只学java 一种可以吗

中软国际教育科技集团Education and Technology Group of Chinasofti
● &教育部授予:“软件工程专业大学生实习实训基地”资质● &商务部授予:“中国服务外包示范培训中心”资质● &工信部授予:国家信息技术紧缺人才培养工程“521计划”资格● &获得腾讯授予:中国IT教育十大影响力品牌
国内顶尖师资团队&&中软国际技术精英
≡ 微信更新
当前位置:>>文章内容
想研究机器人,究竟应该先学哪种编程语言?
作者: &&来源: && 时间: 09:38:12 && 字体:&&
& & & &打败了韩国顶尖棋手李世石让 AlphaGo 声名大噪,当然它的步伐不会停歇,小卓带来了AlphaGo的最新动态。
AlphaGo动态
& & & 暴雪已经确认,AlphaGo 接下来将要挑战的是《星际争霸 2》!事实上早在围棋对决期间,就有传言说 AlphaGo 接下来会进军《星际争霸 2》。而在 WCS 中国站决赛上,暴雪娱乐制作总监 Tim Morten 正式确认了这个消息。
看到这里的小伙伴是不是被阿法狗的能力惊呆了,这货居然还会打游戏!?
机器人学中最流行的10种编程语言
& & & &世界上有1500多种编程语言,都要学的话是太多了。目前,在机器人学中有这10种最流行的编程语言——如果你喜欢的不在这里,请在留言区告诉大家。对于机器人学,每种编程语言有不同的优点。小卓只是部分地按照重要程度从低到高对它们进行了排序。
10、BASIC / Pascal
& & & &BASIC是为初学者设计的(BASIC是缩写,Beginners All-Purpose Symbolic Instruction Code),它让初学者可以从一种非常简单的编程语言开始学习。Pascal旨在鼓励好的编程习惯,还引入了结构,例如指针,这让Pascal成为从BASIC到更复杂语言的一块“敲门砖”。如今,这两种语言如果要说是好的“日常使用”程序语言,那是有点过时了。不过如果你准备做很多底层编码或是想要熟悉一下其它工业机器人编程语言,学习一下还是有用的。
9、工业机器人编程语言
& & & &几乎每一个机器人制造商都开发了他们自己专有的机器人编程语言,这成了工业机器人行业中的一个问题。通过学习Pascal,你会熟悉它们中的一部分。但是每次开始使用新的机器人时,你还得学习一种新的编程语言。
& & & &最近几年, ROS行业已经开始提供更标准化的替代语言给程序员。但是如果是一个技术人员,你仍然更可能不得不使用制造商的编程语言。
& & & &LISP是世界上第二古老的编程语言(FORTRAN更古老,但只早了一年)。相比今天提到很多其它编程语言,它的应用并不广泛。不过在人工智能编程领域它还是相当重要的。ROS的一部分是用LISP写的,虽然你不需要掌握这个来使用ROS。
7、硬件描述语言(HDLs)
& & & &硬件描述语言一般是用来描述电气的编程方式。这些语言对于一些机器人专家来说是相当熟悉的,因为他们习惯FPGAs(Field Programmable Gate Arrays)编程。FPGAs能让你开发电子硬件而无需实际生产出一块硅芯片,对于一些开发来说,这是更快更简易的选择。如果你没有开发电子原型产品,你也许永远不会用HDLs。即便如此,还是有必要了解一下这种编程语言,因为它们和其它编程语言差别很大。一个重点:HDLs所有的操作是并发的,而不是基于处理器的编程语言的顺序操作。
6、Assembly
& & & &Assembly让你能在0和1数位上进行编程。基本上这是最底层的编程语言。就在最近,最底层的电子需要Assembly进行编程。随着Arduino和其它如微控制器的崛起,现在你可以使用C/C++在底层方便地编程了。这意味着Assembly对于大多数机器人专家来说也许会变得更不必要了。
& & & &MATLAB以及和它相关的开源资源,比如Octave,一些机器人工程师特别喜欢,它被用来分析数据和开发控制系统。还有一个非常流行的机器人工具箱——MATLAB。我知道一些仅仅使用MATLAB就能开发出整个机器人系统的专家。如果你想要分析数据,产生高级图像或是实施控制系统,你也许会想学习MATLAB。
4、C#/.NET
& & & &C#是微软提供的专用编程语言。C#/.NET放在这里,主要是因为微软机器人开发员工作包(Microsoft Robotics Developer Studio),这个包的主要开发语言是C#。如果你准备用这个系统,那么你很可能必须要用C#。
& & & &近年来,在机器人领域,学习Python的人有一个巨大的回潮。其中一个原因可能是Python(和C++)是ROS中两种主要的编程语言。Python的重点是易用性,不需要很多时间来做常规的事情,如定义和强制转换变量类型。另外,Python还有大量的免费库,这意味着当你需要实现一些基本的功能时不必“重新发明轮子”。而且因为Python允许与C / C++代码进行简单的绑定。这就意味着代码繁重部分的性能可以植入这些语言,从而避免性能损失。
& & & &Java对程序员隐藏了底层存储功能,这让它比起一些语言(如C语言)来说,编写要容易些。如果你有计算机科学背景并转到机器人学(很多人是这样的,特别是在研究领域),你也许已经学过Java 。像C#和MATLAB,Java是一种解释性语言,这意味着它不会被编译成机器代码。相反,Java虚拟机在运行时解释指令。使用Java,理论上让你可以在不同的机器上运行相同的代码,这得感谢Java虚拟机。在实践中,这不总是可行的,有时会导致代码运行缓慢。不过,Java在一部分机器人学中非常流行,因此你也许需要它。(强大的Java在各个领域都留下了深深的印记……)
& & & &最后我们到了排名第1的机器人编程语言!许多人认为C和C++对新入行的机器人学家是一个很好的起点。为什么?因为很多硬件库都使用这两种语言。这两种语言允许与低级别的硬件进行交互,允许实时性能,是非常成熟的编程语言。现如今,你可能会使用C++比C多,因为前者具有更多的功能。C++基本上是C的一种延伸。首先学一点C会很有用,特别是当你发现一个硬件库是用C编写的。C/ C++并不是像Python或MATLAB那样简单易用。同样用C来实现相同的功能会需要大量时间,也将需要更多行代码。但是,由于机器人非常依赖实时性能,C和C++是最接近我们机器人专家“标准语言”的编程语言。
你应该遵循何种顺序来学习他们?
& & & &尽管小卓在这里列举了10种语言,但这并不意味着你必须全部都要学。最重要的是找到一种感觉自然且适合机器人硬件的语言。
& & & &而且,对于机器人专家来说,最重要的事情是开拓你的“编程思维”,而不是精通一种特定的编程语言。从很多方面来说,从哪种编程语言开始学习真的无关紧要。你学习的每种语言都提升了你的编程思维,拥有了这种思维,去学习一种新编程语言的时候会容易不少。
小卓整理自网络
上一个:下一个:我都学java两个月,可是就是觉得不是别人说的很简单,是不是我的方法不对哟
学习Java其实应该上升到如何学习相关信息这种境界,其实学习程序设计又是接受一种编程思想。每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Inteface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点:
  1。我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有所浪潮(看看Boland为什么有Tuo Polog),但未来5-10年工业界广泛承认并接受的将是面向对象式的编程。
  2。工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就可以了。而且完全可以同时掌握。
  3。掌握Java的精华特性而且一定要知道为什么。比如,Inteface和multi-thead。用inteface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解inteface是为什么,用多线程又有几种常用的编程模型。
  4。理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,毕竟学习语言是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(你...
学习Java其实应该上升到如何学习相关信息这种境界,其实学习程序设计又是接受一种编程思想。每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Inteface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点:
  1。我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有所浪潮(看看Boland为什么有Tuo Polog),但未来5-10年工业界广泛承认并接受的将是面向对象式的编程。
  2。工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就可以了。而且完全可以同时掌握。
  3。掌握Java的精华特性而且一定要知道为什么。比如,Inteface和multi-thead。用inteface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解inteface是为什么,用多线程又有几种常用的编程模型。
  4。理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,毕竟学习语言是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(你可以看一下我介绍的关于MVC的内容)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。
  5。有了基本设计模型后,可以学一些设计模式(Design Patten)。这是目前证明很有效的。比如体系结构模式(Layeing分层,PipeFilte管道或过滤器),设计模式(有很多,比如对象池Oject Pool、缓冲池Cache等),编程模式(比如Copy-on-Wite)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。前面提到的MT实际上就有好几种模式,掌握后就不用自己花很多时间去试了。另外一个很重要的领域就是并行和分布式计算领域,大概有20种左右。
  6。接下来就不能纸上谈兵了,最好的方法其实是实践。一般教科书上的例子并不能算是实践,只能算是让你掌握语言特性用的。而提倡做实际的Poject也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能是你自己越来越迷糊。我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经典的例子就是用Java实现的HotDaw(源自SmallTalk),你可以用olemodel或hotdaw在搜索引擎上找一下,我记不大清楚了。好象 是个网站,上面有原代码和一些基本设计的文档。另一个来源可以到 是个不错的文档基地。从HotDaw上我学到了什么是Famewok,以及如何用olemodel的方式来构造,这样我就可以应用到其他的地方。顺便说一句,这个例子你绝对不会觉得小,只会觉得大,并且他还是真正的商用的Famewok。
  7。结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
  8。好象以上谈的跟Java没什么关系,其实我们早就应该从单纯的学习语言到真正的学习好编程的领域。学习技术是没有止境的,你学习第一种语言可能要半年时间,以后每种语言都不应该超过两个月,否则你会觉得学习语言是包袱,是痛苦。
  9。学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。
  没有第10点了,因为没有东西是十全十美的,哈哈~~。
----------------------------------------------------------
请不要做浮躁的人
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。
3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。
4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。
6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书;
8.看再多的书是学不全脚本的,要多实践
9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
10.学习脚本最好的方法之一就是多练习;
11.在任何时刻都不要认为自己手中的书已经足够了;
12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
16.不要漏掉书中任何一个练习——请全部做完并记录下思路;
17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。
18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了;
20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
21.保存好你做过的所有的源文件----那是你最好的积累之一;
22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。
24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。
其他答案(共4个回答)
教程(介绍基础的),再找一本例子 最好包括JSP部分的(因为在对JAVA的应用中使用到JSP比较多),先按照基本教程中的内容,按照步骤学会配置一个可以运行的JAVA环境(如果想从根本理解JAVA,不建议开始时就用各种现成的编译器),然后试着写简单的程序(可以照抄书上的,只是为了找找感觉),一般介绍基础的书里都有HELLO WORLD的例子 是个...
如果你手头没有项目可以实践,那就找一本比较好的JAVA教程(介绍基础的),再找一本例子 最好包括JSP部分的(因为在对JAVA的应用中使用到JSP比较多),先按照基本教程中的内容,按照步骤学会配置一个可以运行的JAVA环境(如果想从根本理解JAVA,不建议开始时就用各种现成的编译器),然后试着写简单的程序(可以照抄书上的,只是为了找找感觉),一般介绍基础的书里都有HELLO WORLD的例子 是个很经典的入门例子 各类语言都使用。学习是循序渐进作练习的过程 看看你有没有学习的方向 JAVA包含的内容很多 主要看你需要哪方面的 就主要学那一方面就行了 做过几个练习后 觉得自己能独立编些简单的程序的时候 可以根据自己的想法编一个程序 开始可以功能简单 以后可以不断补充 这个时候才有必要的话查查API阿什么的 开始学的时候看那些基本没什么用 就是建立的概念 了解一下而已 反正我学JAVA 包括其他语言都是这么个过程 你有兴趣可以试试
减肥作为这个世界上女人的一项伟大的事业,无时无刻不会听到女性朋友们喊着减肥的口号,那么在家中也是可以有效的减肥的,那么小编就来和大家分享几招...
减肥作为这个世界上女人的一项伟大的事业,无时无刻不会听到女性朋友们喊着减肥的口号,那么在家中也是可以有效的减肥的,那么小编就来和大家分享几招...
减肥作为这个世界上女人的一项伟大的事业,无时无刻不会听到女性朋友们喊着减肥的口号,那么在家中也是可以有效的减肥的,那么小编就来和大家分享几招...
减肥作为这个世界上女人的一项伟大的事业,无时无刻不会听到女性朋友们喊着减肥的口号,那么在家中也是可以有效的减肥的,那么小编就来和大家分享几招...
减肥作为这个世界上女人的一项伟大的事业,无时无刻不会听到女性朋友们喊着减肥的口号,那么在家中也是可以有效的减肥的,那么小编就来和大家分享几招...
答: java易学市场前景广阔
答: 初三水平学编程很难吗?必须需要高数才行吗?
初三当然可以了,跟高数没有关系的。
放心吧!!
答: 网景导航者年时推出了版本4.0,大幅度的强化JavaScript再度强化其功能,但同时出现的bug和CSS的误译,使得占有率渐渐被Intern...
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415给想自学编程又无从下手的小白一些建议
我的图书馆
给想自学编程又无从下手的小白一些建议
最近总有一些小伙伴问我,现在大二,想自学编程,但是不知道如何下手?不知道该学哪一门编程语言,c/c++?java?c#?还是php?不知道c++、Java、php之间有什么区别?是不是学习java之前要学c?学习了Java基础之后又该学什么?如果你也有这些疑问,那就继续看下去,如果没有就可以return了。首先不要灰心哈,小编到底也是过来人,纯自学的,你们现在遇到的坑,我基本上都爬过。我大二的时候都不知道javascript和Java有什么区别,甚至以为数据库和数据结构有紧密的联系,我现在依然能找到一份满意的工作和待遇!!只要记住——你们现在有大把的时间去爬坑。小编也将从以下几个方面,通俗易懂的表达以下自己的经验和想法,希望可以帮助到大家。一、首先有必要了解一些常见的编程语言小编接触到的一些常见的编程语言,c、c++、Java、c#、php、python、javascript、Objective-C、Swift、R等。1.学习的顺序小编大学课程中有'谭浩强c语言程序设计'这门课程,我当时想学习Java同时也很迷惑,c和java有什么关系?是不是要学习java必须先学习c语言? 你们有木有如此迷惑过?现在告诉你,没有半毛线关系!你如果想学java,c#,php等任何一门语言,立即就可以学,没有先学c才能学java的必要条件。只不过是说,你如果有了其中一门语言的基础,学习其它的比较容易入门而已,毕竟所有的编程语言也有一些共性,都会有基本的语法,数据类型,顺序结构等。2.语言特性及归类(此部分也可以直接break(跳过))当然以下常见编程语言的分类只不过是我个人的理解及浅薄的经验之谈。做个参考就好。按照语言的特性,大概可以这样归类一下:如c、c++语言是面向结构的。c++扩展了c语言的特性,具有一些面向对象的特性。Objective-C据周围同事说是苹果公司对c语言一种封装,反正是用来开发ios应用的,其语言特性和调用方式与c语言很像,因此如果你有c语言的基础,入门ios开发很easy.如java 、c#是面向对象的。具有抽象、继承、封装、多态等特性,因此你如果学习了其中一门语言,另一门语言也能很快上手。至于面向结构和面向对象有什么区别,小编不知道如何表达,自行百度吧.如python、javascript是脚本语言,具有动态语言的特性。意思就是可以再程序运行时改变变量的类型,例如在javascript语言中,声明一个变量赋值为一个数字,运行程序后,你把此变量动态赋值为字符串,没问题是合法的,程序正常运行;相反如果在java(没有动态语言特性的)中声明一个为int类型,如果你给这个变量赋值为字符串类型,程序就会报错编译不通过。因此,如果你想学习两种编程语言,建议你不要选择特性一样的两种语言学习,例如你如学习了java,你可以选择Python或者c++学习,这样学习的时候可以比较一下不同特性编程语言各自的优缺点,对你以后做架构,选择业务实现的技术方案有很大的帮助。二、如何选择一门编程语言了解了基本的编程语言后,相信你又跌入了该学习哪一门语言的坑中。这个问题的关键在于你不知道学了这门语言能干什么!也就是编程语言的应用领域或者开发方向。以Java为例(小编是学Java出身),Java在移动端,服务端,大数据等领取有着广泛的应用,那么你学习Java基础之后就可以选择这个几个方向,移动端就是Android开发,服务端像Javaweb开发,大数据如hadoop技术等。c语言可以 嵌入式方向学习;c++ 可以用来开发游戏、游戏服务器框架及游戏引擎、编译器等;c#可以向 winfrom窗体程序开发(就是window上安装的exe程序,如qq),asp.net网站开发技术,服务端开发,Unity3D游戏开发等;javascript,这个语言的方向就太多了,号称全站开发语言,node.js全栈开发技术,web前端jQuery,Vue.js,移动端技术ReactNative等;python,可以用来做网站爬虫,搜索引擎,也可以开发网站,人工智能领域应用更广泛如数据分析,机器学习等。。。。。小编理解的大概也就这么多,说的并不准确,建议大家去谷歌 or 百度,或者去知乎找答案,关键词如java开发方向或应用领域。更加强烈建议大家去一些互联网招聘网站如拉勾网看看一些技术岗位,这样定位更加准确,如下图这下你总该知道你要学习什么了吧三、寻找学习路线当你确定了你想学习的编程语言及以后的开发方向或应用领域后,你肯定又不知所措,我该怎么学习呢,先学什么,后学什么。这个问题小编就心有余而力不足啦,毕竟也只是学过Android和一点点javaweb而已,最多知道它俩的学习路线。但是你可以百度搜索,作为一个程序员搜索引擎才是你最好的老师!!,如你想学习ios,关键词ios学习路线图,肯定有不少。菜鸟要飞的平台上也提供了常见开发技术的学习路线图。小编更推荐你去一些培训机构的官网浏览他们的培训的课程目录,很详细的!否则怎么吸引人呢。四、我该选择哪一个方向即使前3步你都OK,你肯定还会问类似的问题,我到底是学Android还是ios,哪个工资高?大数据技术现在很热门,选择haoop吧?首先,根据你自己的兴趣。这个和不说的一样,作为一个小白,你都不知道Android开发到底做些什么,hadoop又是什么玩意,谈什么兴趣呢?除非你确定你对某一个领域感兴趣,那就去学吧。其次,你只是为了毕业以后好找工作,待遇好些。这个就稍微能找些实际的参考依据啦,去拉勾网等类似的互联网招聘网站,搜索职位关键词分别看一下对应的职位的数量,比较一下同样的工作经验哪个工资更高。无论你是选择移动端还是we前端还是服务端,只要技术好工资都不低!还有,新技术相对而言工资是高点,但岗位也少。如大数据,人工智能等这些新技术的岗位也就在一线城市可以搜索到,你学了这些就意味着你必须去北上广深拼搏,否则找不到工作。所以如果你有心仪的奋斗城市,就结合一下该城市的岗位去选择你要学习的技术。最后,并不是你现在学习了Android开发,工作以后就一定一直做Android。编程技术的变化和发展是很快的,说不定什么时候就被淘汰了;工作后,要根据工作需要学习对应的开发技术。所以最重要的是培养自己学习新技术的能力。而大学期间,最好多学习一些技术,扩展自己的广度,毕业后找工作的选择会多一点。毕竟没有工作的实战场景想提高某一个开发技术的深度是很难的。个人认为,大学期间的学习最大的作用是通过学习不同的技术来寻找真正适合自己的方向。技术深度的提高是在工作的实战中积累的。而提高自己技术广度最好的办法就是自己独立或者和别人合伙,完整一个简单的线上项目,这个过程会让你对很多疑惑豁然开朗!以上只是小编浅薄的经验之谈,欢迎留言交流!
TA的最新馆藏
喜欢该文的人也喜欢在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
想学习编程,但是不知道是学习c开始还是java开始,很纠结!
各位高手给点建议。
这个问题已被关闭,原因:
来源: 101 新手上路
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
原文地址:
始终认为,对一个初学者来说,IT界的技术风潮是不可追赶。 我时常看见自己的DDMM们把课本扔了,去买些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。 而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。
C#就象当年的ASP 一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。 96, 97级的不少大学生都去做Web了。当然我没有任何歧视某一行业的意识。 我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。
初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。 我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:
认为计算机技术等于编程技术:
有些人即使没有这个想法,在潜意识中也有这样的冲动。 让我奇怪的是,许多信息学院的学生也有这样的念头。 认为计算机专业就是编程专业,与编程无关的,或者不太相关课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。
其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。 计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。 编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。
编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。 网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。 其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。
咬文嚼字的孔已己作风:
我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。 我不明白的是,像计算机网络原理这样的课程有必要做笔记? 我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生像学《马列原理》一样逐字背诵记忆。 这乃是我见过的最愚蠢的行为。 所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。 极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP协议设计的宗旨。 总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。
在学习编程的时候这些学生也是这样,他们确切的记得C++语法的各个细节。 看完了C++ 教程后看《》(确实是好书),《》,《C++ reference》,this C++, that C++……, 然后是网上各种各样的关于C++语法的奇闻逸事,然后发现自己又忘了C++的一些语法,最后回头继续恶补…。
有个师弟就跟我说:“C++太难了,学了这里忘了那里,学了继承忘了模板。”
我的回答道:“你不去学就容易了”。
我并没有教坏他,只是告诉他,死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。 你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。 我有个结论就是,实际的开发过程中对程序语法的了解是最微不足道的知识。 这是为什么我在为同学用Basic(我以前从没有学过它)写一个小程序的时候,只花了半个小时看了看语法,然后再用半个小时完成了程序, 而一个小时后我又完全忘记了Basic 的所有关键字。
不顾基础,盲目追赶时髦技术:
终于点到题目上来了。 大多数的人都希望自己的东西能够马上跑起来,变成钱。 这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。 但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。
一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why而不是how。 时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。 但在IT领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。 每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。
基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个Linux(这是许多人嘲笑理论课程无用的原因), 但它们能够显著的减少你在学习新技术时学习曲线的坡度。 而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。
一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。 我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。 大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。 我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。 和我谈判的公司开出的薪水是他的两倍还多。
下面有一个不很恰当的比方:假设学习VB编程需要 4个月,学习基础课程和VC的程序设计需要1年。 那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。
几个重要的基础课程
如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。 我的建议是针对那些希望在IT技术上有所成就的初学者。 同时我还列出了一些书目,这些书应该都还可以在书店买到。 说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。
大学英语 -不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。 中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。 学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。 吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言 -关于体系结构的书遍地都是,而且也大同小异, 倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。 你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理 -我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。 无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。 这一类书也很多,我没有发现哪一本书非常出众。 只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。
数据结构和算法 -这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。 很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。 倒是在学完了C版的书以后再来浏览一下 C++的版的书是最好的。
软件工程 -这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。 我的建议是看《实用软件工程》(黄色,清华)。 不要花太多的时间去记条条框框,看不懂就跳过去。 在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计 -《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。 而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。 在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。 在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。 我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。
对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。 如果不是,请参照计算机系的课程表。 如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。 如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。 尽可能多的在计算机上实践一种理论或者算法。
日三省乎己
每天读的书太多,容易让人迷失方向。看看我以前整理的,如果原文被墙,可以到CSDN看。 一定要在每天晚上想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣,在一本书上花的时间太长还是不够等等。 同时也应该多想想未来最有可能出现的应用,这样能够让你不是追赶技术潮流而是引领技术潮流。 同时,努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。 坚持这样做能够让你真正成为一个软件“研发者”而不仅仅是一个CODER。
把最多的时间花在学习上
这是对初学者最后的忠告。 把每个星期玩CS或者CS的时间压缩到最少,不玩它们是最好的。 同时,如果你的ASP技术已经能够来钱,甚至有公司请你兼职的话,这就证明你的天分能够保证你在努力的学习之后取得更好的收益,你应该去做更复杂的东西。 眼光放长远一些,这无论是对谁都是适用的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
说说我的看法,一家之言,仅供参考。
我在学校读书的时候,最开始接触的是C,仅限于学习。后面又接触了C++,同样是个人兴趣。后来读研的时候,由于实验室项目的需要,重新学习了C++,再后来,出于同样的目的,学了Java。毕业之后,本来打算找C++方面的开发,阴差阳错,进入现在的公司,工作中又是Java服务器端开发。工作之余,随着个人兴趣,又学了Python,Scala,JS,但仅限于自己做做自己感兴趣的东西。
啰嗦了这么一大堆,只是为了以自己亲身经历说明了一个观点:学习语言的时候,不要纠结着自己到底是学A还是学B,重要的是带着目标,或者说需求去学,目标驱动是最有效的!
此外,看了你的评论说第一门语言很重要。对于第一门语言是否重要,我的观点是:是很重要,但不起决定性作用,重要的是行动!而且对于你以后想以编程为职业,很大可能你工作的编程语言不是你的第一门语言,而且作为一个coder,你也不应该局限于一门语言!
最后,如果你还在学校的话,不要仅关注语言,语言只是载体,重要的还是数据结构、算法、编程思想这些本质性的东西。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
先学 C 吧,毕竟是系统语言,对底层涉及的比较多。
同意 @justjavac 的那句话
越容易掌握的东西,学习的人越多,而且淘汰得越快
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
学哪个都行 , 关键你要去学 , 别只问 。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
怎么不直接学习python呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我还是觉得先学比较高级的语言比较好。比如python
比较高级,不是难学,而是好学,跟自然逻辑比较接近。
等到对编程有想法后,做具体方向研究的时候在开始深入研究专项领域的研究。
coursera上面有不少编程入门的课程。用的语言基本都不是c。我对c的感受也是,过于底层。c的抽象很多是对机器结构做了注记的感觉。感觉上是很接近汇编的来着。所以,如果你不是学习硬件方面的入手的,我还是支持先学python这样的语言。把编程是怎么回事搞懂。编程=算法+数据结构。这个是一个说法。而其中算法,应该是把问题形式化的过程(我记得老师是这么讲的),这块其实跟底层没什么关系的。
c,java,c++这些语言细节问题对于初学者来说实在有些多。尤其c++。java里面的话,会有很多概念,不过其实很简单的东西。
我贴两个我在看的课程:
下面这个是用racket的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
python不错,入门门槛不高,功能强大,代码缩进使得程序本身很漂亮,习惯后以后学习别的语言也能使自己的代码风格更“优雅”,不像有些程序员(包括我自己,有时候代码就是一坨)。LS各位答得都很好,语言说白了不过是一种工具。个人认为我们要学的其实是“如何去学习”。
PS:当然如果纯粹要从c和java里学 那当然还是c。。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可惜的是,C 语言过于注重对机器模型的抽象,并不适合用来程序员入门。
来自云风的一篇blog《》,是给《程序员》杂志写的一篇文章。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
对,学什么语言并不重要,很多语言其实没有太多差异性,一门通者百通。
不过个人而言,建议你还是先从 C 学起。原因:
C 是最早的语言,C++ 是 C 的增强版,Java 是 C++ 的精简版,学好 C,你可以更容易学会 Java。
C 更接近底层,类库比 Java 少,语法也比 Java 清晰,可以让你更专注编程。
C 系语言的使用者不比 Java 少,未来也是很有用的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
抛弃了实用目的的编程都是扯淡。而且最好以兴趣作主导,你最想用编程技能做什么东西?
做website或者webapp?Ruby, Python都可以学。喜欢重前端交互的玩意的话,搭配点前端mvc框架比如Angular, Ember都是不错的选择,否则就jQuery吧。Java和.NET不太推荐。选择web开发的优势,一方面这是比较主流的东西,另一方面,如果做mobile app,简单的也可以用phonegap之类的html5技术模拟,掌握html, css, javascript没啥坏处。
做mobile app?iOS和Android开发都不错,不过iOS开发你需要单独去买mac了,投入成本比较高。
其他的,就不评价了,没弄过。
记住你想用你的技术做什么,这比学什么技术本身更重要。
一旦选定了一个方向,就要用心去钻。不要半路看到别的好又改主意了。不管你选什么,你在技术方面的投入都会化成你的宝贵经验。不用担心以后“换个语言就完全不熟悉了”。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
web:python
后台api及分布式:java
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
记得我的导师是这样跟我说的
----需求驱动学习,没需求的学习都是空谈一场
自身不明白自身需求,那是一件很麻烦的事情。等同于中国的应试教育,只是为了考试而考试,为了应试而受教育
毫无需求的事情,做起来只会让人忘了自己的中心思想就是作为“人”
建议,web的话学学python的flask或django. java的三大框架,ruby的ruby on rails等
剩下的就交给c/c++或汇编
当然 其实你学会一门语言,想要学第二门语言也是很顺理成章的事情
因为我也是初学者,也不是计算机专业,并且没有毕业。
尽管没学过php或ruby,但看起PHP和ruby代码一点也不觉得吃力
因为我是python入门编程的,这是一门非常易学的脚本语言
后来发现有BBS的需求,就去看了discuz的(php)源码
也发现需要在github上弄一个静态博客(jekyll),所以也慢慢的开始看ruby的代码
就这样,折腾个一年半载,应该可以成为一名新手了
为什么说还只是新手呢
得决定是否要在这条路上走下去,真心的
开始自主扫盲,用编程的形式,坚持,每天。至于已经成为一枚程序员了,那么接下来的...
...省略50万字
最后引用下盖索林在他的安卓教程那书上所引用过的话:
将一份创意落实到可执行的应用程序,背后需要的是从阅读与编写代码中累积的经验,并有坚持理念,直到完成的耐心
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
必然是C。上面说学哪个都可以的人没有回答到这个问题。为什么是C呢?
首先,学了C你才能真正理解内存,你在编程的时候才会真正关心内存,真正关心程序的效率。而在使用JAVA的时候你根本就不用考虑内存,拿到的对象是引用还是一份拷贝呢,这都不是你能左右的。如果你一开始就使用这种语言,以后你对内存会不敏感,编写出来的程序效率会不高。
第二,学习C的过程中会涉及到了一些操作系统,编译原理,计算机组成原理的知识,而这些知识对你以后的发展是非常有好处的,这也会是你的竞争力所在。
第三,C语言是近代高级语言的鼻祖,学了C语言再学JAVA,会很快上手,而学了JAVA再学C语言,你会发现有很多底层的概念无法理解。
另外,上面提到一些动态语言(Python, Ruby...),这些是需要的时候拿来就玩的,如果你先学了这种,那么你连类型的概念都没有,而如果你把C语言学好了,其它的语言都可以现学现用,包括函数式语言。
这个问题已经被关闭无法回答
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信