Javascript: хорошие моменты - отличная книга. Часто я читаю отрывки вроде следующего с точки зрения языкового дизайнера:
undefinedandNaNare not constants. They are global variables, and you can change their values. This should not be possible, and yet it is. Don't do it.
Выводы:
undefined в моем коде Javascript.undefined неизменным.Другой, более тонкий пример - «for in не должен перечислять свойства прототипа».
Я хочу книгу, посвященную этим вопросам языкового дизайна вне контекста конкретного языка.
Если бы вы пытались создать «идеальный» объектно-ориентированный язык, какие книги вы бы прочитали в качестве руководства?





Вы можете взять страницу из того же места, что и Java, Ruby, Objective C и другие, и проверить Принципы разработки Smalltalk. По большей части это фундаментальный материал по коммуникации между объектами, а не что-либо конкретно о Smalltalk.
Что касается действительно продуманных книг по языковому дизайну, я думаю, что Дизайн и эволюция C++ определенно заслуживает упоминания. Я сомневаюсь, поскольку вы говорите, что хотите «идеальный» объектно-ориентированный язык, а C++ далек от совершенства. Тем не менее, вы, вероятно, все еще можете многому у него научиться.
Тем не менее, вопросы, которые вы поднимаете, похоже, больше связаны с Принцип наименьшего удивления или Правило наименьшего сюрприза, чем с дизайном внутренних компонентов языка.
Дизайн и эволюция C++ - это хорошо.
Построение объектно-ориентированного программного обеспечения тоже.
Они скорее зависят от языка (C++, Eiffel), но есть много уроков, не зависящих от языка.
Веб-сайт «lambda the ultimate» в значительной степени посвящен языкам программирования, и иногда у них есть хорошие ресурсы, хотя они, как правило, больше интересуются академическими вещами. Например, функциональное программирование там велико.
http://lambda-the-ultimate.org/node/3
Вы можете ознакомиться с проектной документацией Perl6.
Если вы прочитаете Сводка 6, вы узнаете, что оператор сложения назван:
infix:<+>infix:«+»infix:<<+>>infix:{'+'}infix:{"+"}Это означает, что вы можете создавать свои собственные операторы:
sub postfix:<!> ($n) { [*] 1..$n }
Есть отличные книги, объясняющие принципы дизайна, применяемые на широко используемых языках, но если вы действительно хотите «понять» принципы дизайна, вам следует копнуть глубже. Я определенно рекомендую «Концепции дизайна на языках программирования» от franklyn turbak. Эта книга пытается систематически исследовать концепции языка программирования на основе его математических основ.