- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
https://www.evilfingers.com/publications/research_RU/oldnewlang.pdf языки, которые мы потеряли
...
Кстати, тот, кто считает, метапрограммирование достижением последних десятилетий, — жестоко
ошибается. Да, в языке Си++ оно появилось совсем недавно и в полном объеме (описанном в
последних редакциях Стандарта) не реализовано ни в одном реально существующем компиляторе, a
Nemerle и R# (языки программирования для платформы .Net со встроенной поддержкой
метапрограммирования) — вообще младенцы, но на самом деле концепция метапрограммирования
возникла еще во времена палеолита. Lisp, появившийся в далеком 1958 г., — хороший пример
языка, естественным образом поддерживающий метапрограммирование, одной из задач которого
является создание программы, выводящей точную копию своего собственного исходного текста — так
называемый куин (англ, quine). На Lisp'e он записывается так:
(funcall (lambda (x)
(append x (list (list 'quote x))))
'(funcall (lambda (x)
(append x (list (list 'quote x))))))
Листинг 1 программа на Lisp'е, распечатывающая сама себя
На Си так:
#include<stdio.h>
char*i="\\#include<stdio.h>",n='\n',q='"',*p=
"%s%cchar*i=%c%c%s%c,n='%cn',q='%c',*p=%c%c%s%c,*m=%c%c%s%c%c;%s%c",*m=
"int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}"
;int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}
А теперь попробуйте реализовать тоже самое на Си++ с использованием шаблонов и посмотрите, насколько
сильно они вам «помогут».
Но ведь это же неправильно! Появление ракет _должно_ перевернуть наше мышление! Поэтому — строим киоск за орбитой Плутона и каждому даем по ракете, чтобы туда летать, а горючее покупаем за деньги, вырученные от строительства космодромов и продаж ракет. Кто не может строить ракеты — пусть учит других, как на них летать. Сколько создается новых рабочих мест и главное, что все в бизнесе. Вот тут уж действительно, возврата в прошлое нет... Сигареты стоят миллиарды долларов, и деньги в индустрию вращаются просто огромные. Кто же захочет от них отказываться?! Напротив, ракеты будут стремительно «совершенствоваться», чтобы за сигаретами можно было летать даже на Альфу-Центавра.
Тот самый момент, когда вместо полёта на луну на ракете предлагается сделать свой велосипед и доехать на нём?
а могли бы изучать "пи аш пи", делать плагины для "битрикс" и неплохо баблишко рубить
Именно поэтому я за С++.
То есть, ДО говнокода?
Ну и проблемами закрытия ресурсов, отличных от памяти, лол.
В коко кстати есть топлевел функции
В C# есть value types, так что понимать про память там надо. А вообще там есть GC, и без понимания памяти ты сделаешь мемори лик
value types имеют семантику.. ээ.. value types. Они копируются по значению, передаются по значению итд.
Классы это reference types, ну они понятное дело живут на куче, и с ними работают по референсу
ООП это инструмент. Как молоток или паяльник. Иногда он нужен, иногда нет.
Стало быть, между клавиатурой и программистом находится некая субстанция, так что ли?..
Или всё-таки есть язык, настоящее метапрограммирование на котором не выглядит как кандидат сюда и который можно на практике поприменять?
Доступ к AST конечно лучше, чем доступ к тексту (или чем вообще никакого доступа), но он может оказаться слишком низкоуровневый.
Взять, например, груви: https://dzone.com/articles/groovy-ast-transformations
>MPS
вроде он никому не нужен. Чувак из JB, который всю вторую половину нулевых носился с идеей DSL, давно к нему охладел (и все остальные люди после chief/puppet/gradle/cocoa pods тоже поняли, что DSL не нужен).
Теперь они пишут на котлине.
Злые языки говорят, что даже Youtrack теперь вместо MPS использует JS
Как только начнёшь добавлять новые синтаксические конструкции, метушить станет сложнее.
Боюсь сейчас тут заспаунится j123123, но метушня в AST и нерегулярный сишкоалголоблядский синтаксис похоже несовместимы.
Без циклопических, головоломных либ сос ложными пасерами вроде шланга или хакостылей вроде ломбока в жабе.
А я будто бы буду спорить:
https://govnokod.ru/27551#comment654045
https://govnokod.ru/27420#comment627053
https://govnokod.ru/27340#comment621695
https://govnokod.ru/25558#comment473372
Зоответственно либо писать на таком языке неудобно (много синаксиального мусора вроде скобочек). Либо писать удобно, но нужен сложный парсер чтобы разбивать питушню на термы.
/fxd
Завещание уже можно составлять. Представь, как твои родичи бегают по чинушам с бумажками...
ниасилил карочи