Програмиране: Психологията на компютрите

Всички ние сме тясно свързани с програмирането, било то като потребител, като администратор, като самия програмист, но в крайна сметка това е нещо, което ще бъде по-свързано с живота ни с течение на годините.

В тази статия (началото на малка поредица, която смятам да създам), Искам да споделя с вас няколко концепции за това, което открих за програмирането през годините. Не твърдя, че съм прекалено техничен, ще обясня защо по-късно. Но това, което възнамерявам, е да ги накарам да видят света с очите ми и ако им харесва начина, по който изглежда, нека ги задълбаят малко 🙂

Първо ще атакувам най-простата точка от всички, преди да вляза в подробности.

Защо няма да направя технически пост?

Е, за тези, които са прочели моя пост за най-добрата Linux команда, ще знаете малко за причината за този фокус. Технологиите винаги се променят и ако напиша нещо днес, ако публикацията е добре приета, тогава винаги ще трябва да актуализирам информацията. В най-често срещаните езици днес единственото сигурно нещо е промяната. С това имам предвид (и програмистите могат да докажат, че съм прав) рамките винаги растат и се модифицират от техните ядра, това е така, защото възникват грешки, някои могат да се считат за прости буболечки, докато други могат да станат уязвимости. Това е причината, поради която днес писането на публикация за конкретен език би ми гарантирало може би няколко месеца полезност, в най-добрия случай една или две години, но не това е идеята

Електричеството е важно

Тези от вас, които са направили малко изследвания върху най-ниските езици за програмиране на софтуера, ще знаят, че всичко датира от електричеството. В миналото програмирането се извършваше на хардуерно ниво, това означава, че тези стари часовници, калкулатори и много други устройства могат да изпълнят съдбата си чрез програмиране от железария.

Проблемът

Промяната на хардуерното програмиране е скъпа и сложна 🙂 (поне така ми казаха 🙂 ). Ето защо се появиха процесори, които всъщност абстрахират този хардуерен слой, за да ни дадат няколко команди, за да можем да направим всичко, което е възможно чрез хардуер, едва сега в хардуерния слой. софтуер.

Процесори

Днешните процесори имат ограничен брой функции, т.нар инструкции в много книги. Те ви позволяват да изпълнявате най-основните функции, които хардуерът може да изпълнява, и да мобилизирате информация чрез паметта на компютъра.

регистри

Регистрите са пространство, в което процесорът съхранява информация, за да може да извършва работа по ядрото, в зависимост от архитектурата те могат да имат различен размер и ред, но по прост начин, тяхната функция е да съхраняват данни, които казват на процесора един от следните видове работа: преместване на данни, аритметика и логика и контрол на поток. Всичко може да бъде обобщено в тези видове функционалности.

Binario

Процесорите работят на двоично ниво, това означава, че те разбират само 0sy 1да 🙂. Любопитен факт тук 😀помните ли разрешенията за GNU / Linux? добре, замисляли ли сте се как всъщност процесорът разпознава тези разрешения? Обикновено 🙂 двоично. На най-ниското ниво процесорът ще разбира разрешенията като последователност от 0s и 1s и това е причината осма, която формираме, да има стойностите за изпълнение, 2 за четене и 4 за писане. За тези, които могат да четат двоичен файл, те ще разберат, че:

111100101111

Те поставят разрешенията за четене, запис и изпълнение на групата otros докато изпълнява и чете за групата група и четете само за собственика на файла. За най-любопитните последните три 1 активират setguid, setuid и sticky bit. Ако не знаете какво представлява този двоичен файл, мога да го обясня в друга публикация, ако не знаете това за setuid, setgid и лепкавия бит, ще го оставя на вас 😉, но мога да го обясня и на друго място, ако е необходимо.

Когато любопитството се обади ...

Е, ако сте ме последвали тук, тогава вашето любопитство трябва да започне да задава много неща, първото, на което искам да отговоря (и може би единственото, което този пост ще ми позволи, защото вече пиша много), е: Ако разговорите са еднакви, защо програмите са толкова различни?

Психология

Програмирането е изкуството да се научиш да четеш мислите 🙂 Искам да започна този раздел с цитат, който прочетох отдавна, Edsger Dijkstra каза:

Ако отстраняването на грешки е процесът на отстраняване на грешки, тогава програмирането трябва да бъде процесът на въвеждането им

И не мога да намеря по-добър начин да обясня всичко това 🙂 защо програмирането е изкуството да се въвеждат грешки? повече от един ще се чудят в този момент. Отговорът е прост, тъй като съзнанието ни е човешко и хората правят грешки - това е в нашата природа и ще бъде, докато човек съществува на планетата.

Компютрите не грешат

Ние сме тези, които допускаме грешки, екипите винаги ще се ограничават до възпроизвеждане на това, което им казваме, те не предполагат нищо, не интерпретират нищо, не възразяват срещу нищо, просто четат и действат. Така че в друга книга на C някога съм чел нещо подобно:

C е груб език, можете да направите много с него, но никога няма да ви попречи да си стреляте в крака, ако искате да го направите, или поне така кажете.

Това е доста любопитна истина 🙂 Тъй като при работа на толкова ниско ниво е възможно много операции, които се извършват, да бъдат разрушителни, нещо, което не се случва с малко по-високо ниво езици, тъй като слоевете за предотвратяване на грешки те са по-възрастни.

Всичко е психология

Всеки език, рамка, програмист, уважава и следва някаква философия, а ако не го направи, няма много обещаващо бъдеще. Тези от нас, които работят върху UNIX и производни, вероятно ще знаят старата фраза:

Направете едно нещо и то много добре.

Тази философия е последвана от някои проекти като ядрото, доста малки функции, които правят само едно нещо, но правят най-доброто, което могат.

Ако отидем на други езици, всеки от тях ще има функция и цел, някои по-разрешителни, а други по-ограничителни, но всички следват своя собствен начин на мислене.

Научете се да четете мисли

Съществува доста често срещана поговорка сред програмистите, че има стотици начини за решаване на един и същ проблем. Това е вярно, но има нещо много по-дълбоко в този аспект. Четенето на изходния код ви позволява да четете мисли - не просто всякакви мисли, а мислите на програмиста (или програмистите), който го е написал. Това е един вид виртуален и задълбочен дневник - той ви позволява да познавате задълбочено съзнанието на разработчика, а в случай на големи проекти ви позволява да видите как тяхното логическо и критично мислене е нараснало с времето. Нещо необикновено и много подхранва умовете на най-малките, защото можете да знаете най-добрите пътища на хората, които трябваше да ги открият discover

За да бъдем последователни

Много програмисти и специалисти казват, че трябва да излезем от нашите зона на комфорт, и въпреки че е вярно, също така е повече от необходимо да се поддържат определени процеси и формати. Това е лесно да се обясни, нашите умове се повтарят и уважават структури, ако пишете код по един и същи начин всеки ден, след кратко време ще спрете да мислите за формата и ще можете да се концентрирате върху нея. Fondo. Това ви позволява да видите логика на програмата вместо синтаксис на езика. И това е причината, поради която считам, че ученето на концепции винаги ще бъде по-важно от ученето формите. Това е лично мнение, но се надявам, че след като прочетете всичко това, можете да разберете защо го считам по този начин 🙂 също казано от някой, който е трябвало да програмира на C, Java, Javascript, Python, Ruby, PHP и други 🙂 концепции улеснява писането на код.

В обобщение

Е, това е първата стъпка от поредицата, която се надявам да ви помогне да мислите по различен начин за изкуството на програмирането, дори да ви поканя да се задълбочите в концепциите, които ви позволяват да изпълнявате кода, който сте написали може би стотици пъти, но не са спирали да се замислят какво всъщност прави. И за тези, които не са започнали да програмират, но биха искали, да могат да поставят по-малко приоритети на това, което е наистина важно да се знае 🙂 Поздрави


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Хавиер Г. Делгадо каза той

    Много добросъвестна статия, която говори (в случая) за програмиране може би на нов език, който програмира по-задълбочено, моята подкрепа отива към следното.

    1.    ChrisADR каза той

      Здравейте Хавиер, благодаря ви много 🙂 Мисля, че това е много важно, защото те винаги са искали да ме научат да възпроизвеждам код, известния Ctrl + C ... Ctrl + V 🙂, но никога не съм се оставял да бъда увлечен от това, дори това да е най-простият проблем в света Предпочитам да го напиша, отколкото да го копирам от някой друг, това ме кара да се чувствам сякаш е мое творение.
      поздрави

  2.   Балуа каза той

    Вече чакам следващата глава, отдавна спрях да програмирам и мисля, че мога да намеря в по-късна глава някаква причина за решението си, тъй като тази глава си свалям шапката.

  3.   ChrisADR каза той

    Здравей Balua 🙂
    Е, ще измисля нещо за следващото. Малко е сложно да поръчате всичко по такъв начин, че нишката да може да бъде проследена от всяка публикация, но аз ще се опитам много скоро да има тази (и няколко други, които ме попитаха). Благодаря за вашия коментар. Наздраве

  4.   Андерс каза той

    Скъпоценен камък на статия! Надявам се следващата ...