Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-06-05

Немного о языках

Познавательная статья о жизни компьютерных языков.


Я всегда считал, что понятие наилучшего языка является слишком субъективным и слишком зависимым от природы текущей программистской задачи. Однако в течение своей карьеры я потратил много времени на обдумывание двух связанных с этим вопросов, которые кажутся мне более принципиальными. Во-первых, не сокращается ли со временем число языков, используемых при разработке программного обеспечения в целом? Другими словами, не сужается ли множество компьютерных языков? Во-вторых, из-за чего некоторый конкретный язык оказывается более пригодным, или более полезным, или быстрее осваиваемым при решении некоторой частной задачи?

При размышлении над этими вопросами я пришел к заключению, что интереснее наблюдать не за битвой тяжеловесов, а за их менее изученными отпрысками – специализированными (purpose-built) языками. Эти языки вырастают как сорняки на обочине основного пути развития языков, и их свойства и история заставляют пересмотреть интуитивные ответы на принципиальные вопросы относительно языков программирования. С учетом специализированных языков оказывается, что разработка языков программирования вовсе не сокращается, а их полезность определяется вовсе не улучшенной структурой или более развитыми свойствами с традиционных позиций конструирования языков. В специализированных языках даже игнорируется строгое определение, являющееся нормой для разработчиков компиляторов:

  • они как-то «меньше» полнофункциональных языков программирования;
  • часто они не являются полными по Тьюрингу;
  • у них может отсутствовать формальная грамматика (и парсеры);
  • иногда они используются автономно, но часто входят в более сложную среду или объемлющую программу;
  • часто, но не всегда они интерпретируются;
  • обычно они разрабатываются для какой-либо одной цели, но часто (непредумышленно) способы их использования изменяются.

И у некоторых таких языков даже отсутствует название.

Наиболее важно то, что на использовании специализированных языков часто основывается значительная часть разработки крупных программных систем, таких как операционные системы. Они либо служат инструментами разработки, либо позволяют «склеивать» различные части более крупной среды. Поэтому особенно интересно «раскопать» некоторые малоизвестные подобные творения и взглянуть на их связи с нашими общими представлениями о языках программирования. В течение своей карьеры, работая над несколькими коммерческими операционными системами и крупными программными компонентами, я пришел к выводу, что постоянная разработка новых языков является неотъемлемой частью процесса развития и сопровождения широкомасштабных программных систем


citforum.ru


Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)