24岁了无一技之长所以想学编程,为了以后能自己养活自己,但在网上搜索了一下,发现有人说英语和数学不好的人不可能把编程学会。我的英语在自学中。数学就真的很差!请问真的是这样吗?英语和数学不好的人学不会编程吗?要开发一款安卓APP和苹果APP需要学会哪几种编程语言?
回复内容:
学肯定能学会,就是效率低,学起来缺少愉♂悦♂感♂。
比如我。
要解决这个问题没啥捷径,缺啥补啥吧。
关键是你是因为兴趣和用途,还是因为想成为大牛。
1.肯定学得会编程,学不学得好是另外一回事,但够不够用又是另外一回事。
2.现在的编程多么简单啊,你能静下来看一会书练习一下就会了。我的英语比一大堆说英语不好学不好自命不凡的程序员都要好多了,但他们的编程能力比我高多了,那是因为他们学编程,而我还是喜欢看中文学编程,同时他们是专业,我是业余爱好,那是两码事。
3.“数学分析”这种词应该不是我这种人用的,但我的高数就记得极限、有限无限还有线性方程之类的东西,我完全忘了怎么算,但我有mathematica。我也有一大堆的Python的import库。
4.学编程你以为科班毕业很厉害?才不是,大多数都其实很普通,我工科毕业也一样对我的专业感觉十分差劲,但其实上,拼命学几个月其实就能追得平均值差不多。
5.大牛是一种回事,但大牛的标准其实没多少人达到,很多伪大牛,当然就有了许多漂亮的说法来赞扬他们的牛法,一些编程方面的怪异理论往往被伪大牛们当成了卖点,还有一堆人去引用大牛的话当成他们自己发明出来的。去看书,然后练习,找工作只比业余层次高那么一点点,实际上,尤其是需要大量经验的工作。
6.数学和英语应该每天学习,慢慢增进,但应该与实际结合。你去工作几年,又一起学了几年,你就肯定能成中上游了,不偷懒就已经让你慢慢地超过许多人了,你刚学编程,这里很多人则是相关专业和背景的,他们有些人就喜欢欺负弱小。
做什么最重要是顺从心意,作为回答最紧要是有作用。你24岁又无一技之长,那就去学习,然后找份工作边学边做,你能进去就代表你学得足够了,再慢慢学,没心思读书进去后有压力自然也会学。许多回答一边炫耀自己的算法,各种英文文档等等陈词滥调,还一边各种恶劣态度表示你十分烂……根本不用管。很多回答动不动就是什么灵魂深处之类的意境,各种粗糙的文墨卖弄,我真想呕。
英语不好不意味着其他字母语言差,和海外团队合作时曾经见过意大利语的异常,把我们给气的。
至于数学不好,又不是让你做算法设计,流水线上组装车,要数学干吗?
什么都不好,都不会妨碍你做个Code Monkey,但是想更进一步,就要进化成懂English和Math的Programmer。
没做过Andriod App开发,印象中好像java就足够用了。要是嫌麻烦可以转iOS开发,只需要会Object-C就行了,真心跟C差不多。
靠编程为生,数学不好不是特别严重的问题,但英语不好会比较麻烦,至少用拼音命名会让人很反感。
最后,知道缺陷在哪为何不去学呢?
说实话,我同意“数学和英语不好是学不好编程的”这样的观点。在我身边也有很多这样活生生的案列。
我们先来说说英语。编程这种事本来就是写单词并且进行逻辑组合,编程最直观的对象就是英语,当然编程里面的单词都是比较基础的,一般学点英语的人都会。那么既然程序本身的英语很简单,为什么还要有很强的英文功底呢? 一下我简单的列几点,大家自己体会:
- 编程语言的起源是来自欧美等国家,其编程思想也是保佑欧美特色的,我们只有读原汁原味的英文教材才能体会到一门编程的艺术。比如说PYTHON,你看英文的和看中文的简直感觉自己在学两种语言
- 每一门语言都会有官方文档,而这是学习编程的最好的参考资料。(官方文档几乎么有中文的)
- 很多新的语言,如果你不会英文,几乎没法学,因为国内没有。比如,R(现在好多了),但是看看SAS吧,如果你不会看官方文档,你能学会?哦,对了,还有那牛逼到天上的hadoop。
- 不会英文,你怎么google,怎么玩GIT,怎么去看stackoverflow。这三块是每一个高手程序员必去的地方
- 请你看看知乎里面那些大神,是不是清一色的几乎是海龟?即使不是海龟,也都是在英文方面颇有造诣的人,至少阅读方面是颇有造诣的
我们再来看看数学。我见过太多的不会数学的程序员了,诚然,数学不好也是可以开发软件或者写代码的。但是在计算机界里高大上的数据结构和算法才是核心竞争力(有点片面)。你看看那些计算机的大牛,动不动就是数学,计算机双学位,我就不说那些又会运筹,又会统计概率的大牛了。 我们再来看看最近火的不得了的大数据,无论是数据分析还是数据挖掘,核心技能就是:数理统计和计算机。我就不说机器学习了!
所以说,你不会数学和英语也可以当程序员,但是这样的程序员在我天朝少则百万,多则上千万。而怎么从这帮人当中脱颖而出,数学和英语就是你首先要考虑的问题。
当然,如果你爹是王建林,我上面说的都是废话! 谁闲的蛋疼去当程序员啊!
英语一切的基础,数学不好抽象能力就不够,你看不清问题的本质。学udacity的 CS101做题到这里
防欺诈链接来计算任意两链接的距离时,这里我憋了十几个小时也没理清头绪。我就去看mit的single calculus了,看完differentiation的a小节,a的第一个习题组做了一半再回头看这题赶脚就好些了。
数学仿佛是这个世界的灵魂。
触得到这千头万绪,看不出那纤纤一束
写完才发现答偏了>.< ,本答案说的是“英语和数学不好的人是不是学不好编程”,大家将就着看吧。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
答案很残酷,但英语和数学不好的人确实是学不好编程的。
想必有人看完这句话就要跳出来反对了,有人肯定会说:“就编程里的if,for,while,do,void这几个单词还需要英语好?看几遍就会了。”也有人会这么说:“学好编程还需要数学好?我会面向对象,我会写app,但是和数学半毛钱关系没有啊!”但是必须要说,这么想,就错了。
好吧,首先来说英语。
正如某些同学所想的,一个程序里面的单词确实很简单,词汇量超小,C++的关键字也才63个而已,而且变量名、函数名虽然不能用中文,但是你也可以用中式英语甚至用拼音随便起。所以编写程序完全不需要英语好。但是你们忘了,这只是停留在“能写出一个程序”的水平上,如果你要学会甚至学好编程,下面这几样东西你是必须掌握的:Debug、看/写注释、查阅资料。
Debug,相信每个学习编程的同学都知道它的重要性。C++之父说过:“我们估计在开发正式软件时,90%以上的工作是放在如何避免、查找和纠正错误上。”而Debug过程中显示的错误信息,就不像C++的关键字那样都是小学水平的英文词汇了,其无论从词汇还是语法上来看,对编程者的英语水平要求都比较高。很多初学编程的同学,写完程序一跑,编译器一报错,就傻了,因为完全看不懂报错的信息,只能够红色知道是哪一行报错了。然后就只能单步调试、上网查报错信息或者问其他人,这三种无论是哪一种都无疑是效率极其低下的Debug方式。但是如果你能直接看懂报错的信息呢?相信你的编程效率会立马高到不知道哪里去了。我也相信,能看懂编译器的报错信息,是学好甚至学会编程的第一步。
看/写注释,这个也许初学者接触得并不多,甚至某些CS(Computer Sience)方向的同学也会接触的不多。但是如果在编程的路上一直走下去的话,看/写注释几乎是日常必须要做的事。首先规范的代码是要求在程序的关键处写上注释,以及在程序开头写上程序作用、程序版本变更等等信息,如果用心去做,其难度并不亚于一篇英语作文。此外,编程的时候,你也可能需要阅读大量注释。所以,这也对编程者的英语水平有一定要求。
查阅资料,新学一门语言、掌握一个算法甚至安装一个图形类库都需要查阅资料甚至阅读文献。而有时候,好的资料往往是全英文的,或者这个领域暂时没有中文书籍和资料,你能找到的,只有几十本几百页的英文书。在编程的学习过程中,这个现象是很常见的。相信自学过iOS开发的同学都深有体会。
综上,我以为,英语不好的人是学不好编程的。
其次,来说说数学。
编程某种意义上来说就是用电脑来做数学题,因为关于这一点曾经看到过一个很棒的答案@涛吴,我就直接引用了:
马里奥碰到花朵就变身。
什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有。什么是花?一个 16 × 16 的正方形。什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色。什么是褐色?暂且说它是 0x887000 这个数字。什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠。什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 256 × 240 个小色块的矩形)中 X 方向 101 到 116、Y 方向 21 到 52 之间的区域,那么只要这个区域内有一点或更多点也被花朵所占据(比如花朵处在 X 116 到 131、Y 21 到 36 之间的区域内),我们就认为两者有所重叠。
若给定以八个数值代表的两个矩形区域,请写出判断两个区域是否有重叠的 C 语言程序。如果你能写出来,那么祝贺你,如果有朝一日你想自己做一遍 NES 版本的《超级马里奥》,你至少知道让他变身需要做什么了。
是的,C 语言也许「只能」做数学题。可是,绝大多数游戏的运行过程就是不停地做数学题,而所谓编写游戏,也就是把游戏的规则和游戏的效果转化为数学题而已。其中不少题目电脑都已经知道怎么解——是别的程序员事先告诉它的——比如「求一堆散落在三维直角座标系之中的多面体在 8(x−3)−10(y+1)−11(z−1)=0 这个平面上一个给定范围内的投影」或者「给定一些彼此相连的顶点,求任意两点之间的最短路径」之类的数学题,它只需要千万分之一秒就能给你解好。这种能力有什么用?电脑上 FPS 游戏的本质活动就是不停地求三维座标系下的多面体经过变换之后在二维平面上的投影,不停地判断两个多面体是否彼此重叠,以及不停地寻找两个顶点之间的最短路径,最终达到让怪物冲到你面前咬你一口的目的。不止游戏如此,其他软件也都差不多,每一个细节都是某种数学题——比如知乎页面顶端的蓝色导航条背景,就是 CSS 描述的一个浅蓝到深蓝的渐变——渐变是怎么回事呢?给出两个数字分别代表两种颜色,以及第三个数字代表一段距离,求一系列颜色的数值以及次序,使得这段距离中两种相邻颜色之间的变化最小。数学题。别说 C 语言,一切编程语言最终都只能做数学题,根据给定的数据,算出另一些数据,算出更多的数据,然后存贮、发送或者呈现算出的数据。
传送门:学会了 C 语言真的可以开发出很多东西吗? - 涛吴的回答
所以在我看来,数学是编程的本质,而英语则是研究任何一门学问必须要掌握的技能。英语和数学不好的人是不是学不好编程?是的。
我坚信学编程可以提高英语和数学能力
编程门槛不高,但最终英语和数学是最大的瓶颈。
完全不能这么说吧,我和楼主一样算是失足青年,我玩电脑要早两年,但是那会一直没碰过编程,后来看了一下c语言,是谭浩强第三版,数学问题不是很多的蓝色的那本,我觉得写的很不错,几遍没什么英文单词,数学也用到的少,所以对于入门来说数学楼主可以放心了,只有遇到一些底层的小算法的时候可能用到数学,比如十进制转换二进制,多理解几遍也就可以了,如果不会也不影响楼主的学习,那是一个循环的练习中会碰到的问题而已,至于英语我的英语就很差,虽然是本科,但是我英语一路水过来的,编程中遇到的英语也有很多属于cet6或者是gre中的,我一般都是有道词典现查询,就是遇到什么学习什么,所以希望楼主不要被挫败了,毕竟我们不是天才,纵观当下很多算是高薪的开发人员,大家英语其实不是都那么好的,但是照样10k什么的拿,混得是项目经验和机遇,比如安卓开发,虽然饱和但是也紧缺!我哥们高中没上依旧10k,不要被大家人云亦云的说法吓到了,只要坚持,你的智商也不比别人差不是么?只是缺少努力和经历?
至于往高处发展数计不分家,这句话楼主一定有闻吧,一定会遇到数学的,英语好可以看很多外国文献,但这不代表英语不好你就无法编程,10k的工作都有可能在玩框架和项目经验,单词不认识一个记一个,你还在担心什么,先月薪10k了,再去考虑其他的事情,诸如此类我英语不好,数学不好怎么办。。你又不是搞图像和游戏,对数学要很透彻,说了这么多就是希望传达给楼主一个概念,学吧,不打紧,我们的近期目标还不会被这些问题所挫败,不是么?
欢迎大家拍砖,我哪里说的不对?