自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員如何選擇入門編程語(yǔ)言?

原創(chuàng)
開發(fā) 開發(fā)工具 新聞
Scheme可能是“最好”的學(xué)習(xí)編程的方式,但可以等到大學(xué)里去教。在這樣一個(gè)年紀(jì),我認(rèn)為鼓勵(lì)學(xué)生發(fā)展天生的好奇心和熱情更為重要,這可能會(huì)造就出一位真正出色的程序員。如果這意味著在Visual Basic中編碼,那也沒問題。Scheme可以稍后。

【51CTO.com快譯自7月28日外電頭條】有一天,我的朋友Ned的表弟問他,對(duì)于一個(gè)想做程序員的人來(lái)說(shuō),從哪門語(yǔ)言入手***?他的表弟并沒有太多的編程經(jīng)驗(yàn),但15歲的年紀(jì),未來(lái)實(shí)際上也快得很,他似乎對(duì)編程很感興趣,希望這門語(yǔ)言可以給他打開編程世界的大門。“所以很自然的,”Ned解釋說(shuō),“我告訴他,去學(xué)習(xí)Scheme?!?/P>

嗯?!Scheme?既然Ned打開了類似于“哪種編程語(yǔ)言是***的”這樣的話題,看上去我們一定會(huì)陷進(jìn)沒完沒了的爭(zhēng)論中去。有人可能說(shuō)是Perl,別人會(huì)說(shuō)C++,而估計(jì)有三分之一的人會(huì)推薦Visual Basic,他們會(huì)不停的爭(zhēng)論,從51CTO.com每月一期的編程語(yǔ)言排行榜來(lái)看,似乎每種語(yǔ)言都有自己的支持者和反對(duì)者,在***一期的榜單中,使用率***的Java也遭到了人們的質(zhì)疑(詳細(xì)請(qǐng)參考7月編程語(yǔ)言排行榜:Java,正在老去的王者)。從口水上升到磚頭。但選擇Scheme?這我倒沒預(yù)料到。

Scheme:編程語(yǔ)言中的拉丁語(yǔ)?

請(qǐng)注意,Ned并不孤單。許多著名的大學(xué)在***年的計(jì)算機(jī)科學(xué)課程里都有Scheme。在實(shí)際的工作中也有許多人需要它。事實(shí)上,我敢說(shuō),如果你的大學(xué)只設(shè)立了C++或者Java的課程,你的學(xué)??赡懿徽Φ?,但如果你們學(xué)校有Scheme的課程,那很可能你幸運(yùn)的去了一個(gè)***的學(xué)校。

Scheme是Lisp語(yǔ)言的一個(gè)分支,它是現(xiàn)今仍然在使用的最古老的編程語(yǔ)言之一。它提供了最少的語(yǔ)法和極少幾個(gè)操作符。同樣重要的是,Scheme支持函數(shù)式編程范式,這意味著它可以用數(shù)學(xué)函數(shù)表達(dá)式來(lái)編程。任何計(jì)算問題都可以使用稱為蘭布達(dá)演算的獨(dú)特?cái)?shù)學(xué)符號(hào)來(lái)表達(dá),從某種意義上說(shuō),Scheme算是一個(gè)蘭布達(dá)演算的解析器。

對(duì)于學(xué)生來(lái)說(shuō),這意味著Scheme可以讓你專注于算法本身,而不是語(yǔ)言的語(yǔ)法。主流的編程語(yǔ)言如Java和C++等都有著極其復(fù)雜的語(yǔ)法,這往往是由于語(yǔ)言在演變過程中不斷增加的新功能帶來(lái)的。它們迫使你學(xué)習(xí)許多種不同的控制結(jié)構(gòu)和處理不同問題的不同方法。但Scheme不是這樣,它為每個(gè)計(jì)算問題提供同樣的簡(jiǎn)潔而可預(yù)見的語(yǔ)法。“我感覺Scheme在給電腦下指令時(shí)更自然,相對(duì)于其他語(yǔ)言,”Ned說(shuō)。

不過,Scheme?我無(wú)法看到它的優(yōu)勢(shì)。為今后的編程學(xué)習(xí)打下簡(jiǎn)單而堅(jiān)實(shí)的基礎(chǔ)確實(shí)很好,但是當(dāng)我15歲時(shí),我對(duì)真正的邏輯和數(shù)學(xué)沒有什么興趣。我著迷的只是怎樣讓電腦完成各種各樣好玩的工作——我要很遺憾地說(shuō),“執(zhí)行蘭布達(dá)演算的算法”,沒意思;而編個(gè)視頻游戲?很酷。

當(dāng)然,除了運(yùn)行算術(shù)題,你也可以讓Scheme做更多。今天,它已經(jīng)是一個(gè)正式的語(yǔ)言,可以在幾乎所有平臺(tái)上運(yùn)行。
但是,我對(duì)Scheme***的懷疑仍然是,它本質(zhì)上是一個(gè)只寫的語(yǔ)言。一個(gè)程序看起來(lái)非常像另一個(gè)。它的語(yǔ)法很簡(jiǎn)單,但副作用是你必須要讀懂源代碼才知道Scheme想要做什么。這使Scheme成為一門良好的教學(xué)編程語(yǔ)言,但對(duì)于一個(gè)15歲,對(duì)計(jì)算機(jī)能做什么非常好奇的孩子,Scheme是糟糕的。

軟件工程的現(xiàn)狀

不錯(cuò),有些人會(huì)說(shuō),我們不需要那么多黑客,需要的是更多受過訓(xùn)練的軟件工程師;從Windows SDK入手學(xué)習(xí)編程,被漂亮的用戶界面吸引只會(huì)導(dǎo)致壞習(xí)慣;還有不理解基礎(chǔ)算法的程序員算不上好程序員——我自己就說(shuō)過很多次。

可是 “軟件工程”的概念到底是什么呢?它是否真的算是工程學(xué)呢?也許不是,大西洋系統(tǒng)行會(huì)(Atlantic Systems Guild)會(huì)長(zhǎng)Tom De Marco說(shuō)。“軟件開發(fā)在本質(zhì)上不同于自然科學(xué)比如物理,它的特性注定了無(wú)法非常準(zhǔn)確的捕捉到所描述的東西,”這是De Marco在***一期IEEE軟件雜志上發(fā)表的文章?!败浖_發(fā)在某種程度是而且永遠(yuǎn)是一種實(shí)驗(yàn)。實(shí)際的軟件建設(shè)雖然不一定是實(shí)驗(yàn),但它在概念上還是實(shí)驗(yàn)?!?/P>

換言之,編程是藝術(shù)的科學(xué),無(wú)論程序員多么精通于實(shí)踐。創(chuàng)造有效的軟件解決方案需要洞察力、靈感、大膽,并經(jīng)常要有些運(yùn)氣。當(dāng)然,有好的程序員和不好的程序員——但要把軟件開發(fā)和土木工程畫上等號(hào)是件愚蠢的事。正如Jeff Atwood所說(shuō)的那樣,“我們做的是工藝,不是工程。”

如果單純從軟件工程和專業(yè)性角度解答程序員如何選擇合適的編程語(yǔ)言,那我們必須考慮具體的需求和應(yīng)用場(chǎng)景,是做Web開發(fā)還是桌面端開發(fā)?是做前端還是服務(wù)端編程?這樣看來(lái)你講面對(duì)PHP、C++或者XML或者C語(yǔ)言之類的選擇。在51CTO.com與Windows教父一次關(guān)于未來(lái)編程語(yǔ)言的發(fā)展方向的對(duì)話中,Jeffrey提到了編程語(yǔ)言將向自動(dòng)化和智能化發(fā)展,但這并不意味著我們不需要一些基本的編程邏輯和思考的訓(xùn)練,編程語(yǔ)言可以讓我們控制硬件,但程序卻需要程序員來(lái)控制。

因此,15歲,我想說(shuō),Scheme可能是“***”的學(xué)習(xí)編程的方式,但可以等到大學(xué)里去教。在這樣一個(gè)年紀(jì),我認(rèn)為鼓勵(lì)學(xué)生發(fā)展天生的好奇心和熱情更為重要,這可能會(huì)造就出一位真正出色的程序員。如果這意味著在Visual Basic中編碼,那也沒問題。Scheme可以稍后。

***,我還是直說(shuō)了吧,我建議的***門編程語(yǔ)言是Python,現(xiàn)在讓磚頭飛過來(lái)吧!

投票調(diào)查

您的***門編程語(yǔ)言是什么?
C語(yǔ)言
C++
Java
Pascal
BASIC
其他

您認(rèn)為哪種編程語(yǔ)言最適合入門學(xué)習(xí)?
C語(yǔ)言
Java
Ruby
Python
PHP

【更多關(guān)于編程語(yǔ)言的討論】

  1. 程序員如何選擇合適的編程語(yǔ)言
  2. 詳談學(xué)習(xí)編程語(yǔ)言的策略
  3. 對(duì)話Windows教父:未來(lái)編程語(yǔ)言的發(fā)展方向
  4. Java以外的選擇 Scala編程語(yǔ)言簡(jiǎn)介
  5. 教你如何有效編程的十四種方法

【51CTO.com譯稿,非經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載。合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com,且不得修改原文內(nèi)容?!?

原文:What's the best first language for a programmer?      作者:Neil McAllister

責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2009-02-27 09:25:28

編程語(yǔ)言程序員C#

2009-03-02 09:40:13

程序員程序語(yǔ)言開發(fā)

2017-12-06 08:01:52

程序員編程代碼

2021-10-26 16:25:25

編程語(yǔ)言JavaPython

2013-12-30 10:08:13

2015-02-03 02:40:33

程序員盲人程序員

2010-03-22 09:32:42

自學(xué)編程

2015-03-20 10:40:29

程序員程序員如何開始如何入門

2015-05-19 14:34:17

程序員編程語(yǔ)言

2013-08-23 11:06:34

編程語(yǔ)言

2015-06-10 10:43:07

2013-05-30 13:30:00

代碼效率程序員

2012-08-30 10:05:40

編程編程語(yǔ)言程序員

2018-07-06 15:25:50

程序員編程python

2013-11-14 10:05:25

程序員職業(yè)轉(zhuǎn)型

2012-08-07 09:29:09

程序員編程

2015-07-14 10:21:58

2009-05-13 11:40:19

編程語(yǔ)言開發(fā)語(yǔ)言Perl

2015-10-28 09:33:31

程序員崩潰編程語(yǔ)言

2022-05-23 07:56:19

語(yǔ)言DSLClojure
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)