我們都是程序員,我們都是學(xué)習(xí)者。令人驚訝的是,有多少人(學(xué)習(xí)者)以為正在學(xué)習(xí)編程而把頭撞墻。 你可能正在學(xué)習(xí)一種編程語言,而不是自己編程
知道計(jì)算機(jī)科學(xué)不學(xué)習(xí)計(jì)算機(jī),不要感到驚訝。相反,它是使用計(jì)算機(jī)來自動(dòng)解決問題的研究。解決問題是計(jì)算機(jī)科學(xué),而不是編程。這就是為什么許多計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生似乎不理解為什么他們學(xué)習(xí)算法或數(shù)學(xué)的原因。 如果你以前去過計(jì)算機(jī)科學(xué)課,那么我在這里所說的話不會(huì)讓你感到驚訝。因?yàn)槟銜?huì)注意到編程與編程語言幾乎沒有關(guān)系。問問自己,為什么偽代碼在這些類中如此常見。 但是,大多數(shù)有思想的程序員總是會(huì)陷入陷阱。我們學(xué)習(xí)編程語言已有數(shù)十年的時(shí)間,然后才意識(shí)到自己真正需要做的事情:編程。我本人就是受害者。 我花了十多年的時(shí)間來學(xué)習(xí)各種編程語言。我學(xué)得越多,構(gòu)建簡單的東西就越困難。我有種找不到合適工具的感覺。但是,問題是,當(dāng)我什至不知道要做什么時(shí),我忘記了尋找合適的工作來代替合適的工具。 編程語言的奇怪之處在于它們總是在發(fā)展。編程語言幾乎每天都在變化。跟進(jìn)非常困難。而且大多數(shù)好的程序僅使用編程語言的一小部分。 首先學(xué)習(xí)編程語言的問題就像在學(xué)習(xí)木工之前學(xué)習(xí)如何使用木工鋸,錘子和各種切割機(jī)。木工需要注意:想法,可行性分析,度量,測(cè)試,客戶行為。 老板木匠會(huì)比錘子和釘子更感興趣。在對(duì)工作進(jìn)行科學(xué)研究期間,他還將花費(fèi)時(shí)間檢查指甲,著色劑,木材等的質(zhì)量。 學(xué)習(xí)編程和學(xué)習(xí)編程語言有什么區(qū)別? “編程”通過僅給出一次指令來使系統(tǒng)自由運(yùn)行。我們每天都要這樣做。我們教我們的孩子,我們的士兵,我們的客戶。
我們給他們或我們收到指示,要求他們自由/獨(dú)立地生活在給定的方式中。你的父母不需要跟隨你并指導(dǎo)你生活中的每一步。他們已經(jīng)在生活的許多方面為你編程。 大多數(shù)學(xué)校和教育網(wǎng)站都會(huì)教授編程語言的語法。他們可以添加一些設(shè)計(jì)模式(而你忽略了確切的設(shè)計(jì)),一些算術(shù)計(jì)算,如何聲明變量以及如何使用它們,數(shù)據(jù)類型以及如何聲明/創(chuàng)建它們。 這不會(huì)教你推理。使用這種方法,你將發(fā)現(xiàn)推理方法,但是稍后。這會(huì)讓你感到浪費(fèi),或者花費(fèi)大量時(shí)間學(xué)習(xí)編程。 我們用編程來解決問題,而編程語言是幫助我們做到這一點(diǎn)的工具。 它們就像工具箱。我們稱它們?yōu)榭蚣?。他們可以幫助你整理想法?/p> 如果你正在學(xué)習(xí)編程,但仍無法計(jì)劃和編寫實(shí)際的應(yīng)用程序,則意味著你要比編程學(xué)習(xí)更多有關(guān)編程語言的知識(shí)。 我們會(huì)見多少人(學(xué)習(xí)者),他們?nèi)匀幌胫廊绾蝿?chuàng)建程序。對(duì)于程序員來說,程序是一個(gè)需要解決的問題。在涉及任何編程語言之前,他都通過批判性分析解決了這一問題。 解決任何問題時(shí),都可以使用任何編程語言進(jìn)行編碼。讓我們以正方形為例。為了平方某物,我們自己對(duì)其進(jìn)行計(jì)時(shí)。我們可以用多種語言來實(shí)現(xiàn)它,例如: 在C中 functionsquare(int * x){returnx * x;} 在PHP中 functionsquare($x){return$x*$x;} 用JavaScript functionsquare(x){returnx * x} 計(jì)劃中(Lisp方言) (define(squarex)(*x x)) 你會(huì)注意到,只有語法在實(shí)現(xiàn)中很重要。解決方法是相同的。這就是為什么你幾乎可以使用任何你更愿意構(gòu)建任何類型的軟件的編程語言的主要原因之一。
通過編程發(fā)現(xiàn)一種語言更容易 問題通常是人類語言。人類語言充滿局限和錯(cuò)誤。因?yàn)闄C(jī)器感覺不到,所以無法用來指導(dǎo)機(jī)器。 在學(xué)習(xí)編程時(shí),你將學(xué)習(xí)新的術(shù)語和新工具,以計(jì)算機(jī)或其他程序員可以理解并達(dá)成共識(shí)的方式幫助你編寫邏輯。 通常,你將從一個(gè)簡單的類似于人類語言的符號(hào)偽代碼開始。它是從人類語言到計(jì)算機(jī)編程語言的很好的過渡工具。通常這樣做是為了防止你在語言上浪費(fèi)時(shí)間。 這樣,你就可以完全專注于推理。通過這些,你將發(fā)現(xiàn)構(gòu)成良好編程工具(語言)的核心部分。你了解確切需要什么。 你了解編程語言的核心目標(biāo)。這樣一來,你就可以學(xué)習(xí)它,而無需知道自己何時(shí)完成。 |
|