В 40 не верю. Одна свёртка + соответстующие типы уже 30; да и я за краткостью не гнался.
Насчёт замыканий, это да, на RSDN была тема про то, как такое решение на OCaml обогнало решение на Си в лоб. Интересно было бы сравнить OCaml и Nemerle, так как их решения в данном случае совпадают.
Кстати, на Nemerle же потенциально возможно грузить файл в compile-time и макросами генерировать код выполнения на самом же Nemerle, а не писать VM. Так не пробовали? По крайней мере такое предлагали для ЛИСПа, но на Nemerle тоже реально. Получается та же кодогенерация, но не в текст, а более прямым методом.
Когда я прочёл спеку VM, сразу решил писать на C++, о чём в последствии ни разу не пожалел.
Кода получилось меньше, чем на Nemerle, кстати: orbit.hpp + orbit.cpp
А дальше этой VM можно воспользоваться из чего угодно.
public CPPData someCSharpFunction(string filename)
{
CPPLoaderClass c(filename);
c.load();
c.doSomeOtherWork();
CPPData d = c.result();
d += "here is html code";
return d;
}
Ну или что-то подобное. Т.е. использовать объекты Си++ в шарповом коде и наоборот?
В идеале нужен язык, в котором можно было бы пользоваться всеми наработками. Одну компоненту взять из Java, другую из C#, и чтобы всё прозрачно работало вместе, но мне это кажется утопией. Во что соберётся Java + C + Ruby, например.
Вставить, например, значок суммы, в язык мы не можем
Если речь о юникоде, то вроде как можно, но думаю, что тут подразумевается что пошире. Однако это ведь вопрос представлений. Например, в хаскеле очень многое (в том числе автоматом) поддерживает класс Show и может быть выведено строкой. Формально, можно завести класс Edit, специальная реализация которой будет в вашем редакторе матрицу отображать матрицей и позволять её именно так редактировать. Однако это займет много времени, а толку мало.
Если я правильно понимаю, недостаток, например, compile-time преобразования строки (например, в TH или Nemerle) (а уж там можно назадавать любой синтаксис) в том, что это не будет поддерживается IDE?
Ну, я понимаю, зачем нужны DSL, я не понимаю, как MPS радикально упрощает их создание. Их вон что на лиспе, что на немерле, что на хаскеле клепают (и даже на C++), и текстовое представление вроде не было самой большой проблемой.
Я, видимо, так и не смогу понять всей идеи до конца, без конкретного примера. Уж сколько читаю, много слов о том, как может быть улучшена разработка, чем лучше редактировать AST, но примера, наглядно показывающего, как можно получить результат с куда меньшими затратами, чем от обычного ЯПа, не видел.
Замените это на функторы и всё станет ясно.
Вы сохранили ссылку на переменную, которой после выхода из функции нет. Что в таком случае положено? Не важно, лямбда там или нет, обращение по этой ссылке — undefined behaviour.
Did you really give an interview to IEEE?
in which you confessed that C++ was deliberately created as an awful language for writing unmaintainable code to increase programmers' salaries?
Именно, бо́льшие программы на PureBasic оторвутся в бо́льшую сторону значительно, а если GUI-библиотек нет и приходится события обрабатывать самому, то этот отрыв будет ещё и нелинейным.
Поэтому и был недоумённый (исходный) вопрос про простоту того же самого на Python. Хочется услышать от вас, есть всё-таки аналогичный мощный и простой способ писать так на PureBasic?
MS Office тем не менее продаётся хорошо, и создавался профессионалами, что наводит на мысли.
Говорить о 5-мегабайтности Hello World'а не имеет смысла, потому что их никто не пишет, а программа не станет в 10 раз больше, потому что в этих 5 мегабайтах и заключён весь GUI, ваш код на размер уже так влиять не будет.
Разумеется, если Вы именно Hello World и пишете, то можно взять Си без рантайма и на одном АПИ наваять, будет минимальная программа, но смысл? Не стоит затрат.
Вообще, придирка к вашему коду должна была заключаться не в том, что «на Python проще», а в том, что у вас
Event = WaitWindowEvent
что очень низкоуровнево, писать так большие программы не получится.
Возможно, GUI-библиотеки там тоже есть, но вы язык и его библиотеки практически не описали.
Вы ведь не думаете, что если программа увеличится с 5 до 100 строк, то она станет весить не 10 мегов, а 200?
Так что про «Hello World»'ность программы — какой-то странный аргумент.
Конечно, это проще ручного цикла обработки. Там ещё и layout'ы есть удобные, так что не требуется задавать размеры, а с фиксированными размерами будет напряг при изменении размеров окна.
А по-вашему 2 строки на описание окна это сложно? Если да, то чем это сложнее?
exe-шник не замерял, какой-то странный вопрос с учётом нынешних скоростей и ёмкостей. Уж явно не больше 10 мегов будет (при независимом exe, включающем всё, разумеется).
Я вообще-то и не прощался.
Я хотел уйти до тех пор, пока не уберут это нововведение (менять пароль раз в несколько месяцев), а сейчас оказывается, что этого и так не будет.
Насчёт замыканий, это да, на RSDN была тема про то, как такое решение на OCaml обогнало решение на Си в лоб. Интересно было бы сравнить OCaml и Nemerle, так как их решения в данном случае совпадают.
Кстати, на Nemerle же потенциально возможно грузить файл в compile-time и макросами генерировать код выполнения на самом же Nemerle, а не писать VM. Так не пробовали? По крайней мере такое предлагали для ЛИСПа, но на Nemerle тоже реально. Получается та же кодогенерация, но не в текст, а более прямым методом.
Кода получилось меньше, чем на Nemerle, кстати:
orbit.hpp + orbit.cpp
А дальше этой VM можно воспользоваться из чего угодно.
Ну или что-то подобное. Т.е. использовать объекты Си++ в шарповом коде и наоборот?
В идеале нужен язык, в котором можно было бы пользоваться всеми наработками. Одну компоненту взять из Java, другую из C#, и чтобы всё прозрачно работало вместе, но мне это кажется утопией. Во что соберётся Java + C + Ruby, например.
Если речь о юникоде, то вроде как можно, но думаю, что тут подразумевается что пошире. Однако это ведь вопрос представлений. Например, в хаскеле очень многое (в том числе автоматом) поддерживает класс Show и может быть выведено строкой. Формально, можно завести класс Edit, специальная реализация которой будет в вашем редакторе матрицу отображать матрицей и позволять её именно так редактировать. Однако это займет много времени, а толку мало.
Если я правильно понимаю, недостаток, например, compile-time преобразования строки (например, в TH или Nemerle) (а уж там можно назадавать любой синтаксис) в том, что это не будет поддерживается IDE?
Попробую посмотреть презентацию.
Вы сохранили ссылку на переменную, которой после выхода из функции нет. Что в таком случае положено? Не важно, лямбда там или нет, обращение по этой ссылке — undefined behaviour.
Of course not. Read the real IEEE interview.
Поэтому и был недоумённый (исходный) вопрос про простоту того же самого на Python. Хочется услышать от вас, есть всё-таки аналогичный мощный и простой способ писать так на PureBasic?
Говорить о 5-мегабайтности Hello World'а не имеет смысла, потому что их никто не пишет, а программа не станет в 10 раз больше, потому что в этих 5 мегабайтах и заключён весь GUI, ваш код на размер уже так влиять не будет.
Разумеется, если Вы именно Hello World и пишете, то можно взять Си без рантайма и на одном АПИ наваять, будет минимальная программа, но смысл? Не стоит затрат.
Вообще, придирка к вашему коду должна была заключаться не в том, что «на Python проще», а в том, что у вас
что очень низкоуровнево, писать так большие программы не получится.
Возможно, GUI-библиотеки там тоже есть, но вы язык и его библиотеки практически не описали.
Так что про «Hello World»'ность программы — какой-то странный аргумент.
А по-вашему 2 строки на описание окна это сложно? Если да, то чем это сложнее?
exe-шник не замерял, какой-то странный вопрос с учётом нынешних скоростей и ёмкостей. Уж явно не больше 10 мегов будет (при независимом exe, включающем всё, разумеется).
Какая разница, компилируемый или нет, когда тут GUI сравнивается? Вот пример на компилируемом:
Я хотел уйти до тех пор, пока не уберут это нововведение (менять пароль раз в несколько месяцев), а сейчас оказывается, что этого и так не будет.