Własny język programowania

0

Jak to zrobić?
Szukałem bardzo długo w internecie i nic.
Myślę że bym sobie poradził.
Ale nie wiem kompletnie jak zacząć.

21

Fakt, że nie możesz znaleźć odpowiedniej literatury w google zdecydowanie przesądza o tym, że nie, nie poradziłbyś sobie.

0

http://mgc.im.pwr.wroc.pl/dyd/jftt2011.html -- to są materiały z języków formalnych na PWr. Dają minimalne podstawy do napisania własnego banalnego kompilatora. Powodzenia. ;)

0

Jak to zrobić?
Ale nie wiem kompletnie jak zacząć.
Jak będziesz miał wystarczającą wiedzę, to będziesz wiedział jak zacząć. A i to jeszcze daleko będzie od ukończenia

0

do parsowania i interpretacji można użyć duetu flex + bison.
EDIT: nic nowego nie wniosłem. Jest o tym w linku od rincewind.

0

Jak to zrobić?

Może ja jako autor języka skryptów (który, nie chwaląc się jest w miarę niezły i ciągle go rozwijam i używam ale nie publikuję) wypowiem się tak: Siadasz, uruchamiasz IDE i zaczynasz pisać. Zaczynasz od czegoś prostego, a potem dodajesz nowe rzeczy. Jeśli uznasz że obecny kod jest zbyt skompilowany/nieczytelny/wywala się/jest zrobiony źle to piszesz od nowa. I tak w kółko, póki nie uznasz że jest 'okej'.
Zakładam że znasz jakiś język programowania (naiwny jestem) więc naucz się programować, potem pisz swój język. Jak będziesz mieć jakieś konkretne pytania to pytaj.

11

Zacznij od wymyślenia nazwy dla swojego nowego języka :D

0

qrcze to jest temat w stylu legendarnych "jak stworzyć grę"

0

Radzę zacząć od napisania kompilatora do jakiegoś języka - to moim zdaniem jest łatwiejsze.

2

Sam rozważam możliwość skonstruowania własnego jezyka. Dlatego nie dziwi mnie sytuacja, że ktoś miewa trudność w poszukiwaniu materiałów. To niszowy temat także znalezienie czegoś konkretnego wymaga więcej zaangażowania, cierpliwości, i szczęścia :-) niż w przypadku szukania treści do skrobania własnej strony w pehapie.

Na początku polecam zacząć od zaprogramowania własnego języka skryptowego. Akurat w tym przypadku raczkowanie jest łatwiejsze i szybciej można do czegoś sensownego dojść. Poniżej umieszczam kilka linków do materiałów na ten temat.

C++ sztuka programowania - http://helion.pl/ksiazki/c-sztuka-programowania-herbert-schildt,cpszpr.htm
Książka przedstawia proste projekty z wykorzystaniem C++. Perełką tej publikacji jest ostatni rozdział, który opisuje krok po kroku jak zbudować własny mini intepreter C++. :)

Z tej książki na początek dowiesz całkiem sporo, ale ostrzegam, to nie jest łatwa książka. Implementacja tego interpretera opiera się na niskopoziomowym kodzie, tzn. ten kod jest bliższy językowi C niż możliwościom C++. Natomiast autor zaznacza, że starał się programować to tak, by było bardziej przejrzyście niż wydajnie - co mu moim zdaniem dość komicznie wyszło.

Tej książki nie dostaniesz na helione. Szukaj w innych internetowych księgarniach albo na aukcjach.

Lekcje programowania najlepsze praktyki. -http://helion.pl/ksiazki/lekcja-programowania-najlepsze-praktyki-brian-w-kernighan-rob-pike,prapro.htm

Książka ogólnie mało mówi o tworzeniu języków programowania, ale zawiera z 5 kartek w ostatnim rodziale na temat budowy własnego interpretera. Nie mam tej ksiażki w domu, widziałem ją chwile, ale zachęcam do sprawdzenia tej książki w księgarniach, może dowiesz się czegoś ciekawego.

Złośliwiec na swojej stronie Dark Cult of C++ http://darkcult.nazwa.pl/wiki/index.php/Download napisał artykuł na temat tworzenia własnego języka skryptowego. Treść jest pisana zabawnym tonem, ale implementacja pozostawia sobie wiele do życzenia. Warto przyjrzeć się, ale nie polecam tylko na tym polegać.

Odnośnie interpreterów. Łukasz Czerwiński robiąc magisterke utworzył kompilator, ale przed tym wykonał jeszcze interpreter. Swoje rozwiązanie przedstawia na stronie: http://www.lukaszczerwinski.pl/projects.html

W przypadku tworzenia języków warto też zainteresować się tematem języków domenowych. Akurat to nie są języki jak C++ - czyli przeznaczone do ogólnego użyku, lecz do specyfistycznych zastosowań. (Niektórzy sądzą - między innymi autor książki http://helion.pl/ksiazki/mistrz-programowania-zwieksz-efektywnosc-i-zrob-kariere-neal-ford-david-bock,mispro.htm, że rozwój języków programowania własnie w tym kierunku się potoczy. )

Języki domenowe są o tyle ciekawsze od tych zwykłych, że można je osadzać w innych językach. Na przykład możesz programować sobie w C++ i używać w nim także swój własny język przeznaczony do konkretnych problemów. Z tego co wiem to RoR ma własny język domenowy przeznaczony do mapowania obiektów w bazie danych. Ogólnie to fajna sprawa.

Jeśli chciałbyś się czegoś dowiedzieć na ten temat zachęcam nabyć książkę (zaznaczam, że treść nie jest taka łatwa):
http://helion.pl/ksiazki/jezyk-c-metaprogramowanie-za-pomoca-szablonow-david-abrahams-aleksey-gurtovoy,cppmet.htm

Inna sprawa o jakiej chciałem wspomnieć to fakt, że język programowania nie musisz tworzyć tylko w oparciu o C++. Są lepsze sposoby, np. język Haskell. W tym języku łatwiej poradzisz sobie z opisem gramatyki, dzięki czemu tworzenie języka okaże się łatwiejsze i bardziej przyjemne.

Jeszcze taka uwaga na temat tworzenia języków mi sie przypomniała. Kiedyś to zajęcie było bardziej mistyczne, bo mało kto wiedział jak należy programować kompilatory - tworzono je metodą prób i błędow w oparciu o własną intuicję. Poczytać o tym możesz w książce: http://helion.pl/ksiazki/wielkie-umysly-programowania-jak-mysla-i-pracuja-tworcy-najwazniejszych-jezykow-federico-biancuzzi-shane-warden,wieumy.htm?gclid=CK-3ssrh66wCFZQhtAod60O2MQ

Także nie łam się jeśli nie będziesz wiedział czegoś od A do Z; To raczej zdrowa norma w tego typu projektach ;-)
Udanej zabawy!

1 użytkowników online, w tym zalogowanych: 0, gości: 1