История изменений
Исправление AlexM, (текущая версия) :
Это тот же самый код, который бы нужно было поддерживать и в компиляторе. Все ровно то же самое. Только ты можешь эту тулзу запустить когда тебе нужно. Когда у тебя есть время на это. И в этой тулзе можно сделать такие проверки, которые в компилятор включать не будешь.
Тут вот какое дело. Эту тулзу «для расширенной проверки синтаксиса» при разработке нужно запускать очень часто. В пределе - после каждого введённого или измененного символа, в фоне редактора. Ну, чтобы подчёркивать красным некорректный код до его сохранения.
Компилятор же запускается один раз и вместе с пачкой юнит-тестов, которые при достаточно полном покрытии на проекте достаточного размера выполняются, ну, скажем так, очень не мгновенно. Соответственно, стоимость запуска компилятора на том этапе стремится к нулю.
Итого: относительно медленную тулзу мы запускаем постоянно; относительно быстрый компилятор мы гоняем не просто так, а с пачкой юнит-тестов. В чем профит упрощённого синтаксиса, допускающего нелепые ошибки человека и быстрого компилятора, эти ошибки пропускающего?
…Поэтому все в синтаксис ты не затащишь и нужен определенный компромисс.
Знаете, Ваш пример про
сделать_все_зашибись()
В данном конкретном случае даже Ява, в которой требовалось сохранять обратную совместимость, получила приемлемое по степени визуального уродства решение с аннотациями.
Собственно, пометить переменные и параметры методов как nullable или (по умолчанию) not-null - это не бог весть какая ракетная наука. А волосы забывчивого кодера после такого улучшения сразу становятся мягче и шелковистее, и попа меньше прирастает к стулу при попытках найти источник дурацкой ошибки.
Исправление AlexM, :
Это тот же самый код, который бы нужно было поддерживать и в компиляторе. Все ровно то же самое. Только ты можешь эту тулзу запустить когда тебе нужно. Когда у тебя есть время на это. И в этой тулзе можно сделать такие проверки, которые в компилятор включать не будешь.
Тут вот какое дело. Эту тулзу «для расширенной проверки синтаксиса» при разработке нужно запускать очень часто. В пределе - после каждого введённого или измененного символа, в фоне редактора. Ну, чтобы подчёркивать красным некорректный код до его сохранения.
Компилятор же запускается один раз и вместе с пачкой юнит-тестов, которые при достаточно полном покрытии на проекте достаточного размера выполняются, ну, скажем так, очень не мгновенно. Соответственно, стоимость запуска компилятора на том этапе стремится к нулю.
Итого: относительно медленную тулзу мы запускаем постоянно, относительно быстрый компилятор мы гоняем не просто так, а с пачкой юнит-тестов. В чем профит упрощённого синтаксиса, допускающего нелепые ошибки человека и быстрого компилятора, эти ошибки пропускающего?
…Поэтому все в синтаксис ты не затащишь и нужен определенный компромисс.
Знаете, Ваш пример про
сделать_все_зашибись()
В данном конкретном случае даже Ява, в которой требовалось сохранять обратную совместимость, получила приемлемое по степени визуального уродства решение с аннотациями.
Собственно, пометить переменные и параметры методов как nullable или (по умолчанию) not-null - это не бог весть какая ракетная наука. А волосы забывчивого кодера после такого улучшения сразу становятся мягче и шелковистее, и попа меньше прирастает к стулу при попытках найти источник дурацкой ошибки.
Исправление AlexM, :
Это тот же самый код, который бы нужно было поддерживать и в компиляторе. Все ровно то же самое. Только ты можешь эту тулзу запустить когда тебе нужно. Когда у тебя есть время на это. И в этой тулзе можно сделать такие проверки, которые в компилятор включать не будешь.
Тут вот какое дело. Эту тулзу «для расширенной проверки синтаксиса» при разработке нужно запускать очень часто. В пределе - после каждого введённого или измененного символа, в фоне редактора. Ну, чтобы подчёркивать красным некорректный код до его сохранения.
Компилятор же запускается один раз и вместе с пачкой юнит-тестов, которые при достаточно полном покрытии на проекте достаточного размера выполняются, ну, скажем так, очень не мгновенно. Соответственно, стоимость запуска компилятора на том этапе стремится к нулю.
Итого: относительно медленную тулзу мы запускаем постоянно, относительно быстрый компилятор мы гоняем не просто так, а с пачкой юнит-тестов. В чем профит упрощённого синтаксиса, допускающего нелепые ошибки человека и быстрого компилятора, эти ошибки пропускающего?
…Поэтому все в синтаксис ты не затащишь и нужен определенный компромисс.
Знаете, Ваш пример носит демагогический характер.
В данном конкретном случае даже Ява, в которой требовалось сохранять обратную совместимость, получила приемлемое по степени визуального уродства решение с аннотациями.
Собственно, пометить переменные и параметры методов как nullable или (по умолчанию) not-null - это не бог весть какая ракетная наука. А волосы забывчивого кодера после такого улучшения сразу становятся мягче и шелковистее, и попа меньше прирастает к стулу при попытках найти источник дурацкой ошибки.
Исходная версия AlexM, :
Это тот же самый код, который бы нужно было поддерживать и в компиляторе. Все ровно то же самое. Только ты можешь эту тулзу запустить когда тебе нужно. Когда у тебя есть время на это. И в этой тулзе можно сделать такие проверки, которые в компилятор включать не будешь.
Тут вот какое дело. Эту тулзу «для расширенной проверки синтаксиса» при разработке нужно запускать очень часто. В пределе - после каждого введённого или изменено символа, в фоне редактора. Ну, чтобы подчёркивать красным некорректный код до его сохранения.
Компилятор же запускается один раз и вместе с пачкой юнит-тестов, которые при достаточно полном покрытии на проекте достаточного размера выполняются, ну, скажем так, очень не мгновенно. Соответственно, стоимость запуска компилятора на том этапе стремится к нулю.
Итого: относительно медленную тулзу мы запускаем постоянно, относительно быстрый компилятор мы гоняем не просто так, а с пачкой юнит-тестов. В чем профит упрощённого синтаксиса, допускающего нелепые ошибки человека и быстрого компилятора, эти ошибки пропускающего?
…Поэтому все в синтаксис ты не затащишь и нужен определенный компромисс.
Знаете, Ваш пример носит демагогический характер.
В данном конкретном случае даже Ява, в которой требовалось сохранять обратную совместимость, получила приемлемое по степени визуального уродства решение с аннотациями.
Собственно, пометить переменные и параметры методов как nullable или (по умолчанию) not-null - это не бог весть какая ракетная наука. А волосы забывчивого кодера после такого улучшения сразу становятся мягче и шелковистее, и попа меньше прирастает к стулу при попытках найти источник дурацкой ошибки.