Начало - Smart TV
Кой е изобретил първия език за програмиране. Първи език за програмиране

Не се страхувайте от затвора, не се страхувайте от скръбта,
Не се страхувайте от мор и глад,
И единственото нещо, от което трябва да се страхувате е
Кой ще каже: "Знам как да го направя!"
(А. Галич)

Нека го кажем накратко: правилният отговор на въпроса „кой език за програмиране да избера първо?“ не съществува в природата. Дори отговор от класа „един от тези трите“. Тя не съществува дори сега, в конкретния момент, когато пиша това, 10 април 2017 г., 21:38 часа киевско време - но още по-малко смисъл има да се опитваме да отговорим на този въпрос, гледайки месец, шест месеца или година напред.

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

Ако да, елате след мен.

Някои предупреждения

първо, един език не е достатъчен.Още през първата година на обучение. Все още ще са необходими поне няколко „специализирани“ езика (HTML, CSS, SQL, YAML, JSON, XML, Markdown - поне примери за различни синтаксис, което почти сигурно ще трябва да бъде прочетено и с голяма вероятност - написано). Но не само това. Програмист, който не е JS, почти със сигурност ще трябва да прочете малко JS; JS програмист - проверка на изпълнението на алгоритъма, описан в Python; за системен програмист да се занимава с нечий друг скапан код на скриптов език.

И по пътя към „средното“ ниво ще трябва да овладеете половин дузина от тях. И за да станете истински професионалист, трябва да разберете парадигмите на всякакви фантастични боклуци.

второ, Едва ли цял живот ще пишете на един език.И едва ли дори достатъчно дълго. Може би дори няма да сте тук за един месец. На първата ми работа през 2003 г. ме наеха като C++ алгоритмист, но също така поддържах малко уебсайт в PHP и също така добавих интерфейс към нашата библиотека в Excel VBA (потръпва). И нищо не е нормално, което просто не се случва на юношите.

Но не само това - "основният" език в любимия ви офис ще се промени или друг работодател ще ви наеме на любимата ви тема, въздушните течения на стартиращата или корпоративната култура ще се променят - и WHAM - вече не помните структурите на толкова внимателно подбран „първи език“.

Следователно, като цяло, не трябва да се отнасяте към този избор твърде многосериозно, като избор на жена или къща (те също могат да бъдат променени - но все пак малко по-трудно). Да започнете, да опитате всичко и да намерите своя собствена е много по-смислена стратегия, отколкото да прекарате няколко седмици/месеци/години в анализиране на „откъде дори да започнете“.

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

Внимание, правилните въпроси!

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

Защо ще учиш?Много важен въпрос, който първо трябва да си зададете честно. Вземете допълнителен инструмент за основната си професия (например микробиология или счетоводство)? Забавлявате ли се в свободното си време? Помогнете на дете в училище?.. Е, добре, в mkdev по подразбиране приемаме, че ще работите като програмист (въпреки че ще се радваме да учим микробиолог - знаете ли, че Ruby е ужасно популярен сред тях?) . Но: вече сте твърдо убедени, че искате да намерите професия в ИТ възможно най-бързо или просто сте решили да опитате, дали е за вас? Във втория случай може да си струва да опитате дузина езици и подходи, за да разберете какво харесвате - или нищо, това също е добре!

Свързан въпрос: колко време имашБез ясен краен срок „след една година вече трябва да печеля X долара“ - може да е разумно (и доста приятно) незабавно да планирате за себе си образование в „университетски клас“: тоест направете списък от няколко класически езика - Scheme, Haskell, Prolog, няколко индустриални (Java, Ruby, JS), няколко супер-модни (Rust, Pony, Elixir)... И въпросът "на какво точно да пишем" някак ще възникне на неговия собствени. Но ако искате „истинска професия и бързо“, тогава...

Знаете ли точно в каква област искате да работите?„Само разработка на игри, нищо друго не ме устройва“, „Изкуственият интелект е това, за което съм мечтал от училище“, „Искам да съм по-близо до хардуера, да програмирам всякакви роботи и сензори“ или дори „Приятелите ми са ще започна стартиране на телевизионни сериали.” с големи данни“ са добри варианти за отговор на този въпрос. Но вие абсолютно не сте длъжни да ги имате. „Моля, покажете ми цялата гама“ също е добър отговор. И „междувременно ще се опитам да помогна на счетоводителя на чичо ми във фирмата му, но искат нещо по-интересно“ също е нормално.

Виктор ще ви помогне да направите първите си стъпки в програмирането, ще ви научи на основите и езика Ruby!

Освен това: Какво бихте искали да правите?Изглежда, че въпросът е същият като горния? Но не. Затворете очи и си представете как изглежда вашият идеален работен процес? Експериментирайте с интерфейса, така че потребителят да е доволен, без дори да знае колко усилия е инвестирано? Да измислите нов алгоритъм за сблъсък на частици за физическия двигател на играта и да отнеме три години, за да го усъвършенствате? Напишете много код бързо, комбинирайки дузина познати компоненти в нова идея за стартиране, преди някой да я измисли? Да се ​​занимавате със сложно чуждо нещо, за да го накарате да работи в нова среда? - има огромен брой възможности, а някои дори водят далеч от професията на „просто програмист“ - в областта на devops, или UI специалисти, или анализатори на данни... Посветете поне 20 минути на тази медитация, резултатът може да е напълно неочакван.

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

И едва след като отговорите (или съзнателно решите да отложите отговора) на всички въпроси по-горе, има смисъл да зададете прагматичен въпрос: Какви езици се използват активно в момента?- в областта, темата и средата, която ви интересува. И изберете три (точно така!), които да овладеете в близко бъдеще.

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

Някои отговори

Чувате ли странен тих звук?

Това са „отговорите“, изброени по-долу, които стават остарели и ръждясали. Ако четете тази статия шест месеца след написването й, най-вероятно разделът „отговори“ вече е леко остарял ( Аконе е настъпило някакво катастрофално събитие, в резултат на което всичко е остаряло); четете го година по-късно - той е напълно остарял. Четете го 5 години по-късно - ... но дявол знае. В нашата област нещата се променят всеки ден, но често остават доста стабилни в дългосрочен план.

Е, като цяло е ясно - прочетете внимателно.

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

Авторът е определил определен номер на всеки от тях: това е броят на свободните работни места на главния украински уебсайт за разработчици dou.ua, в който езикът е поне споменат. Тези цифри сами по себе си не означават нищо, но позволяват да се направи някакъв непълен сравнителен анализ на примера на една от постсъветските/европейските страни и да се направят някои много неточни сравнителни изводи.

Моля, обърнете внимание: същността на тези числа не е толкова, че „трябва да изберете този, където числото е по-голямо“! Въпросът е, че за нито един от тези езици числото не е равно на нула - в страна, която не е много голяма и, нека бъдем честни, не е много просперираща. Тоест, можете да намерите работа на език, който има 5 написани там - но за това трябва наистина да го обичате и ако целта е просто „да програмирате нещо за прилична сума пари“ - тогава, разбира се, трябва да изберете къде броят е по-голям, явно ще наемат всеки, който иска.

    C(100?- изглежда, че търсачката не можа да се справи) - единственият жив дядо на програмирането и освен това най-живият от всички живи. Цялата система (с измененията на Rust and Go, за които по-долу), програмирането на всякакви микроконтролери и вградени устройства, всякакви драйвери за дронове и други умопомрачителни неща все още е C. Това е и „базовият“ език за шиене или ускоряване на други езици и библиотеки (някакви научни глупости, които, да речем, първоначално са написани на Python, след това пренаписани на C за скорост, след това обвивки за тази C реализация се появяват в Ruby, Julia и Haskell... така ние на живо). Накратко, малко вероятно е първиезик, но задължително за изучаване - абсолютно. Освен това той изобщо не стои неподвижен и новите стандарти са доста свежи и добри;

    C++ (144)- грозният (според някои) или възхитително сложен (според други) племенник на C. Обектно-ориентиран, мета-програмируем, чудовищно свръхсложен, бавен за компилиране... накратко, C++ е първата ми любов сред езиците за програмиране . Сега се използва, доколкото може да се прецени, за разработване на игри, някои настолни системи и малко навсякъде, където C е възможно, но е необходим по-сложен код (тъй като gcc компилаторът е наличен във всички операционни системи и компилира и двете) ;

    C# (414)- един от малкото езици, на които програмистите са продали душите си на дявола и са почти тясно свързани с екосистемата на Microsoft (която, нека бъдем честни - особено за разработчиците - е доста впечатляващо развита). Области на приложение - игри, или комплексен скъп Enterprise софтуер. Самият език към момента е доста красив и прогресивен. И като цяло, като почти всички не нови и прагматични езици с общо предназначение, той има малко функционалност, много OO, малко метапрограмиране и т.н.;

    Clojure (6)- такъв магически еднорог от езици за програмиране, работи на JVM (прочетете за Java по-долу), наследник на Lisp, функционален език. Неговият диалект ClojureScript се компилира в JS (също прочетете по-долу защо това е важно). Използва се в „умни“ стартиращи фирми и в производството на много сериозни компании. Можете да избирате само от Big Love (но той е готин);

    Erlang+Elixir (5+10)- Erlang е език и платформа, които са особено популярни за създаване на телекомуникационни (преди) и като цяло разпределени (сега) приложения с голямо натоварване. Elixir е език, който работи на същата платформа, но е по-малко чужд от Erlang (обаче, „основният“ език на платформата все пак ще трябва да бъде разбран поне малко, вижте дискусията за Java по-долу). Днес всичко това малко намирисва на „елитарност“, но е здраво вкоренено в някои области (да речем в банковите системи) - и ужасно интересно;

    ES (JavaScript, CoffeeScript, TypeScript и др.) (788+10+64+...)- очевидният фаворит в момента, ES/JS/... по същество не е език, а семейство от езици. На тях са написани уеб интерфейси и мобилни интерфейси (по няколко различни начина), а също (по няколко други начина) сървърен и административен софтуер и дяволът да е плешив. Какво точно се нарича „JavaScript език“ днес е доста трудно да се определи: след като сте си наели работа като „JavaScript програмист“, в зависимост от вашия късмет, може да се окажете човекът, който поддържа древния интерфейс на банковата система, който, по дяволите, трябва да работи под всеки браузър; или част от модерен екип, който пише комплексна визуализация на научни данни в строго типизиран TypeScript; или внезапно да участвате в разработването на интерфейса на бъдещето на „следващата“ версия на езика, който е компилиран по сложен начин в нещо, което работи на стара Nokia... цял свят, който не може да бъде описан в един параграф. Но търсенето на „първия ви език“ в тази област е доста опасно;

Има и трето мнение и история за това на какво се основава изборът на програмен език в реалната разработка

    Отиди (78)- прост като пръчка и ефективен език, създаден от Google, главно за случаите на „направете бърз, тъп, надежден код“. Полетът на мисълта у него веднага се прекъсва от грубостта на езика. Но е ефективен - не мога да опиша как;

    Java (466)- специален случай. Java е едновременно език и платформа (JVM) - и тази платформа работи например със забавен и готин Clojure, научно неразбираема Scala и JRuby (същият Ruby, но за JVM). А самата Java днес изобщо не е „ограниченият език за корпоративни роби“, за който някога е била известна. Имайки предвид невероятния брой мощни библиотеки, избора на езици, работещи на тази платформа и нейната гъвкавост, всеки уважаващ себе си програмист трябва да има някаква представа за Java. И Java е единственият (с известни резерви) език за разработка за Android;

    PHP (431)- стар окупатор на мрежата с чудовищна репутация. В съвременната версия той се е отървал от по-голямата част от адското наследство и като цяло е доста приличен модерен OO език. Но според стари спомени той съставлява много значителна част от интернет инфраструктурата. След като сте наели специалист по PHP, вие с еднаква вероятност можете да завършите в чист проект с архитектура и тестове - или можете да поддържате безумна праисторическа система с неструктуриран if/else за 2000 реда;

    Python (303)- някога „конкурент“ на Ruby като модерен език за мрежата и стартиращи фирми, сега езикът е основно за поддръжка на сложни и възрастни уеб приложения, които са израснали върху него - и повече за научни / големи данни изследвания, на някои места дори запушва R (виж по-долу);

    R (16)- език с общо предназначение, но използван само от учени/bigdata. Това е доста адски синтаксис (защото е стар), но има много страхотни пакети за него и изследвания, написани върху него. Почти най-добрият език в света, оказва се, е за задоволяване на любопитството;

    Рубин (124)- само преди няколко години „модерен“ и „хипстър“, днес това е просто един от основните езици. Много изразителен и лаконичен, малко „магически“, доста бавен. Използва се главно за уеб разработка. Днес това е език, който лесно се обича или мрази от пръв поглед и е доста лесно да се намери работа. Ruby също е обичан днес от администратори и тестери, има страхотни инструменти и за двете;

    Ръжда (3)- един от доста новите играчи. Бързо и предизвикателно. Той обещава да замени C в областта на системното програмиране, но засега изглежда, че има по-голям смисъл да го научим „за в бъдеще“;

    Скала (60)- „умен брат“ на платформата Java: модерен, сложен, функционален, ужасно обичан от всички бизнес анализи и следователно бързо набиращ популярност;

    Swift / Objective-C (58+15)- единственият избор за разработка на iOS. Разбира се, трябва да се съсредоточите само върху Swift (Objective-C вече е само за поддръжка на стари приложения) - и като цяло не е забележителен нито с някакви специални функции, нито с някакви специални глупости, приличен модерен език, сравним с C# и Java. Може да се препоръча само като първи за онези, които са решили твърдо да се свържат с Apple, тъй като приложимостта му е (съзнателно) ограничена.

Някак, общо взето, така.

Има някои неща, които не бяха включени в този списък - например Perl, за който разработчиците са доста търсени, но самият език е в странно състояние и не мога да го препоръчам като „първи“ език. Или, например, Lua също е популярен, но като език на малки скриптове за други системи (главно игри), да бъдеш „просто програмист на Lua“ изглежда безсмислено.

Ех всичко разбирам. Какво да избера?..

Ами това. Вземете всичко. (усмивка)

Не, наистина. Всъщност една разумна стратегия (ако, разбира се, ще прекарвате значителна част от времето си в нашата професия, а не „да печелите допълнителни пари за половин година“) е да разберете какво някоиезици, от които се интересувате поне да разгледате през следващите месеци. Можете да ги изберете като цветовете в инструкциите за дизайнери - можете "от близки", можете "от противоположни", можете "от допълващи се"...

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

Накратко казано...

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

Останалото някак си става от само себе си.

Начало на развитие

Асемблер език

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

Но дори работата с асемблер е доста сложна и изисква специално обучение.

Например, за процесора Zilog Z80, машинната инструкция 00000101 инструктира процесора да намали своя B регистър с единица. На асемблерния език това също ще бъде написано като DEC B.

Структурно програмиране

Следващата стъпка е направена през 1954 г., когато е създаден първият език на високо ниво Fortran. FORTRAN - Преводач на формули). Езиците от високо ниво имитират естествени езици, като използват някои думи на говорим език и общи математически символи. Тези езици са по-удобни за хората; с тяхна помощ можете да пишете програми с дължина до няколко хиляди реда. Въпреки това, въпреки че е лесен за разбиране в кратки програми, езикът става нечетлив и труден за управление, когато става въпрос за по-големи програми. Решението на този проблем дойде с изобретяването на структурирани езици за програмиране. структуриран език за програмиране ), като ALGOL (1958), Pascal (1970), C (1972).

Структурираното програмиране включва точно дефинирани контролни структури, програмни блокове, безусловни инструкции за прескачане (GOTO), самостоятелни подпрограми, поддръжка за рекурсия и локални променливи.

Същността на този подход е способността да се раздели програмата на нейните съставни елементи.

Също създаден функционален(приложни) езици (Пример: Lisp - английски. Обработка на LIST, 1958) и логичноезици (пример: Prolog - английски) ПРОграмиране в LOGic, 1972).

Въпреки че структурираното програмиране, когато се използва, дава изключителни резултати, дори то се проваля, когато програмата достигне определена дължина. За да се напише по-сложна (и по-дълга) програма, беше необходим нов подход към програмирането.

ООП

В резултат на това в края на 70-те и началото на 80-те години бяха разработени принципите на обектно-ориентираното програмиране. ООП съчетава най-добрите принципи на структурираното програмиране с мощни нови концепции, основните от които се наричат капсулиране, полиморфизъмИ наследство.

Примери за обектно-ориентирани езици са: Object Pascal, C++,

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

Връзки

  • История на програмирането и изчисленията

Фондация Уикимедия.

2010 г.

    Вижте какво е „Кратка история на развитието на езиците за програмиране“ в други речници:

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

    Ruby Семантика: мулти-парадигма Тип на изпълнение: интерпретатор Появил се през: 1995 г. Автор(и): Юкихиро Мацумото Последна версия: 1.9.1 ... Wikipedia

    Ruby Семантика: многопарадигмен Тип на изпълнение: интерпретатор Появил се през: 1995 г. Автор(и): Юкихиро Мацумото Последна версия: 1.9.1 ... Wikipedia - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Армения (Hayastan Country of Armenians). I. Обща информация Арменската ССР е създадена на 29 ноември 1920 г. От 12 март 1922 г. до 5 декември 1936 г. тя е част от Закавказката федерация (Вижте... ... - (Lietuvos Taribu Socialistine Republic) Литва (Lietuvos). I. Обща информация Литовската ССР е създадена на 21 юли 1940 г. От 3 август 1940 г. е част от СССР. Намира се в западноевропейската част на СССР. Граничи на север с... ...

    Велика съветска енциклопедия

Първоначално програмирането имаше изключително примитивна форма и практически не се различаваше от подреден двоичен код с формализиран подход. Всъщност в началото на областта имаше малко разлики между език за програмиране и компютърен код. Нямаше очевидни и естествени удобства за програмиста; от него се изискваше да познава цифровите кодове за всяка машинна команда. Дори разпределението на паметта за изпълнение на команди падна върху специалиста.

За да опростят работата с компютрите, хората започнаха активно да разработват езици, един от първите беше Асемблер. Започват да се използват символни имена за показване на променливи. Вместо числови операции е достатъчно човек да знае мнемонични имена, тяхното запомняне е много по-лесно. Вече на този етап езиците за програмиране се доближиха до език, разбираем за хората.

Пионерите сред езиците за програмиране включват Fortranе съкратена комбинация от 2 думи: Формула и превод. Създаден още в средата на 50-те години. Езикът се използва и днес поради своята лекота и простота на писане, както и поради развитата система от библиотеки за Fortran. Най-често се използва за научни и инженерни изчисления, а също така се използва активно във физиката и други науки, свързани с математиката.

Фокусирани езици

Поради нарастващите области на употреба компютърПоявиха се и други езици за индивидуални разработки в нови области:

  • икономическото направление остава незаето до появата на Кобол;
  • Snoball - обработва алгоритми, свързани с текстове;
  • Lisp. Работи на базата на алгоритми за обработка на символи. Той се използва активно за формиране на изкуствен интелект.

Още през 1968 г. за първи път стартира състезание, в което основната награда беше титлата за най-добър език за програмиране за започване на кариера. Планирано е данните да се използват за обучение на специалисти. Спечелена победа АЛГОЛ-68, но той остана малко известен, а за популярност не може да се говори.

Създаден е специално за участие в конкурса Паскал, разработен от Никлаус Вирт. Езикът е много достъпен, удобен и съчетава много мощни инструменти за структуриране на информация. Въпреки първоначалното развитие с цел обучение на студенти, Паскал стана широко разпространен и активно се развива. Дори днес той е един от най-добрите и известни езици за програмиране.

Създаден е за обучение на децата в училищата Лого, стоеше в началото Самуел Пайперт. Предимства: лекота на работа и изобилие от възможности.

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

Създаване на езика C

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

C се използва навсякъде като инструментален език за писане на операционни платформи, устройства за превод, бази данни и други приложни системни задачи. няма ясен фокус, той е подходящ за много задачи поради своята ефективност, лекота на прехвърляне и икономично потребление на ресурси. По често Siскоростта на обработка на данни е сравнима с Асемблерпроизводителността на програмите на двата езика ще бъде приблизително еднаква. Малкият език съдържа много сила.

Пролог и Ада

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

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

Класификация

Днес са разработени класификации на езиците според нивото на работа; това разпределение е най-често срещаното. Има 3 основни нива:

  1. Кратко.Това включва различни машинни езици или разновидности със символен тип кодиране асемблерИ Автокод. Операторите на машинните команди са взети като основа, разработени само по отношение на мнемоничен код. Операндите вече не са точни адреси, а символични обозначения на имена. Всички модели са предназначени за индивидуални сортове PC, те са зависими от машината. В такива езици съществува силна зависимост на езика от вътрешните характеристики на системата;
  2. високо.Езиците са много по-често срещани и по-удобни за използване. Те включват: ALGOL, C, Prolog, Pascal, BASIC, Fortran и др. Изброените езици нямат строга зависимост от машината, тъй като се основават на възможностите на операндната система, които са подобни на класовите алгоритми. Недостатъците на високото ниво са високата консумация на ресурси и бавното изпълнение;
  3. Свръхвисоко.Има много малко представени езици, само APL и ALGOL-68. Те се считат за ултрависок клас поради развитието на супермощни оператори.

Според друга класификация езиците се разделят на:

  • символичен- Prologue, Lisp и Snoball;
  • изчисления- Pascal, C, Algol, BASIC, Fortran.

Насоки на развитие

Компютърните науки в съвременния свят се развиват в 3 ключови направления:

  1. Процедуренсе появява в периода на активно развитие на компютри и други изчислителни устройства и оттогава се използва широко. Процедурните указания съдържат изрично описание на действията, които трябва да бъдат извършени. За да се получи резултат, винаги се извършва определена процедура, която се състои от различни последователности от манипулации. Процедурните езици се разделят допълнително на:
    • Структурни.Те използват един оператор, за да напишат цели алгоритми: цикли, функции, разклонения и останалото. По-известни: Паскал, Ада и С.
    • Операционни зали.Използват се няколко различни действия. Сред най-известните сортове: Focal, Fortran и BASIC.
  2. Непроцесуален.Езиците за програмиране имат декларативна структура, която се появява през 70-те години. Те започват да се развиват най-активно през 80-те години след появата на проекта за формиране на 5-то поколение компютри. Основната задача е да се създадат възможности за изграждане високо интелигентен автомобили Те също се делят на:
    • Функционален.Програмата извършва изчисление на конкретна функция, която взема за основа други относително прости алгоритми и по-прости задачи. Функционалното направление се основава на основния елемент - рекурсия. Това включва изчисляване на стойностите на функция чрез използването й в други елементи. На езика липсват цикли и метод за присвояване на стойности.
    • Логично.Програмата изобщо не изисква описание на действията, тя се основава на връзките между данните и тяхното значение. Само след изчисления можете да получите отговори на въпроси. След търсене в известните параметри се показва отговорът. В програмата няма метод или ред за откриване на отговора; той е имплицитно зададен от езика. Ярък представител е Prolog. Алгоритмичното мислене е напълно елиминирано от посоката, само статични връзки между обектите, а цялата динамика е скрита от разработчика и се свежда до сортиране на данни.
  3. Обектно-ориентирани езици, всички от които са форма на програмиране на високо ниво. Такива езици не трябва да описват ясна последователност от манипулации, за да получат резултата от дадена задача, но присъстват отделни компоненти на процедурното направление. За потребителите е много по-лесно да работят с такива езици, тъй като те имат достъпен и богат интерфейс. Най-добрият пример за тази тенденция при визуалната комуникация е Object Pascal.

Има езици за писане на скриптове, известните са Rexx, Tcl, Perl и Python, както и shell езици на Unix системи. Те разработват индивидуален стил на кодиране, който се различава от добре познатия принцип на програмиране на системно ниво. Те не се използват за създаване на приложения на по-ниско ниво, а по-скоро за комбиниране на различни компоненти от различни езици, които съставляват набор от отделни функции.

Те започнаха да се развиват най-активно с разпространението на Интернет, поради което скриптовите езици започнаха да се използват широко. Най-често се използва за създаване на скриптове Perl, и за Уеб частие популярен JavaScript.

Kasper Beyer „Кратка напълно точна история на езиците за програмиране“.

1800

Джоузеф Мари Жакард обучава стан да чете перфокарти и по този начин създава първото многонишково устройство за обработка на данни. Изобретението му беше посрещнато враждебно от тъкачите на коприна, които предвидиха раждането на Skynet.

1842

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

1936

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

По-късно кралицата го помилва, но, за съжаление, той отдавна беше мъртъв по това време.

1957

John Backus създава FORTRAN, първият език, използван от истински програмисти.

1959

Грейс Хопър изобретява първия индустриално ориентиран език за програмиране и го нарича „общ бизнес ориентиран език“ или накратко COBOL.

1964

Джон Джордж Кемени и Томас Курц решават, че програмирането е твърде трудно и трябва да се върнат към основите. Те наричат ​​своя език за програмиране BASIC.

1970

Никлаус Вирт разработва Паскал. Това е един от няколкото езика, на които той участва в създаванетод Вирт: Той обичаше да създава езици.

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

1972

Денис Ричи се отегчава от работата си в Bell Labs и решава да създаде C с неговите фигурни скоби и проектът има огромен успех.Впоследствие той добави грешки в сегментирането и други удобни за разработчиците функции, за да подобри производителността.

Тъй като му оставаха още няколко часа, той и неговите приятели от Bell Labs решиха да създадат примерна програма, за да демонстрират езика C, така че създадоха операционна система, наречена Unix.

1980

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

1987

Лари Уол, с неговия опит в религиозната област, става проповедник и то неговд та доктрина прави Perl.

1983

Жан Дейвид Ишбиа забеляза, че програмата на Ада Лавлейс така и не стартира и реши да създаде език и да го кръсти на нейно име (Ада). Но езикът също не тръгва.

1986

Брад Кокс и Том Лав решиха да направят нечетлива версия на C, базирана на Smalltalk. Нарекоха го Objective-C, но никой не може да разбере неговия синтаксис.

1983

Björn Stroustrup се връща в бъдещето и забелязва, че езикът C изискватвърде малко време за компилация. Той добавя всяка функция, за която може да се сети, към езика и го нарича C++.

Програмистите по целия свят са съгласни, давайки им брилянтно извинение да гледат видеоклипове с котки и да четат xkcd на работа.

1991

Гуидо ван Росум не харесва фигурни скоби, затова изобретява . При избора на синтаксиса на езика авторът се е вдъхновил от Монти Пайтън и неговия летящ цирк.

1993

Робърт Йерусалимски и неговите приятели решават, че имат нужда от местен, бразилски скриптов език. IN По време на локализацията беше направена грешка, която накара индексите да започнат да броят от 1 вместо от 0.Езикът също се наричаше Lua.

1994

Размус Лердорф създава шаблонна машина за своите собствени CGI скриптове за начална страница и пуска нейните dot файлове в Интернет.

Светът решава да използва тези dot файлове навсякъде и Rasmus, обезумял, добавя някои допълнителни обвързвания към базата данни към тях и нарича резултата RHP.

1995

Юкихиро Мацумото не беше много щастлив и забеляза, че другите програмисти също бяха недоволни. Той създава Ruby, за да ги направи щастливи. След създаването на Ruby, „Matz“ е щастлив, Ruby общността е щастлива, всички са щастливи.

1995

Брендън Айх си взема почивен ден, за да разработи езика, който ще контролира всеки уеб браузър в света и евентуално Skynet. Първо той отиде в Netscape и каза, че езикът се нарича LiveScript, но по време на прегледа на кода Java придоби популярност, така чебеше решено използвайте фигурни скоби и преименувайте езика на JavaScript.

Оказа се, че Java е търговска марка, което може да доведе до проблеми, така че JavaScript по-късно беше преименуван на , но все още се нарича със старото име.

1996

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

2001

Anders Hejlsberg преоткрива Java и нарича езика C#, защото програмирането на C изглежда по-готино от програмирането на Java. Всички харесват новата версия на Java, защото е напълно различна от Java.

2005

David Heinemeier Hansson създава уеб рамка, наречена по-късно Ruby on Rails. Хората забравят, че това са две различни неща.

2006

Джон Резиг пише помощна библиотека на JavaScript. Всички смятат, че това е език и правят кариера от копиране на jQuery код от Интернет.

2009

Кен Томпсън и Роб Пайк решават да създадат език, подобен на C, но по-продаваем, с повече инструменти за сигурност и Gophers като талисмани.

Те наричат ​​този език Go, решават да го отворят и започват да продават маркови наколенки и каски Gopher.

2010

Graydon Hoare също иска да създаде език, подобен на C. Той го нарича Rust. Всички изискват незабавно всяко парче от техния софтуер да бъде пренаписано на Rust. Грейдън иска нещо по-лъскаво и започва да работи върху Swift за Apple.

2012

Anders Hejlsberg иска да напише C# в уеб браузъри. Той създава TypeScript, който по същество е JavaScript с повече Java.

2013

Джереми Ашкенас иска да бъде щастлив като разработчиците на Ruby, затова създава CoffeeScript, който се превежда на JavaScript, но прилича повече на Ruby. Джеръми никога не е станал толкова истински щастлив, колкото Матц и разработчиците на Ruby.

2014

Крис Латнър ​​създава Swift, чиято основна цел не е да бъде Objective-C. В крайна сметка този език прилича на Java.

Позволете ми да подчертая някои общи тенденции в развитието на езиците за програмиране. Проницателният читател сигурно отдавна се е досетил какво ще кажа. Езиците се развиват към все по-голяма и по-голяма абстракция. И това е придружено от спад на ефективността. Въпрос: заслужава ли си абстракцията? Отговор: заслужава си. Заслужава си, тъй като повишаването на нивото на абстракция води до повишаване на нивото на надеждност на програмирането. Ниската ефективност може да се пребори чрез изграждане на по-бързи компютри. Ако изискванията за памет са твърде високи, можете да увеличите размера на паметта. Това, разбира се, отнема време и пари, но може да бъде решено. Но има само един начин за справяне с грешките в програмите: те трябва да бъдат коригирани. Или още по-добре, не го правете. Още по-добре, направете възможно най-трудно ангажирането им. И точно към това са насочени всички изследвания в областта на езиците за програмиране. И трябва да се примирите със загубата на ефективност.

Целта на този преглед беше да се опита да даде на читателя представа за разнообразието от съществуващи езици за програмиране. Сред програмистите често има мнение за „универсалната приложимост“ на даден език (C, C++, Pascal и др.). Това мнение възниква поради няколко причини: липса на информация, навик, инертност на мисленето. Опитах се леко да компенсирам първия фактор. За останалото мога само да кажа, че един истински професионалист трябва непрекъснато да се стреми да повишава професионалната си квалификация. И за това не трябва да се страхувате да експериментирате. И какво, ако всички около вас пишат на C/C++/VB/Pascal/Perl/Java/… (подчертайте, ако е подходящо)? Защо не опитате нещо ново? Ами ако това се окаже по-ефективно? Разбира се, преди да започнете да използвате нов език, трябва внимателно да проучите всичките му характеристики, включително наличието на ефективна реализация, възможността за взаимодействие със съществуващи модули и т.н., и едва след това да вземете решение. Разбира се, винаги има риск да тръгнеш по грешния път, но... Не греши само този, който не прави нищо.

И още нещо. Чувал съм и понякога съм участвал в дискусии като „език А е по-добър от език Б“. Надявам се, че след като прочетат този преглед, мнозина ще се убедят в безсмислието на подобни спорове. Максимумът, който може да се обсъжда, са предимствата на един език пред друг при решаване на конкретен проблем при определени условия. Това е мястото, където понякога наистина има за какво да се спори. И решението понякога изобщо не е очевидно. Но да се спори „като цяло“ е очевидна глупост.

Тази статия беше замислена като отговор на онези, които викат „език X ТРЯБВА ДА УМРЕ“. Надявам се отговорът да се е оказал доста адекватен и убедителен. Надявам се също статията да има освен полемична и образователна стойност.



 


Прочетете:



Защо процесорът на моя компютър се нагрява много?

Защо процесорът на моя компютър се нагрява много?

Не планирах да напиша тази статия, бях подтикнат да я напиша от много въпроси относно прегряването на лаптопа, почистването му и смяната на термопаста. на...

Какво представлява режимът „Турбо“ в съвременните браузъри: Chrome, Yandex, Opera

Какво представлява режимът „Турбо“ в съвременните браузъри: Chrome, Yandex, Opera

Много добре познати уеб браузъри, например Yandex.Browser, имат специален режим „Turbo“, който може значително да увеличи скоростта...

Най-простият шаблон. Прости HTML шаблони. Mamba - едностраничен шаблон

Най-простият шаблон.  Прости HTML шаблони.  Mamba - едностраничен шаблон

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

3 разпределени информационни бази

3 разпределени информационни бази

Създаването и конфигурирането на разпределена база данни (RDB) в 1C 8.3 Accounting (и други конфигурации) е необходимо в случаите, когато не е възможно...

feed-image RSS