За начало дефинирам “съвремието” като периода от създаването първия модерен компютър, използващ електричество, през 40-те години на миналия век, до днешни дни. Разбира се, програми, в смисъла на последователни инструкции изпълнявани от автомат, са съществували много преди това:
- Жозеф Мари Жакард (1752 - 1834г.) , френски тъкач, изобретява автоматизиран стан, чиито инструкции се подават чрез перфокарти
- Чарлз Бабидж (1791 - 1871г.), британски математик и инженер, създател на първата сметачна машина, вдъхновена от Жакард
- Ада Лъвлейс (1815 - 1852г.), английска математичка, пише алгоритъм за аналитичната машина на Чарлз Бабидж, която наподобява компютър, считан за първата програма
Преди да започнем да разглеждаме съвременните текстови редактори и софтуера, който ги наследява, ще трябва да минем през ерата на перфокартите. Защо? Много просто! Как бихме написали кода за програма за писане на код, като няма в какво да напишем кода?
Подобно при машините на Жакард, перфокартите са били физически носител с предварително зададени команди под формата на перфорации в специални участъци на бланки.
Arnold Reinhold, CC BY-SA 2.5, via Wikimedia Commons
Създаването на програма по този начин е времеемко и често изисква двама специалисти - програмист и оператор за перфориране. Грешки при създаване на перфокартата водели до започване на процеса отново. Информацията, запазена във всяка перфокарта, е ограничена от броя редове и колони на бланката, затова по-сложни програми са налагали създаването на тестета от перфокарти.
ArnoldReinhold, CC BY-SA 3.0, via Wikimedia Commons
червената линия по диагонала идва на помощ, ако тестето бъде изтървано и всички перфокарти размесени 😅
През 50-те години на миналия век, отново заимствано от машини в миналото (телетайп, телепринтер), се появява първият интерфейс, чрез който потребител директно може да задава команди на компютъра - команден ред. Наречен така, защото работи само върху един ред, приема символи, които биват поставени на следващата позиция и има само един специал бутон: Enter, чрез който може да се даде сигнал на комютъра, че сме готови с командата. По-късно телепринтерът се заменя от клавиатура и екран, които емулират функционалността на му.
Една от първите програми наречени “текстови редактори” е QED (quick editor) разработена от Бътлер Лампсон и Л. Питър Дойч. Въпреки че, QED е предназначен за компютър управляван чрез телепринтер, във времена, в които CTR мониторите навлизат в употреба, той оказва силно влияние върху разработката на ed - редови текстов редактор, който е една от първите части на операционната система Unix.
С появата на монитори, които могат да променят показваното съдържание без да изискват смяната на физически елементи като хартия, перфокарти, глави, магнитни ленти и др., се създават модални многоредови текстови редактори, които изпълват целия екран. Този тип редактори често са имали допълнителна функционалност, която помага за въвеждането на текст като: преместване на позиция на курсора, изтриване на символ, вмъкване на ред и др.
През 1969г. Уилфред Хансен създава редактор за код, поддържащ code completion (дописване на код) наречен Emily, който не позволява, за разлика от съвремените редактори, създаването на синтактично грешни програми. А през 1982г. се създава и първата система за оцветяване на код (syntax highlighting), целяща да направи писането на програми по-лесно за начинаещи, главно деца.
С годините начинът, по който се създава софтуер се усъвършенства, като в днешни дни имаме изчерпателни интегрирани среди за разработка, които:
- оцветяват кода ни
- допълват го
- статично го анализират, предотвратявайки логически и синтактични грешки
- изпълняват и проследяват изпълнението
- форматират, така че стилът да бъде консистентен с останалите хора в екипа.
Източници
- What did Ada Lovelace’s program actually do? What Did Ada Lovelace’s Program Actually Do? (n.d.). Retrieved April 28, 2023, from https://twobithistory.org/2018/08/18/ada-lovelace-note-g.html
- Lovelace’s note G program in C. Gist. Retrieved April 28, 2023, from https://gist.github.com/sinclairtarget/ad18ac65d277e453da5f479d6ccfc20e
- Wikimedia Foundation. (2023, March 26). Joseph Marie Jacquard. Wikipedia. Retrieved April 28, 2023, from https://en.wikipedia.org/wiki/Joseph_Marie_Jacquard
- Wikimedia Foundation. (2023, April 16). Charles Babbage. Wikipedia. Retrieved April 28, 2023, from https://en.wikipedia.org/wiki/Charles_Babbage
- Wikimedia Foundation. (2023, February 27). Computer programming in the punched card era. Wikipedia. Retrieved April 28, 2023, from https://en.wikipedia.org/wiki/Computer_programming_in_the_punched_card_era
- The IBM 029 card punch. The IBM 029 Card Punch. (2018, June 23). Retrieved April 28, 2023, from https://twobithistory.org/2018/06/23/ibm-029-card-punch.html
- http://www.computersciencelab.com/ComputerHistory/HistoryPt4.htm. (n.d.).