程序設計:計算機心理學

我們都認為自己與編程密切相關,無論是作為用戶、管理員還是程序員本身,但最終隨著時間的推移,編程將與我們的生活更加緊密地聯繫在一起。

在本文中 (我打算創作的一個小系列的開始),我想與大家分享一些我多年來發現的有關編程的概念。 我並不是想講高深的技術,稍後我會解釋原因。 但我真正的目的是讓他們用我的眼睛看世界,如果他們喜歡它的樣子,那就讓他們深入研究一下 🙂

在討論細節之前,我將首先討論最簡單的一點。

我為什麼不去做技術崗位呢?

好吧,對於那些讀過我的文章的人來說 最好的Linux命令,你就會稍微了解一下這個焦點的起因。 技術總是在變化,如果我今天寫了一些東西,如果該帖子受到好評,那麼我將始終需要更新信息。 在當今最常見的語言中,唯一確定的就是變化。 我的意思是(程序員會告訴我原因)框架總是從其核心開始成長和變化,這是因為錯誤的出現,有些可以認為是簡單的 錯誤,而其他人可能會成為 漏洞。 這就是為什麼今天寫一篇關於特定語言的文章可以保證我可能有用幾個月,最好的情況是一兩年,但這不是我的想法 🙂

電很重要

那些對較低級軟件編程語言進行過一些研究的人會知道,這一切都可以追溯到電力。 過去,編程是在硬件層面完成的,這意味著那些老式的手錶、計算器和許多其他設備都可以通過編程來完成它們的命運。 硬件.

問題

更改硬件編程既昂貴又復雜 🙂 (至少他們是這麼告訴我的 🙂 )。 這就是處理器出現的原因,它實際上抽象了硬件層,為我們提供了一些命令,使我們能夠完成硬件所能做的一切,只是現在在硬件層 軟件。

處理器

當今的處理器具有有限數量的功能,稱為 說明 在很多書中。 這些允許硬件執行最基本的功能,並通過設備的內存調動信息。

寄存器

寄存器是處理器存儲能夠在內核中執行工作的信息的空間,根據體系結構,它們可以具有不同的大小和順序,但簡單地說,它們的功能是存儲向處理器指示以下類型工作之一的數據: 移動數據、算術和邏輯以及控制 流動。 一切都可以概括為這些類型的功能。

Binario

處理器在二進制級別工作,這意味著它們只能理解 0sy 1s 🙂 。 這裡有一個奇怪的事實😀您還記得 GNU/Linux 權限嗎? 出色地, 您是否想知道處理器實際上如何識別這些權限?? 簡單 🙂 二進制。 在最低級別,處理器會將權限理解為 0 和 1 的序列,這就是我們形成的八進制具有以下值的原因 為了執行, 2 閱讀 4 個,寫作 XNUMX 個。 對於那些知道如何讀取二進制的人來說,你會明白:

111100101111

設置組的讀、寫、執行權限 他人 同時為組執行和讀取  並且對於文件所有者來說是只讀的。 對於最好奇的人來說,最後三個 1 激活 setguid, setuid Y EL sticky bit。 如果你不知道這個二進製文件是什麼,我可以在另一篇文章中解釋它,如果你不知道 setuid、setgid 和粘性位,那麼我將把它留給你做家庭作業😉,但如果有必要,我也可以在其他地方解釋它。

當好奇心呼喚...

好吧,如果你跟著我來到這裡,那麼你的好奇心應該開始問你很多問題,我想回答的第一個問題(也許是這篇文章允許我做的唯一一個,因為我已經寫了很多)是: 如果調用相同,為什麼程序如此不同?

心理學

編程是學習讀心術的藝術 🙂 我想用我很久以前讀過的一句話開始本節,Edsger Dijkstra 說:

如果說調試是消除bug的過程,那麼編程一定就是引入bug的過程。

我找不到更好的方法來解釋這一切 🙂 為什麼編程是引入錯誤的藝術? 此時不止一個人會感到好奇。 答案很簡單,因為我們的思想是人類,人類也會犯錯誤,這是我們的本性,只要人類存在於地球上,錯誤就會存在。

計算機不會犯錯誤

犯錯誤的是我們,團隊總是限制自己複製我們告訴他們的內容,他們不假設任何事情,他們不解釋任何事情,他們不反對任何事情,他們只是閱讀和行動。 這就是為什麼我在另一本 C 書中讀到過這樣的內容:

C 是一種粗糙的語言,你可以用它做很多事情,但如果你願意,或者你告訴它,它永遠不會阻止你搬起石頭砸自己的腳。

這是一個非常奇怪的事實 🙂 因為當在如此低的級別上工作時,執行的許多操作可能具有破壞性,而使用稍高級的語言就不會發生這種情況,因為錯誤預防層更大。

一切都是心理學

每一種語言、框架、程序員,都尊重並遵循某種哲學,如果不這樣做,那麼它就沒有一個非常有前途的未來。 我們這些從事 UNIX 及其衍生產品工作的人可能都知道這句老話:

做一件事,並且做得很好。

這種哲學是一些項目(例如內核)所遵循的,相當小的函數只做一件事,但它們盡其所能。

如果我們使用其他語言,每種語言都會有其功能和目標,有些更寬鬆,有些更嚴格,但都遵循自己的思維方式。

學會讀心

程序員中有一個相當普遍的說法,它說解決同一問題有數百種方法。 這是事實,但是這方面還有更深層次的內容。 閱讀源代碼可以讓你讀懂思想 🙂 不僅僅是任何思想,而是編寫它的程序員(或程序員)的思想。 這是一種深入的虛擬日記 🙂 它可以讓您深入了解開發人員的想法,並且在項目廣泛的情況下,它可以讓您看到他們的邏輯和批判性思維如何隨著時間的推移而增長。 一些非凡的東西可以極大地滋養年輕人的思想,因為你可以知道那些必鬚髮現它們的人的最佳路徑🙂

保持一致

許多程序員和專家說我們必須擺脫我們的束縛 舒適區,雖然這是事實,但維持某些流程和格式也是不必要的。 這個解釋起來很簡單,我們的思維是重複的,尊重結構,如果你每天都用同樣的方式寫代碼,很快你就會停止思考形式,你就能專注於 背景。 這使您可以看到 邏輯 的程序而不是 語言語法。 這就是為什麼我相信學習 概念 永遠比學習更重要 表格。 這是個人觀點,但我希望在閱讀完所有這些內容後,您能夠理解為什麼我這樣認為 🙂 除此之外,必須使用 C、Java、Javascript、Python、Ruby、PHP 和其他語言進行編程的人會告訴您 🙂 了解這些概念可以更輕鬆地編寫代碼。

總之

好吧,這是我希望能夠幫助您以不同的方式思考編程藝術的系列中的第一步,甚至邀請您深入研究執行代碼的概念,您已經編寫了數百次,但從未停下來思考它實際上做了什麼。 對於那些還沒有開始編程,但希望能夠優先考慮真正重要的事情的人 🙂 問候


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   哈維爾·德爾加多 他說:

    這是一篇非常有意識的文章,其中討論了編程(在本例中),也許是用一種更深入編程的新語言,我的支持如下。

    1.    克里斯·阿德 他說:

      你好哈維爾,非常感謝你 🙂 我認為這非常重要,因為他們一直只想教我如何重現代碼,著名的 Ctrl+C…Ctrl+V 🙂 但我從來沒有被這個沖昏頭腦,即使這是世界上最簡單的問題,我更喜歡自己寫它而不是從別人那裡複製它,這讓我覺得這是我的創造。
      問候

  2.   巴魯阿 他說:

    已經在等待下一章了,我早就停止編程了,我想我可以在後面的章節中為我的決定找到一些理由,真的,從這一章我脫帽致敬。

  3.   克里斯·阿德 他說:

    你好巴魯亞🙂
    好吧,我會為下一篇想出一些東西。 以這樣的方式訂購所有內容有點複雜,您可以從任何帖子中跟踪該線程,但我會嘗試盡快完成此操作(以及已請求的其他幾個操作)。 謝謝你的評論。 問候

  4.   安德斯 他說:

    一篇精彩的文章!我期待下一篇……