Linux за българи: Форуми

Хумор, сатира и забава => Живота, вселената и някакви други глупости => Темата е започната от: bop_bop_mara в Nov 03, 2010, 17:51



Титла: "Псевдо" езици за програмиране
Публикувано от: bop_bop_mara в Nov 03, 2010, 17:51
Не харесвам никакви "псевдо" езици за програмиране като Джава, Питон, Пърл... аз използвам Питона като трябва да напиша 10-на реда без компилирам, за друго не.

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

Ами приемам предизвикателството и подлагам темата на публична дискусия.

Java - аз не я обичам много, но тя е най-слабият ти пример за "псевдо" език, при все, че от почти всички, тя най-много се доближава до посочените за истински според теб езици - C и C++, дето се вика - при нея даже програмите се компилират (както до байткод, така и до машинен). Пък и, ако беше псевдо език, щяха ли от GNU да си играят да си пишат собствен компилатор за нея ;)

Python - това, че е динамично типизиран, в частност води до много изчистен и подреден вид на кода му, да, прилича на псевдокод. Но езикът си е съвсем нормален език за програмиране, поддържа много красива обектно-ориентирана парадигма и да се пише на него е удоволствие. Има хубава "съвместимост" със C, комбинацията от тях двата е доста мощен арсенал. В Линукс с негова помощ е направен много потребителски софтуер, предполагам всеки от нас ползва нещо, което в основата си е Python.

Perl пък е един от най-полезните езици за всички системни администратори. Може да е грозен и труден, но е незаменим в повечето си предназначения, не съм аз човекът, който може да дава конкретни примери, но тук със сигурност има такива хора.

Опитвам се да разбера твоята дефиниция за "псевдо" език - дали имаш пред вид обектно-ориентирани езици, или пък интерпретирани езици, или пък динамично-типизирани или пък скриптови?? Кажи кои са за теб истинските езици и кои са "псевдо", къде ще сложиш други популярни езици като Bash, Pascal, Ruby, Lisp, Haskell, Prolog, PHP, Scala и т.н.

Интересно ми е какво мислят всички по този въпрос - кой език за програмиране бихте нарекли "псевдо"-език? И кой - не?


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: VladSun в Nov 03, 2010, 18:55
http://en.wikipedia.org/wiki/Compiled

Та... какво значи "компилиран" :) Чак след това ще си изясня какво е "псевдо-езикът" споменат тук.


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: VladSun в Nov 03, 2010, 18:57
Езикът сам по себе си не може да бъде дефиниран като "компилиращ се", "интерпретиращ се" и .т.н.
Езикът е набор от правила - само това!


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: b2l в Nov 03, 2010, 18:59
Нещо против Java-та ли  >:( >:( >:( >:( >:( >:(?
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bop_bop_mara в Nov 03, 2010, 19:03
Езикът сам по себе си не може да бъде дефиниран като "компилиращ се", "интерпретиращ се" и .т.н.
Езикът е набор от правила - само това!
Да, още повече, че за доста езици има и компилатори, и интерпретатори...

Аз останах с впечатление, че "псведо"-език е език, който е по-различен от някои общоприети езици (доколкото разбрах C и C++ не влизат в групата на "псведо"-езиците). Но с какво трябва да е по-различен, трябва да каже bvbfan...


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: gat3way в Nov 03, 2010, 20:47
И C/C++ могат да се компилират до байткод, благодарение на LLVM. Между другото, това позволява разни оптимизации, които са невъзможни в compile-time и поради тази причина, някои C приложения компилирани с Clang/LLVM работят доста по-бързо, отколкото ако се компилират с gcc. Наскоро успешно компилираха ядрото с Clang. Освен което, компилаторът не е GPL-нат, а е с наистина свободен лиценз.


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: VladSun в Nov 03, 2010, 20:57
Мдам, а какво ще стане със всички езици (независимо дали са "компилирани" или "интерпретирани"), ако стигнем до разискване на "opcode в CPU".


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: lkr в Nov 03, 2010, 21:30
Не харесвам никакви "псевдо" езици за програмиране като Джава, Питон, Пърл... аз използвам Питона като трябва да напиша 10-на реда без компилирам, за друго не.

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

Ами приемам предизвикателството и подлагам темата на публична дискусия.

Java - аз не я обичам много, но тя е най-слабият ти пример за "псевдо" език, при все, че от почти всички, тя най-много се доближава до посочените за истински според теб езици - C и C++, дето се вика - при нея даже програмите се компилират (както до байткод, така и до машинен). Пък и, ако беше псевдо език, щяха ли от GNU да си играят да си пишат собствен компилатор за нея ;)

Python - това, че е динамично типизиран, в частност води до много изчистен и подреден вид на кода му, да, прилича на псевдокод. Но езикът си е съвсем нормален език за програмиране, поддържа много красива обектно-ориентирана парадигма и да се пише на него е удоволствие. Има хубава "съвместимост" със C, комбинацията от тях двата е доста мощен арсенал. В Линукс с негова помощ е направен много потребителски софтуер, предполагам всеки от нас ползва нещо, което в основата си е Python.

Perl пък е един от най-полезните езици за всички системни администратори. Може да е грозен и труден, но е незаменим в повечето си предназначения, не съм аз човекът, който може да дава конкретни примери, но тук със сигурност има такива хора.

Опитвам се да разбера твоята дефиниция за "псевдо" език - дали имаш пред вид обектно-ориентирани езици, или пък интерпретирани езици, или пък динамично-типизирани или пък скриптови?? Кажи кои са за теб истинските езици и кои са "псевдо", къде ще сложиш други популярни езици като Bash, Pascal, Ruby, Lisp, Haskell, Prolog, PHP, Scala и т.н.

Интересно ми е какво мислят всички по този въпрос - кой език за програмиране бихте нарекли "псевдо"-език? И кой - не?

И каква точно е красивата парадигма на Python, duck-typing? Защото аз не виждам нищо красиво в неговия обектен модел, може би explicit self? Красотата му пък няма нищо общо с това, че е dynamic typed. Също така Perl може да бъде заменен изцяло от Ruby/Python. Гледам са изредени езици като Haskell i LISP family, но за тях нищо не е споменато? Може би сме python biased?


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: gat3way в Nov 03, 2010, 21:38
Иначе не мога да коментирам гореизброените езици колко са псевдо, защото не им разбирам. Едно изключение е perl, с който имам нещастието да имам вземане-даване в последно време. Не знам дали е псевдо-език, но философията му е изначално сбъркана, отвратителна, предразполага към мърлявщина (което за мен е много лесно - изключително лесно превръщам свестно написан код в мърлявщина и хакерия, от която само аз си разбирам). Има поне няколко начина да свършиш едно и също, като резултата е че като не си запознат с някой от тези начини и видиш чужд код, ти бърка в здравето. Отвратителната имитация на указатели с references е нещо, което не мога да понасям (в PHP за жалост също съществува това, но не е издигнато в такъв култ). Разделянето на хешове, масиви и скалари е простотия и не ми изглежда толкова естествено, но айде това си е мое мнение. Маниакално сбърканият scoping е простотия. Уж е много строго последното, ама не. Мога да дам много пресен пример с това, ама ще ми дойде нанагоре да псувам отново за това. Не мога да разбера защо трябваше file handle-ите да са генерално изключение от иначе хубавата система и винаги да са глобални, където и да ги декларираш. И като цяло, цялата идея около този език е отвратителна и ако зависеше от мен, щях да го забраня, защото предизвиква мозъчни увреждания.

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


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bop_bop_mara в Nov 04, 2010, 00:08
И каква точно е красивата парадигма на Python, duck-typing? Защото аз не виждам нищо красиво в неговия обектен модел, може би explicit self?
Е, ти не виждаш, аз виждам, сравнявам с Java. Всеки си има вкус, но на мен ми харесва след като всичко е обект не всичко да е наследник на Object, а всичко да е обект - от числата и инстанциите на класове, до модулите. Няма смисъл да спорим по въпроса дали duck typing-а е добра или лоша идеология, защото няма да достигнем до точен извод, а и въпросът тук е какво и защо може да се счита за "псевдо" език.

Гледам са изредени езици като Haskell i LISP family, но за тях нищо не е споменато?
Ми какво искаш да спомена за тях, чакам да чуя и те ли са "псевдо" езици или са си истински, но dvbfan все още не е казал нищо по въпроса. :)


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bvbfan в Nov 04, 2010, 07:54
Нарекох скриптовите езици като Питон, Пърл... "псевдо" езици за програмиране поради една причина, а именно че написаната програма се изпълнява от друга програма - липсва оптимизация. Защо липсва, пишейки код (Питон е С-like и на двата езика може да се пише "красив" и подреден код) ние се доверяваме на програмата майка да бъде изпълнена по възможно най-оптималният начин, т.е. няма свобода да се човърка непрекъснато основният изпълнител. Това от една страна е добре - знаеш, че някой се грижи за динамичната работа с памет, например, но от друга страна колкото изпълнението на основната програма е "по-универсално" толкова по-капризно е от към изпълнение и ресурси т.е. имплементацията е една и съща за приложения от различен характер, което за мен е минус. Прибавих и Джава към тях, защото положението е сходно. Компилирането до байткод и изпълнението му от виртуална машина на практика е аналогична или C# http://en.wikipedia.org/wiki/File:Overview_of_the_Common_Language_Infrastructure.svg
За сметка на това получената "свобода" във Фортран, С/С++, Паскал/Делфи от една е страна е много добре може да си прилагаш собствено оптимизиране за даденото приложение по твое усмотрение и необходимост, от една страна води до много проблеми с които може да се сблъскаш. Идеална хубост няма, но тенденцията е да се дава път на скриптовите езици като Питон, това "обектно-ориентиран" просто вече е извращение, също така и на С#, който според М$ е С++/++, т.е. ново поколение С и не бил близък до Джава, но аз съм на мнение, че като логика на изпълнение си е Джава-лайк. Казах, че според мен са боклук само да породя спор на тази тема :) в действителност нещата са комплексни и много често е по-добре да се пише на езици ново поколение. Искрено се радвам на QT/Nokia за усилията, които полагат за разпространението на фреймуорк-а и с интерес следя развитието му.


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: b2l в Nov 04, 2010, 08:15
@bvbfan: т.е. за теб псевдо език е всеки, който не интерпретира или се компилира до байт код (включително и C#), така ли?


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bvbfan в Nov 04, 2010, 09:25
Всеки език, който е рън-тайм е "псевдо" език за програмиране, докато Джава и С# са хибриди, общо взето и реално погледнато може би са най-доброто, но аз не им симпатизирам  :'(


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bop_bop_mara в Nov 04, 2010, 09:43
Интересно е как ти твърдиш, че понеже не знаеш какво реално прави интерпретатора или виртуалната машина, която ти изпълнява кода, ѝ нямаш доверие. Ами аз не знам и компилатора какво прави като ми прави машинния код или изпълнимия файл. И в двата случая знаем тези програми какво би трябвало да правят, можем да прочетем някъде документацията по това как работят, но не знам колко от нас са им прегледали кода, за да се уверят в това какво наистина се случва и да им дадат пълното си доверие.

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

Програмистът трябва да има някакво доверие във всички програми, които осигуряват (по един или друг начин) изпълнението на кода му. Иначе няма да знае какво да пише ;)

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

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


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: clovenhoof в Nov 04, 2010, 10:56
Всеки език, който е рън-тайм е "псевдо" език за програмиране, докато Джава и С# са хибриди, общо взето и реално погледнато може би са най-доброто, но аз не им симпатизирам  :'(

Нищо общо няма процеса на генериране на машинен код и езика-източник за програмиране. Представи си че някой напише компилатор който превръща код написан на С# директно в машинни инструкции. Тогава според теб С# вече не е "псевдо" език.
Също така доколкото знам от питон може да се генерира независим изпълним файл.


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: gat3way в Nov 04, 2010, 11:17
Самият компилатор не генерира директно машинен език от C кода. gcc примерно първо прави там някакъв семантичен анализ на сорса, ако всичко е наред, тогава създава междинно представяне (RTL), което се ползва от backend-а, за да създаде машинен код. Backend-a дори може да не е gcc, примерно може gcc да ти генерира междинния вид, който да се докара от LLVM до машинен код.

И въпросният RTL не е асемблер. Ако някой си е играл да чертае flow graphs на програми с graphviz и egypt, значи със сигурност е карал gcc компилатора да му дъмп-ва RTL нещата.



Титла: Re: "Псевдо" езици за програмиране
Публикувано от: Naka в Nov 04, 2010, 11:31
Ами регулярните изрази, към кои езици спадът?

Напълно съм съгласен с g3w за идиотщината в perl. Обаче от него се пръкнално нещо много хубаво и полезно - PCRE - Perl Compatible Regular Expressions.
енджина PCRE работи много хубаво и бързо, Има прекрасна документация, PHP го използва... Незнам дали го използват и C програмистите.
Недейте толкова да критикувате скриптовите езици. [_]3



Титла: Re: "Псевдо" езици за програмиране
Публикувано от: bop_bop_mara в Nov 04, 2010, 11:35
Недейте толкова да критикувате скриптовите езици. [_]3
А, не, може да ги изхвърлим като ненужни и излишни  ;D Друго си е вместо bash да пишем C програми и да си пускаме ръчно fork() и exec() за всяко core utility  ;D


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: clovenhoof в Nov 04, 2010, 11:38
В крайна сметка се генерира машинен код и мисълта ми беше друга.
Това за RTL не го знам. Как изглежда и какво представлява? Някакъв линк можеш ли да дадеш?
В линукс програмирането нямам опит, но във MS VS компилатора може да генерира и асеблерки файлове, освен обектните.

А как стои въпроса ако компилирам и пиша асемблерски код?


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: gat3way в Nov 04, 2010, 12:58
http://en.wikipedia.org/wiki/Register_transfer_language

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


Титла: Re: "Псевдо" езици за програмиране
Публикувано от: VladSun в Nov 04, 2010, 16:10
Пак повтарям - няма "скриптови езици", "компилиращи се езици", "интерпретиращи се езици" и т.н. Всички тези "определения" са за "втора фаза" - едва след като си написал нещо смислено на съответния език.

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