Это решение зависит от цели программирования языка.
Для кого вы разрабатываете язык программирования? Вы разрабатываете его для людей, знакомых с c-производными языками? Если это так, то вам, вероятно, следует добавить поддержку null.
В целом я бы сказал, что вам следует избегать нарушения ожиданий людей, если оно не служит определенной цели.
Возьмите блоки переключателей в C# в качестве примера. Все метки меток на C# должны иметь явное выражение потока управления в каждой ветви. То есть все они должны заканчиваться либо выражением «break», либо явным goto. Это означает, что в то время как этот код является законным:
switch(x)
{
case 1:
case 2:
foo;
break;
}
, что этот код не был бы законным:
switch (x)
{
case 1:
foo();
case 2:
bar();
break;
}
Для того, чтобы создать «проваливаться» от случая 1 к случаю 2, то необходимо вставить Гото, например:
switch (x)
{
case 1:
foo();
goto case 2;
case 2:
bar();
break;
}
Это, возможно, что-то, что нарушило бы ожидания программистов C++, которые опирающиеся C#. Однако добавление этого ограничения служит целям. Это исключает возможность использования всего класса общих ошибок C++. Это немного добавляет к кривой обучения язык, но результат является чистой выгодой для программиста.
Если ваша цель - создать язык, ориентированный на программистов на С ++, то удаление null, вероятно, нарушит их ожидания. Это вызовет путаницу и затруднит изучение вашего языка. Ключевой вопрос заключается в том, «какую пользу они получают»? Или, альтернативно, «какой ущерб причиняет это».
Если вы просто пытаетесь создать «сверхмалый язык», который может быть реализован в течение одного семестра, тогда история отличается. В этом случае ваша цель - не создавать полезный язык, ориентированный на определенный сегмент населения. Вместо этого просто научиться создавать компилятор. В этом сценарии наличие меньшего языка является большой выгодой, и поэтому стоит исключить нуль.
Итак, повторим, я бы сказал, что вы должны:
- Определите ваши цели в создании языка. Для кого предназначен язык и каковы его потребности.
- Примите решение, основанное на том, что помогает целевым пользователям достичь своих целей наилучшим образом.
Обычно это сделает желаемый результат довольно ясным.
Конечно, если вы явно не сформулируете свои цели дизайна, или вы не можете согласиться с тем, что они есть, тогда вы все еще будете спорить. В этом случае, однако, вы все равно обречены.
Благодарим за понимание, Патрик. – Allyn
Возможный дубликат http://stackoverflow.com/questions/178026/why-is-null-present-in-c-sharp-and-java – nawfal