Loading...
fakoneto avatar fakoneto 2 Точки

Основи на програмните езици

Здравейте,

Много ще се радвам някой да ми обясни или ако може да постне някакви материали по въпроса:

Как се създава програмен език?

Всички лектори ни казвате този език е бил измислен за 15, 20 .... дни или години. Какво означава това - има ли някаква база върху която се създава, кое е общото между тях....

Дано разбирате въпроса ми, защото и аз малко се обърквам като си го задавам и като искам да го намеря в Гугъл например.

Все едно питам как се прави айрян - основа са му млякото и водата.

Някой решава да го направи с газирана вода - става газиран айрян .

Воаля! измислен е нов айрян.

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

А бе направо питам как да си създам мой език, който не е на база на друг - демек Революция!!!! laughlaughlaughcoollaughlaughlaugh

Тагове:
0
Общи приказки
RoYaL avatar RoYaL Trainer 6849 Точки
Best Answer

Привет,

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

Нека първо си изясним ситуациите с повечето модерни програмни езици от високо ниво (пр. C#, Java и вметка: езици от преди 30 год също са в тази графа). Код на тези езици се чете и компилира до междинен език, който го разбира предварително написана виртуална машина за процеси. Тази виртуална машина, най-малко началото ѝ, е написана на език от минимум една идея по-ниско ниво (C++) или от език от също толкова високо ниво (рядък сценарий), която свързва инструкциите написани от нас с операционната система, на която се опитваме да пуснем програмата. Операционната система от своя страна, кореспондира с хардуера посредством драйвъри на устройствата, за да изпълни нашите искове. Разбира се, тази операционна система, за да кореспондира с хардуера, вероятно е написана на език от още по-ниско ниво (на практика, класификацията в тази посока е само N-th generation), за да може началото ѝ да бъде дадено при т.нар boot-ване на компютъра. Този език от по-ниско ниво обикновено е C. Като малка част от първия етап на механизма по boot-ване вероятно е написана на Assembly в master boot record-a.

И, обаче, рекурсивно си задаваме въпроса - хубаво де, този Assembly пък кой го чете? Как в MBR-а имаш изпълними файлове - кой ги е направил преди това изпълними?

Отговорът по принцип е: хардуерът. Всъщност, преди Assembly, който можеш да пишеш с клавиатурата и да компилираш с команда, има... първият assembler направен някога.

А той? Как е написан в компютъра?

Тук може би трябва да се върнем вече назад и да видим, че преди модерните компютри с операционните системи, всъщност компютрите са били изчислителни машини с едничка цел да обработват инструкции и да дават резултат. И за разлика от интерактивния курсор на DOS или този на Notepad в Windows, входът на тези машини идва от... перфокарта, перфолента или хардуерен терминал :)

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

Езикът ти за програмиране, в общия случай, трябва да е turing complete. Т.е. предоставената граматика да постига теоремата, например освен стандартните изчисления да са възможни условия и прескачания.

Тази граматика ще трябва да бъде прочетена от някакви lexer и parser, написани например на assembly в този случай от ниско ниво, който да превръща инструкциите от по-високо ниво, до хардуерни инструкции, които процесорът разбира. По същия начин, по който потребителският вход се превръща до команди, които базата данни например разбира, за да се регистрира потребител, така кодът написан на твоя език, се превръща в сет от инструкции.

Създаването на един такъв минимален език, позволява създаването на по-голям език, платформа и т.н.

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

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

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

P.S.: Нещата са малко (доста) по-разтегливи от колкото ги обясних. Разгръщането на маркираните хипервръзки, ще разтегли нещата. Успех в тези дебри. Малцина са се върнали :)

3
fakoneto avatar fakoneto 2 Точки

МНОГО БЛАГОДАРЯ!!!

Жегнал съм те явно с моя въпрос.

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

Поздрави и ако се видим някой ден имаш няколко бирички от мен.wink

1
fakoneto avatar fakoneto 2 Точки

Между другото сме се виждали на един бейсик в пловдив и още тогава ми направи впечатление, че правиш всичко с лекота и без да се замисляш. Успех във всичко и дано някой ден се доближа до твоите умения.enlightened

0
kolioi avatar kolioi 641 Точки

Прочети някоя книжка за компилатори, като за начало.

1
Martin000 avatar Martin000 115 Точки

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

0
tdk928 avatar tdk928 108 Точки

Очевидно ни лъжеш за търсенето в гугал иначе щеше да видиш ,че всеки език стъпва на други.Революция със създаването на език който не взима нищо от други на практика прогресивно клони към невъзможно.Иначе на въпроса ти най-най-най отдолу така да се каже има машинен код 0/1 -> асемблер -> други гадориики -> java .Ако твоя език реши да прескочи машинния код не виждам как ще работи пък и не вярвам да измислиш нов език дори и да стъпва на други.По-добре се ориентираи към измислянето на някой готин сайт , би било възможно и реалистично.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.