Създаване на език за програмиране

По точно е да се каже, че JAVA се прекомпилира и получаваме един код, който след това при първото стартиране на програмата се докомпилира.
 
Влезте да учите във някой добър университет и ще разберете теорията зад цялото това чудо.
( за пример предмета Езици, автомати, изчислимост )
Като цяло трябва да измислиш синтаксис и съответната семантика за него ( за синтаксиса си има доста стабилна теория от Чомски и компания : http://en.wikipedia.org/wiki/Chomsky_normal_form )
После компилатор/парсер (широко е застъпено http://en.wikipedia.org/wiki/Abstract_syntax_tree ) , който ти чете сорс кода и го "превежда" до някакъв вид команди, които ги разбира процесора.
И накрая всички са щастливи :D
 
gamena007 каза:
По точно е да се каже, че JAVA се прекомпилира и получаваме един код, който след това при първото стартиране на програмата се докомпилира.

То реално първо го сбива за по-малък размер. Иначе от java файловете, както и от .net програмите лесно може да се извади изходния код. Иначе за компилиращи се предварително (AOT compiling) трябват знания по assembler.

А .net сбива кода било то VB.NET или C# до негов си разбираем само за фреймуърк компилатора. Пак нещо като джавешкия вариант.
 
C произхожда от езика B.

Колкото до това как се прави програмен език, с много познания, много време, много опит.

Ще ти отнеме поне 5-10 години да направиш нещо смислено и дори тогава може да е пълна бъркотия.
 
mitko666 каза:
Добре тоя компилатор от цялата работа излиза че и той е код :D или греша.

Всичко е код. Разликата е само езика и нивото му.
 
Език за програмиране се създава като или се изгражда на базата на някой друг, или се създава компилатор за свеждане до машинен код. Например PHP е изграден на базата на C/C++ и интерпретира кода като използва функциите на C. Компилаторът на C++ пък свежда сорс кода до машинен. Зависи от това как е изграден езикът за програмиране.
 
kulov каза:
Представи си създаването на език за програмиране на основата на php.. Реално с php може да се създаде език за програмиране, php ще е двигателя в случея.. PHP е на основата на c++, тоест php е създаден по същият начин, по който ти можеш да създадеш език за програмиране на основата на php.. :?:

PHP е написан изцяло на C, няма нищо общо със C++.

Как е направен първия комплилатор ?

Първото не е било компилатор, а асемблер. Всяка различна процесорна архитектура си има различен асемблерен език. Асемблера е езика от най-ниско ниво след binary кода. (0 и 1).

ако наистина е вярно не тряба до думата програмист да се слага php защото пак казвам ако е вярно несъшествува понятие аз програмирам на php

Горе-долу така излиза, истинските програмисти пишат на Fortran и Assembler, в най-лошия случай на COBOL.



Tой се комплира по време отварянето на страницата за това е по бавен

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

JAVA(tm) се компилира до специфичния за платформата byte code благодарение на написаната на много ниско ниво JVM. Използва се навсякъде и е номер 1 в света заради уникалната си преносимост. Ползва се както за коли, така и за машини за кафе, телефони и компютри, та чак стигаме до уеб програмиране и програмиране от високо ниво.

Досега rombeca каза най-вярното нещо. :D
 
Статията е bullshit. Дори не е довършена :D
PHP е разпространен, защото 13 годишните деца могат да напишат лош сайт за запознанства, без да зная много.
Да пишеш хубаво PHP си е вече занаят :)
 
gcc компилатора е писан на C между другото, не на асемблер. Всъщност, дори не е вярно, че C програмите се компилират веднъж, с LLVM нещата стават като в java - компилират се веднъж до байткод, втори път този байткод се транслира до native машинни инструкции. Така или иначе C си има inline assembly, така че за малкото неща, за които ти се налага да ползваш асемблер, няма проблеми. Но дори и без това, спокойно може да се изпълнява код на машинен език, елементарно е да си декларираш един масив, съдържащ машинния код, да си декларираш указател към функция, която взема определени параметри и да му присвоиш адреса на масива, после да изпълниш функцията. C е ужасно мощен език. PHP е доста по-скромен език, който прощава и спестява ужасно много неща (примерно typecasting-а е доста свободен, абсолютно те лишава от memory management-а и т.н.). PHP определено си има предимства, манипулациите с низове са доста елементарни, за разлика от C, функциите за работа с бази данни са много лесни за използване за разлика от C (налагало ми се е да пиша програми, които изпълняват заявки до mysql база...УЖАСНО е, това превръщане на типове данни е кошмарно), обаче...не искам да засегна някого, но ми е трудно да си представя как някой който пише на PHP би могъл да се нарече програмист. По принцип уеб програмирането е леко ташак, всичко е малоумно нагаждане с много малко мислене. Много ама много рядко ти се налага да мислиш някакви истински проблеми, да използваш някакви сложни структури от данни или алгоритми, които оперират с тях, всичко е на принципа пляскай-мажи. В perl все още имаше списъци, хешове и масиви, можеше да се реализират доста по-сложни структури от данни базирани на тях, примерно дървета. Хората зад PHP и цялата група фенчета това въобще не им допадна щото трябва да се програмира с attitude разбираш ли демек да мажеш глупости и те някак да вървят щото някой се грижи това да става, без значение колко е субоптимално. Затва големите корпоративни уеб проекти рядко се пишат на PHP, с изключения, които потвърждават правилото. Самият интерпретатор веднъж ти спестява ужасно много неща и втори път характера на програмата (изпълнява се в рамките на един HTTP request - ОК, с ajax нещата става малко по-навързано), ти спестява още ужасно много неща. Като например да си освобождаваш паметта, която си заделил.
 

Back
Горе