代码就不复制粘贴了,想要学习吗?那就

青青子衿, 悠悠我心, 但为君故, 沉吟至今
写给新手程序员的一封信
  首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。  &当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。& & WhyTheLuckyStiff  对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。  仅仅是因为爱好开始做一些创新,这是一个很好的开始!如果你说&我要先学习一下再开始做&那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打开你的编辑器开始写代码吧。  下面是一些很重要的建议,虽然有人并不认同,但我保证你看完我的分析以后会站在我这一边。一开始,先不要管算法和数据结构。大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后找一些相关的论文去理解算法并动手编程实践。如果没有现成的函数库(其他程序员提供的可重用代码),你用自己喜欢的编程语言来实现它。  0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。  不要选择C语言作为你第一门编程语言。也许选择C语言会给你一种过时的满足感。虽然它比早期的汇编语言提供了更好语法描述,但是今天C(或者C++)不是能够快速编写软件的语言。毫不偏袒的说,我建议你学习一种动态语言。选择一种你觉得语法(文档)让你使用起来更舒服的编程。为此,你可能需要花费一些时间来在几种不同的语言之间进行比较。这么做目的不是为了让你感觉更好或者让编程更容易。更快地完成自己的作品并且能够看到成果,才是激励你编程的源动力。不要选择一门需要某种重量级的IDE(IDE是一种能够帮助你编写并运行代码的工具)才能轻松编程的语言。你所需要的仅仅是一个文本编辑器。(注:原文并没有标号,是我们加上的,请大家别忘记了哦,我们是从零开始数数的。:) )  1. 选择一个好的编辑器。  编辑器对程序员而言,就是像是弓对弓箭手一样重要。这里有一些推荐的编辑器:
SublimeText 2 & 如果你刚开始编程,推荐使用SublimeText 2
Emacs & 学习曲线陡峭,快捷键复杂。如果你想定制自己的使用习惯,需要学习Emacs Lisp.
Vim & 不仅操作简洁而且它默认包含在linux的发行版中,所以深受大家欢迎。我开始使用了2年Emacs。由于Emacs的快捷键操作过于复杂,我的双手开始经常疼痛,这迫使我转向了Vim阵营。了解Vim的快捷键是非常有必要的。当你在远程的服务器上编辑代码时,你唯一不需要安装的编辑器就是Vim。  注意!Emacs和Vim可能已经成为成为古董了。但是,它们都具备一些现代编辑器多不具备的功能。  2. 选择一个你可以从中学到东西的操作系统  Windows不会教会你任何东西。使用Windows你唯一学会的就是打开一个exe(可执行)文件来安装软件和使用它。可能刚开始的时候你会觉得很酷,但是长远来看,如果你立志成为一个web开发人员,可能还是要具备基本的linux知识,尤其是当你要发布程序的时候。Linux也允许你根据自己的要求来定制程序。Macs也很酷,但是我认为你现在经济上还负担不起。  3. 不要通过复制粘贴来做备份  一个新手程序员通常会把文件复制粘贴到一个临时目录下面来进行备份。这也许也是他们唯一知道的方法。不要那么做!你需要使用版本控制软件。我强烈推荐使用Git,它是个目前很流行的版本控制工具,而且使用起来非常简单。对一个Git新手,有一个良好的社区和很多参考资源来学习。(除了Git之外,还有mercurial, darcs, fossil等等。但是我还是建议从Git开始,我有很多的理由来支持Git,这里就不多费口舌了。)  4. 知道去哪里寻求帮助  参加一个和你相关的(你使用编程工具相关的)程序员社区。比如StackOverflow就是程序员的Facebook。那里没有消息状态和回复,取而代之的是问题和答案。除此之外还要学会使用IRC。IRC是一种老式的聊天室,现在还在被大多数开发人员用来分享技术信息和帮助解决问题。  5. 培养你的礼仪  知道什么时候问问题。你遇到的大多数问题都是别人碰到过并且在Internet上能够找到解答的。在IRC或者任何论坛里发问之前,先搜索一下google(或者blekko)来看看是不是有现成的答案。在IRC上问问题需要有耐心。永远记住,人们只是处于好心来免费帮助你。有时你发问以后需要几个小时才能有回复。所以,耐心等待。除此之外,记得问问题的时候要礼貌。世界很小,你怎么对待别人,别人就会怎么对待你。  6. 结交朋友,技术书籍只能教你解决常见的问题(他们说:书是死的)  当你在捣鼓一些程序或者从程序的作者那里学习,你能学到一些书本上没有的东西。当你散步的时候,请和遇到的朋友打招呼。你肯定不是唯一的程序员。和其他的程序员一起交朋友一起工作。你会注意到,当一群技术爱好者在一起的时候,不论话题是从什么地方开始,最后总是以技术话题收尾。这是必然的现象。所以你可以尽情参与。在你的黄金年龄努力编程,我能告诉你的是,我在开始6年前寻找朋友并开始讨论编程,从那时起才学到那些书本和文章不会我的东西。所以我总是说,我的编程经验有6年,因为只有那个时候开始,我才开始与人交流并开始感觉真正地开始学习编程。  7. 参加开源项目  为开源项目编写代码能带来回报。这不仅仅是帮助别人,你留下的代码会被其他人使用或(可能)改进。当别人给你的代码添加功能或者提出修改意见时,也是在提高你的编程水平。开源软件项目不一定要是一个大工程,编写一个下载youtube视频的小程序也是很有用的。更重要的是,你会惊奇地发现你编写的代码会成为与他人有效沟通的桥梁。  最后,若干年之后如果本文的内容曾经对你有一点点的帮助,作为回报请写一封类似的信给希望开始编程并不知如何入手的朋友,有可能的话请纠正本文中过时的内容。  智者说过,掌握某个东西需要10年或10000个小时,也就是汉语中的&十年磨一剑&,所以不用着急。  英文原文:  中文翻译:
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
请问Mac又如何呢FrostWong 于
0:06:49 回复Mac很不错,但本质上是Unix加了一个marvelous的图形界面还有一些实用的工具。
.sdfsdhnvgb
今天C(或者C++)不是能够快速编写软件的语言?荒谬!快速开发依赖于你使用的框架和库,跟语言本身没什么关系。Java号称开发快,可是调试呢?VM内部机制能把你搞疯,因为动态语言做了很多你不知道的事情,不像C/C++一切都明摆着,一看内存就清楚了。我建议就要从C++开始,学QT这样的框架,快速开发就是小菜。后面更让人崩溃的是居然推荐emacs和vim给初学者。。。这不是跟前面的“快速开发”南辕北辙自相矛盾吗?
嗯,学习了。。
基础入门级的编程要先了解什么
.primewaywheel
我第一门学的就是C
学到知识了,我就是c入门的,一路从C/C++/C#(数据结构)
java/javascript/(期间还学SQlserver)再到后来的PHP等等。这一路走来,真的不容易啊。呵呵,不过生活还是如此的美好。充满正能量了
这种文章都是Win黑。那些开源粉就这么有优越感?jacob 于
20:20:28 回复如果你不是程序员,win毫无疑问是最好的选择!如果你是一个win程序员,win毫无疑问是唯一的选择!如果你是其他,那么毫无疑问linux/unix才是最能让人进步的选择。
不学c。。不是说要从c入门吗。。。
刚刚接触编程了一年。说的都挺对的。
.gtd实践者
文章不错。Eric S. Raymond的《如何成为一名黑客》写得也不错。显然‘这里所指的“黑客”一词并非现在网络上很热的“黑客”。和本文一样提出的观点有:0、编程语言的选择,1、linux操作系统。2、开源3、...言无不尽。希望中国的程序员真正能够“创造”出来一些大牛的软件。gtd实践者为此不懈努力。
文中的观点基本上不靠谱
身为一个菜鸟,楼主写的经验之谈,让我有种豁然开朗的感觉。我会谨记某些细节。
三百六十行,行行出状元,计算机语言也是一样,而且懂其一便可知其二。
0. 选择一门好的编程语言我觉得一开始真的不应该选择动态语言,这些语言不会教懂你任何东西,除了调用api和框架。真正对一个程序员成长有帮助的应该学C,不是C++,也不要学微软的那些语言(什么c#,vb.net,...都是坑爹的),然后再学java或者动态语言(python等)。这样的学习过程能少走很多弯路。如果一开始不是定位专业程序员,那么学php也可以。文中说不要学习依赖IDE的语言,其实就是说不要学微软的visualstudio那一套,这话是真的,这种语言对程序员的发展有很大的害处。2. 选择一个你可以从中学到东西的操作系统严重支持!!linux系统本身就是一本百科全书。饺子 于
16:51:05 回复我也是这么觉得~~
不管用不用的到 C 都是要学的~ 并且有很大的好处~
就电驴上有一套高洛峰的免费视频
都免费更新了103集~ - -另外:开源系统linux必须支持~
部分认同,一开始做出来点东西的确会振奋人心,但是不要忘记算法和数据才是目前冯·诺依曼计算体系滴核心(谁来和咱一起推翻这家伙喵?
好吧...越看越纠结了……
天哪,有点国情概念好不好。在这里我们的学习环境要差得多,建议学多人用的语言,这样帮助文档和在线问答会帮你很大的忙。
看完这个是不是该有点悲哀:我在Windows上编程,用的C++,编辑器我是属于其它的;文件备份怎么没有提到SVN,这个也挺好使的。
学习了,学的很好啊!
非常感谢您的分享,我是上大学才开始接触计算机的,起步可谓很晚了.我的第一编程语言是c语言,这是学校课程安排的,感觉还可以.
&更快地完成自己的作品并且能够看到成果,才是激励你编程的源动力&说的很好!
我是新手,英文不好,学起来不容易
我都30歲了,學編程還晚嗎,一直想學,可是就沒有耐心。wangjie 于
11:57:02 回复晚了 程序员基本上最多也做到30岁 就没人做了Kory 于
14:21:55 回复30岁还在编程的人多了去了vinC 于
9:27:43 回复大把人30岁在编程的....
过来人觉得这些东西很靠谱
我認為這篇文章還是比較偏。說 Linux 下的編程新手入門還差不多。
好好学习下 。。。
学习了呵呵每天看一篇对大脑有益呵呵
.不纯粹文人
明白了,谢谢
我的编辑器就是记事本,十多年前是手写。
看着这每句话都让我不禁和自己的经历去对应,去反思,感觉写出这些话真是一个前辈由衷的对后来者的一种关爱,最后那句话让我感到博主超然的姿态,“最后,若干年之后如果本文的内容曾经对你有一点点的帮助,作为回报请写一封类似的信给希望开始编程并不知如何入手的朋友,有可能的话请纠正本文中过时的内容。”这是一种传承,一种传递,向前辈学习!
选哪门语言开始啊?
.保健品招商
现在程序员越来越难发展了,可怜啊!
从js入门的,算不算?ejacky001 于
22:23:46 回复个人觉得js绝对是好东西blue 于
15:52:52 回复 js 居然不是简单的脚本语言,
她是一个优美的代名词。 从js开始吧 。 你会发现原来世界如此的美妙和惬意。 碌木 于
16:22:14 回复我从js→php
.请输入关键词
搞程序也挺不容易
以前在微博上看到过,似乎大家都反感微软的非开源家属,还有有重量性的编辑器和windows!
.铂金骑士清毒烟
我还是程序小白呢,感觉电脑语言很神秘
谢谢了,明白!
学习了,新手很感谢!
文章挺好的,最近也确实困惑,没有像样的产品来涵盖技术.
.初学者博客
做个程序员不容易啊
.百度非官方
程序员工作强度大不说,薪水还很低。
觉得很有用,可以转载吗?
.foreverzeus
只能认同某些观点:我觉得入门语言c是比较合适的,大多数的动态语言,类似于python都封装了很多良好的东西,不利于的你一开始的打好基础,对基本原理的理解。所以类似与py这样的动态语言,我觉得应该是先打好基础再学的。上帝之死亡翻滚 于
8:51:41 回复楼主的意思应该是说选择一些相对容易做出点东西,至少入门门槛比较低的语言。不至于要学个一年半载才能入门的那种。这也是给自己提升信心,成就感的路径吧。
程序员听辛苦的
呵呵,跟着你能学到好多东西
压力大, 薪酬不如公务猿
.长沙门面装修
虽然不是很了解,支持一下。。。
0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。楼主能不能推荐一门这样的语言?多谢!
作为一个完全技术及程序没有半毛钱关系的外行人表示,虽然技术改变生活,却常常被geek们炫技的app搞得晕头转向.程序员们,在开发大众应用的时候可以考虑一下大众们的使用习惯么?dav 于
8:41:01 回复这个是策划者考虑的问题。。。FrostWong 于
0:08:34 回复看到现在有些(可能还是多数)招聘时有一条要求就是服从领导要求。他们才不管用户体验呢,重点是钱
.哈尔滨百度代理
我不懂编程语言,呵呵,属于会改改东西的人;
写得不错,即使不是编程爱好者,我也从中学习到了一些,感悟出有价值的思想~
话说我正在学C啊,虽然不容易但是我还是挺喜欢它的,看到大量不认识的代码会觉得兴奋,但是又不喜欢一天编一个程,编的我恶心,哎,爱恨参半啊
伯乐在线现在很活跃啊。。。。。。
程序员也就是一个职业,没什么特别的,和其它行业是一样的,只是比较新受到的关注多点
写的都是经验之谈,如果你用心做了,有种豁然开朗的感觉
计算机专业,大一开始接触编程,做过几个所谓的商业项目,大四毕业,工作几乎与编程无关了,从此远离了编程。对程序员这职业,真是又爱又恨啊。
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.推荐这篇日记的豆列
&&&&&&&&&&&&2013年7月 扩充话题大版内专家分月排行榜第二2013年6月 扩充话题大版内专家分月排行榜第二
2013年7月 扩充话题大版内专家分月排行榜第二2013年6月 扩充话题大版内专家分月排行榜第二
2012年2月 挨踢职涯大版内专家分月排行榜第三2011年11月 挨踢职涯大版内专家分月排行榜第三2011年10月 挨踢职涯大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。不做搬运工 微软AI学习自行编写代码_网易数码
不做搬运工 微软AI学习自行编写代码
用微信扫码二维码
分享至好友和朋友圈
(原标题:不做搬运工 微软AI学习自行编写代码)
摘要:据国外媒体Quartz报道,要是计算机能够理解人们想要解决的问题,并编写代码将其解决,而不像微软Excel那样要在程序内的菜单人工找寻合适的公式,会怎么样?这是一个非常未来主义的想法,但在这方面微软研究院和剑桥大学最近已经取得了进展。在2016年11月的论文中,微软和剑桥大学称它们开发了一种能够自行编写代码解决简单的数学问题的算法。该算法名为DeepCoder,能够通过研究有哪些潜在的代码组合可以解决问题,来强化自己的能力。(它有点复杂想,下文将会详谈。)然而,这并不意味着该算法从现有软件那里窃取、复制或者粘贴代码,也不意味着它是通过搜索互联网来找到解决方案。该论文的共同作者、微软研究院研究者马克·布洛克施密特(Marc Brockschmidt)表示,“我们在瞄准那些不懂得或者不想编程,但能够鉴别问题的人。”他称该项技术就像是Excel公式,后者接收简单的指令就能够得出答案,无需获得数学方程式。该系统分成两个组成部分:代码编写算法,以及搜索潜在代码的机制。自动化代码代码编写算法的运行并不简单,下面先用尽可能简单的话来说明一下。一个数学问题有输入和输出——或者说你有的数字和你需要计算的数字。研究人员以用非常基础的代码就能解决的问题为例,给算法展示输入、输出以及用来解决它们的代码。不妨拿它来跟用积木堆砌塔楼的过程进行类比。研究人员给算法展示了积木,然后再展示塔楼最终完工后的模样的图片。但算法需要知道如何对齐每个积木的边缘,使得它们能够堆砌在其它积木上面。虽然这对于人类来说很简单,但对于机器来说这并非易事,因为机器不知道重力,也不知道为什么大的积木要放在小积木下面来提供支撑。但如果给机器展示积木堆叠拼凑成最终的塔楼的整个过程,让它观看数百乃至数千座塔楼的构建过程,那它们就将能够用类似形状的积木来构建塔楼。而对于DeepCoder而言,积木就是一个个的代码。当被要求解决新问题,而不是使用之前行得通的代码的时候,该算法会预测什么代码会被用来解决它之前见过的类似问题,以及这些代码会以怎样的顺序排列。学习整套的编程语言对于这些算法而言过于复杂,因此微软和剑桥团队打造了一种小型语言。它被称作领域特定语言,就像是幼儿的积木玩具。该系统能够在线上解决简单的编程问题,这些问题一般需要使用3到6行的代码。无限的可能性DeepCoder还能够搜寻可带来可行解决方案的潜在代码,这可强化它自身编写代码的能力。它并不是像StackOverflow或者GitHub那样通过扫描热门代码库来获得解决方案,尽管研究人员很希望这一点未来可以实现。“我们会研究你能在特定的长度下用这种语言编写出的所有潜在项目。”布洛克施密特说道,“计算机非常善于搜索这些东西。”他将该项任务比作是在毫无语言知识的情况下仅用一些单词来造一个关于狐狸越过小狗的句子。一开始你可能会得到“狐狸狐狸狐狸狐狸狐狸狐狸”,然后是“狐狸狐狸狐狸狐狸狐狸小狗”……直至恰当的句子出现。思考该项任务的另一种方式是Salesforce人工智能研究者史蒂芬·梅里蒂(Stephen Merity)的“无限猴子理论”。该理论说,让无限数量的猴子完全无限时地在键盘上任意敲字,最终会写出像莎士比亚那样的作品。这里说的是同样的事情,不同的就只是猴子的键盘不是打字,而是敲代码。
但算法搜遍程序所有的变异版本,找出正确的那个的能力,是该团队的真正贡献:该算法可预测哪些代码最有可能被用来解决问题,然后先关注那些解决方案。如果算法找到合适的激发,那问题就被视作已经解决,它对于什么才是合适的代码的理解也随之增进。搜寻代码听上去像是人类的做法——上网去寻找一些代码行来解决他们的问题——但这只是最接近于恰当描述该算法生成和整理代码过程的说法。如果人类要做该人工智能那样的技术,那就等于是输入他们能够想到的所有代码组合,然后复制粘贴刚记入新文件的代码,再看看是否行得通。微软和剑桥团队表示,他们希望该系统未来能够理解完整编程语言的细微差别,能够识别网络上的优质代码。
本文来源:cnbeta网站
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈

我要回帖

 

随机推荐