Почему тип идет после имени переменной на современных языках программирования?

Почему все почти все современные языки программирования (Go, Rust, Kotlin, Swift, Scala, Nim, даже Python last version) всегда появляются после имени переменной в объявлении переменной, а не раньше?

Почему x: int = 42, а не int x = 42 ?
Является ли последнее не более читаемым, чем первое?
Это просто тренд или есть какие-то действительно значимые причины этого решения?

31 голос | спросил Andre Polykanine 19 PMpTue, 19 Apr 2016 21:39:37 +030039Tuesday 2016, 21:39:37

1 ответ


38

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

Это важно, потому что добавление необязательных частей выражения дальше вправо уменьшает разбор неоднозначности и увеличивает согласованность между выражениями, которые используют эту часть, и теми, которые этого не делают. Проще всего проанализировать декларацию, когда вы знаете ключевое слово var, и имя переменной обязательно, прежде чем перейти к необязательному материалу. В теории, все те вещи, которые делают его более легким для синтаксического анализа для компьютеров должны улучшить общую читаемость для человека тоже, но это намного более спорно.

Этот аргумент становится особенно сильным, если вы рассматриваете все необязательные модификаторы типов, которые имеет «несовременный» язык, такой как C ++, например * для указателей, & для ссылок, const, volatile и так далее. Когда вы забрасываете запятыми для нескольких объявлений, вы начинаете получать некоторые действительно странные двусмысленности, такие как int* a, b; не делать b указатель.

Даже C ++ теперь поддерживает объявления типа «справа» в виде auto x = int{ 4 }; и имеет некоторые преимущества .

ответил Ixrec 19 PMpTue, 19 Apr 2016 21:53:47 +030053Tuesday 2016, 21:53:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132