内容来源:作者 | 荣荣乐园,链接 | https://www.jianshu.com/p/fe1da52da085
阅读字数:2159 | 6分钟阅读
摘要
很多人开始学编程的时候都会有一个疑惑,我到底该学什么编程语言?
对于该学什么编程语言,初学者参考的依据要么来自“砖家”、要么是来自热门语言排行榜、要么是来自薪资排行榜等。殊途同归,所有的人都会给出他们的依据和这样做的利弊。
如果说一开始这样还可以理解,但是我们发现很多软件工程师、或者计算机专业毕业的人、甚至是从事软件研发工作的人每隔一段时间都会来这么一次内心挣扎的过程(那些靠一门语言就像混到退休的人除外)。
编程语言该怎么选
随着人工智能越来越火,很多人开始意识到编程的重要性,也想要找到好的入门秘籍。针对这一问题,我给大家普及下——编程语言要怎么选。
其实很多学计算机和编程的人不懂什么是编程,编程也没有你们想象的这么深奥,编程的基础其实是计算模型(这个我们以后会将,如图灵机、递归论、Lambda演算等)当然还有细胞自动机。。。
如果你说不懂计算模型,那你是学不懂编程的。因为编程依赖计算模型。而且编程和编程过程又是两个截然不同的东西。编程体现的是一个概念,而编程的过程体现的是一个动态的寻找解的过程。
编程的过程其实也是思维活动的过程,所以编程活动本身要训练的是人的思维过程。它会间接影响一个人的思维模式。
所以学编程最终的目的,一个是学会编程的技能(这个是大多数人学编程的目的);但是最重要的其实是学会用一种新的思维方式来分析问题、解决问题。
人类改造自然的基本过程也是人类文明发展的必然结果,而人类改造自然的基本过程是建立在人类这个种族利用已有的知识结构,对现实世界进行建模并且用人脑特有的计算模型去推演,最终执行反馈到现实世界从而改造自然,创造出人类璀璨的文明形态。这个和编程的过程是不谋而合。
举个栗子
我通过分享一个例子解释下前面那些话的意思:
冒泡排序(Bubble Sort):作为计算机算法里面最简单的排序算法(该算法的时间复杂度是O(n²)属于稳定排序算法)
这个算法的描述:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误,就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
原理如下:
这个算法涉及到两个基本过程(遍历其实也可以叫递归、条件)
人类语言编程
我们先用人类的语言来编程
如何把一个队伍按照从低到高排列(你要按照高到低也是可以的)?
然后你就得到了一个从低到高排列的队伍,时间最短而且不需要一个人站出来指挥排队的过程。
其实这个问题你不用学任何算法也不用懂任何排序你都可以做到,区别就是如果你学过编程那你会找到最快的方式做到这一点。
接下来我们展示下计算机语言是如何做到的
Python3
C语言
汇编
Scratch(少儿编程图形化编程)
当然还有其它的语言实现,编程语言千千万万。但是万变不离其宗。
这几种编程语言的实现版本都用到了一种数据抽象:列表(一队人)还有两个基本过程:条件、循环(遍历)无论你使用哪种语言来实现,最终你都需要借助这三个概念。也就是说你要学会的其实是学会对问题建模,把执行这个问题的步骤编写成算法,算法就是你思考的过程。
虽然有很多问题不会编程也可以解决,但是编程要教会你的就是用最高效的方式。
讲以上呢,就是希望对哪些还在纠结学什么编程语言的人一些启发。不管你选择什么编程语言,本质还是一样的,不同的是背后的语法、语义。当然如果是做项目,编程语言的选择还要看团队的因素、团队运作成本、培训成本、以及所涉及的业务领域和业务模型、对已有库的依赖等很多因素。
以上为今天的分享内容,谢谢大家!
IT大咖说 | 关于版权
由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!
感谢您对IT大咖说的热心支持!