Хорошие ресурсы по дизайну языка программирования? [закрыто]

Javascript: The Good Parts - отличная книга. Часто я вижу, что с точки зрения дизайнера языков я читаю такие отрывки:

undefinedи NaNне являются постоянными. Они являются глобальными переменными, и вы можете изменить их значения. Это не должно быть возможным, и все же это так. Не делай этого.

Takeaways:

  1. Не меняйте значение undefinedв моем коде Javascript.
  2. При разработке языка сделайте его undefinedнеизменным.

Другой, более тонкий пример: « for inне следует перечислять свойства прототипа».

Я хочу, чтобы книга обсуждала эти вопросы языкового дизайна вне контекста конкретного языка.

Если бы вы пытались создать «идеальный» ОО-язык, какие книги вы бы прочитали для руководства?

14.12.2008 21:16:01
5 ОТВЕТОВ
РЕШЕНИЕ

Веб-сайт «lambda the ultimate» в основном посвящен языкам программирования, и у них иногда есть хорошие ресурсы, хотя они, как правило, больше интересуются академическими вещами. Например, там большое функциональное программирование.

http://lambda-the-ultimate.org/node/3

http://lambda-the-ultimate.org/papers

http://lambda-the-ultimate.org/node/492

8
14.12.2008 21:43:03

Вы можете взять страницу из того же места, что и Java, Ruby, Objective C и другие, и ознакомиться с принципами проектирования в Smalltalk . Во многом это основополагающий материал о связи между объектами, а не что-то конкретно о Smalltalk.

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

Однако те моменты, о которых вы говорите, скорее всего, связаны с принципом наименьшего удивления или правилом наименьшего удивления, а не с дизайном внутренних языков.

6
14.12.2008 21:59:11

Дизайн и эволюция C ++ - это хорошо.

Конструкция объектно-ориентированного программного обеспечения тоже.

Они довольно специфичны для языка (C ++, Eiffel), но есть много уроков, не зависящих от языка.

4
14.12.2008 21:33:37

Вы можете проверить проектную документацию  Perl6

Perl6 конспект

Если вы прочтете « Синопсис 6» , вы обнаружите, что оператор сложения называется:

  • infix:<+>
  • infix:«+»
  • infix:<<+>>
  • infix:{'+'}
  • infix:{"+"}

Это означает, что вы можете создавать свои собственные операторы:

sub postfix:<!> ($n) { [*] 1..$n }
1
15.12.2008 04:26:36

Есть замечательные книги, в которых объясняются принципы дизайна, применяемые на широко используемых языках, но если вы действительно хотите «понять» принципы дизайна, вам стоит копать глубже. Я бы порекомендовал «Концепции дизайна в языках программирования» Фрэнклин Турбак. Эта книга пытается систематически исследовать понятия языка программирования на основе его математических основ.

0
25.06.2017 06:25:54