Всегда страшно горело из-за этого правила. Вы можете обьяснить зачем это делать? В случае если переменная определена в месте первого использования, ее сразу можно инициализировать нужным значением, в случае рефакторинга кода ее тут-же можно удалить, не нужно искать тип переменной если видем присвоение ей значения, и еще много причин.
Даже Google думает не так, как написано:
C++ allows you to declare variables anywhere in a function. We encourage you to declare them in as local a scope as possible, and as close to the first use as possible.
Функция есть, но это массивы «статической» длинны, потому однажды выделив память, известен ее размер. Во-вторых, его никак не «передать небезопасно», потому что передать можно только указатель на массив. В-третих, для них заранне известен размер, а не как у автора.
Начал читать про Javascript и Ruby, многое слышал.
Когда дошел до С, начал что-то подозревать.
Массивы переменной длины, как правило, помещаются в стек, а это означает, что передача при слишком большом размере небезопасна
Где автор видел, что массивы переменной длинны помещаются в стек? Как потом менеджить указатель на этот самый стек? (Певый вопрос из многих, который пришел в голову)
Когда дошел до Rust, понял, что половина текста написана в минуты отчаяния. Часть про Rust уж точно.
mut означает исключительный, а не изменчивый (mutable). &Mutex означает изменчивый (mutable), а &mut str — неизменяемый (immutable)
Ни одно из вышеперечисленных предложений не верно.
Изменить файл? Потребуется перекомпилировать всю вашу библиотеку. Кстати — rustc работает медленно.
Исправленно.
Поскольку он статически связывает всё (спасибо, Go, за выпуск этой модной штучки), вы получите тысячи, вероятно, устаревших копий кольца на вашем компьютере.
Не факт, что много «устаревших копий кольца» это плохо (сильно смеюсь). Что переводчик тут имел в виду, так и не понял. Наверное много статически слинкованных библиотек, которые уже обновились?
Нет пространства имён в поставке.
В какой поставке? Есть пространства имен. В Rust они называются modules и crates.
Поскольку в поставке нет никаких попыток кэширования артефактов компилятора, то вы компилируете каждую раздутую библиотеку каждый раз, когда создаёте новый проект. Я уже говорил, что rustc работает медленно?
Сейчас так ведуть себя многие менеджеры пакетов. Однако «если создавать проекты», они не имееют никаких зависимостей, поэтому для них ничего не надо компилировать.
Но если вы хотите работать в индустрии, знать его нужно, так как альтернативы ему не предвидится.
Почему не предвидится? Например Rust. Очень лаконичный и выразительный, а главное быстрорастущий язык. Вполне вероятно, что в недалеком будущем сможет составить конкуренция C++.
Не то, что бы я думал, что мое мнение интересует издательство, но я бы на вашем месте сделал это побыстрее. Так как я почти отказался от покупки, возмутившись тем, что нужно отдельно покупать разные форматы.
У вас или на сайте, или в рассылке книги ошибка. Если при покупке выбрать .epub и .pdf галочки, то в корзину добавляется 2 товара. Но если купить только .epub, в архиве приходит книга в обоих форматах.
Дело в том, что в функциональных языках функция является самодостаточным объектом. Ее можно передавать, возвращать и частично пприменять. Поэтому запись с точкой после ее первого аргумента — немного некорректна. Разве что язык должен быть мультипарадигменным.
Например в Скале пошли еще дальше — поубирали точки, и теперь можно писать
names mkString ","
вместо
names.mkString(",")
Но многие предпочитают такую запись не использовать.
Потом останется изобрести алгоритмы, данные которых всегда влезают в кеш. И функциональные структуры данных, которые не persistent, потому что их быстродействие пока многих не радует. А так то да, потом точно )
NeoCode, многие принципы используются в функциональных языках программирования. Это примерно как с теорией категорий: сам раздел математики очень сложный, но монады и моноиды всплывают то тут, то там.
Да, обработка ошибок является довольно сложным аспектом синтаксического разбора. Я не стал писать обработчик, что бы не усложнять код.
Rust содержит макросы file!, line! и column!, которые можно использовать для сохранении информации о вызовах.
Так же лексический анализатор может содержать информации о позиции в исходном коде, что помогает значительно улучшить сообщение об ошибках.
Всегда страшно горело из-за этого правила. Вы можете обьяснить зачем это делать? В случае если переменная определена в месте первого использования, ее сразу можно инициализировать нужным значением, в случае рефакторинга кода ее тут-же можно удалить, не нужно искать тип переменной если видем присвоение ей значения, и еще много причин.
Даже Google думает не так, как написано:
и
сомнительны.
Когда дошел до С, начал что-то подозревать.
Где автор видел, что массивы переменной длинны помещаются в стек? Как потом менеджить указатель на этот самый стек? (Певый вопрос из многих, который пришел в голову)
Когда дошел до Rust, понял, что половина текста написана в минуты отчаяния. Часть про Rust уж точно.
Ни одно из вышеперечисленных предложений не верно.
Исправленно.
Не факт, что много «устаревших копий кольца» это плохо (сильно смеюсь). Что переводчик тут имел в виду, так и не понял. Наверное много статически слинкованных библиотек, которые уже обновились?
В какой поставке? Есть пространства имен. В Rust они называются modules и crates.
Сейчас так ведуть себя многие менеджеры пакетов. Однако «если создавать проекты», они не имееют никаких зависимостей, поэтому для них ничего не надо компилировать.
Про многие мелкие недочеты уже промолчую
Почему не предвидится? Например Rust. Очень лаконичный и выразительный, а главное быстрорастущий язык. Вполне вероятно, что в недалеком будущем сможет составить конкуренция C++.
Например в Скале пошли еще дальше — поубирали точки, и теперь можно писать
вместо
Но многие предпочитают такую запись не использовать.