Еще может оказаться что «темная энергия» это сила сродни гравитации, тоже очень слабая (вероятно еще более слабая чем гравитация) и действующая лишь в мегакосмических масштабах.
15 лет писал в основном на С++, а тут вдруг понадобилось написать кое-что для линукса на чистом Си. Интересные впечатления… программирование С++ всегда вызывает беспокойство — потому что всегда не до конца понимаешь все эти шаблонные навороты, потому что С++ сочетает огромную мощь и некоторую «недоделанность», когда понимаешь что для вроде бы простой и очевидной вещи нужно подключать всякий Boost и писать кучу совершенно не относящегося к задаче кода.
Программирование же на чистом Си вызывает умиротворенность:) Все навороты С++ просто отсутствуют. Все что можно сделать — можно сделать единственным образом. Возможно, что это следствие того что для Си другие задачи, и если бы я применял Си для тех задач для которых я применяю обычно С++, то проблем было бы еще больше (на самом деле так оно и есть).
И еще. Удивительный по красоте и гармоничности язык Си сочетается в Линуксе с ужасными и взрывающими мозг языками шелл-скриптов и мейкфайлов. Глядя на них только и хочется сказать «дайте мне развидеть это». Странное противоречие, но как будто эти языки пришли из совершенно разных миров…
Хочу добавить еще что есть такая удобная вещь как получение посылок и бандеролей «до востребования». Удобная — потому что днем дома может никого не быть (а почтальоны ходят только днем), на адрес работы заказывать странно — непонятно кому отправление достанется (а еще на работе может быть проходная), а так удобно — можно указать свои ФИО и адрес почтового отделения и написать «до востребования» (если из-за границы то английскими буквами транслитом), и вечером после работы спокойно забрать отправление.
Это также работает и для EMS, если не хочется встречаться с курьером (например не знаешь где точно будешь находиться в тот момент когда тебе позвонит курьер, а перенаправление стоит денег).
Вот и получается что с одной стороны это как-бы пятое фундаментальное взаимодействие (причем с очень необычными свойствами — «равномерно и присутствует везде» и т.п.), а с другой стороны — как бы и нет.
Ну так вот, все такие случаи когда переменная получает значение из «черного ящика», лучше бы обозначить в коде явно, с помощью специального динамического типа any (в чем-то по аналогии с ключевым словом unsafe, существующим в некоторых языках для ограждения небезопасного кода).
Против неявной типизации и вывода типов я ничего не имею — поскольку тип выводится на этапе компиляции, потенциальные ошибки также выведутся на этапе компиляции.
PS. интересно, если в языке есть и тип «any», и вывод типов, который в сложных случаях вполне может вывести «any» и ничего не сказать программисту… но это уже тонкости реализации компилятора. Как минимум warning я бы на такой случай давал.
Пусть даже такой пример. Но если я в теле функции напишу
x = y + z
а это невозможно, потому что не существует понятия сложения для типов type2 и type3, ошибка возникнет сразу же, на этапе компиляции, а не неизвестно когда на этапе выполнения в продакшене.
Очень очень жаль… мои соболезнования.
А руборд был пожалуй последним ресурсом, на котором присутствовал еще дух Свободы. Что-то старое и доброе… По крайней мере других таких я не знаю.
А чего это руборд «сдох фигурально»?
То что они движок не обновляли — ну так а зачем его обновлять, если все работает? Просто ради вебдванольности? Да, конечно можно сделать и лучше… но свои функции он выполнял исправно. Рабочий инструмент, как простой молоток против современных навороченных сайтов… но иногда нужен просто молоток.
Как бы то ни было, но я всегда уважаю разработчиков собственных языков программирования. Можно конечно и присоединиться, но и своя собственная разработка это очень хорошо. Может потом наоборот к автору присоединятся:)
А это костыль вместо естественного механизма типов (как и всякие специальные комментарии для php). В сложном коде ничто не помешает программисту случайно сохранить где-нибудь значение не того типа, которое в конечном итоге будет передано в эту функцию, и все сломает.
Прелесть статической типизации именно в ее декларативности, в том что ошибки выявляются не во время выполнения (если ветвь кода редко выполняется, то ошибка может не проявляться годами), а во время компиляции, где программа — просто дерево, и компилятор гарантированно пройдет по каждой ветке этого дерева.
Мне не нравится динамическая типизация и идея отказаться от типов. Вот в динамической типизации обычно можно написать такое
x = 10;
if(condition)
x = "Alexey";
Но скажите — кому может понадобиться на ходу менять тип переменной с числа на строку? Если х — число, то оно скорее всего используется в математике, возможно как счетчик цикла или индекс. Если х — строка, то это работа с текстом, строковые алгоритмы, может быть имена файлов и т.д.
И это только простые типы. А если х — навороченная структура?
Поэтому когда я в коде вижу
foo(x,y,z) { }
то что я должен ожидать от x, y и z? Какие действия я имею право с ними совершать?
А если написано
foo(int x, string y, File z) { }
то все становится гораздо понятнее. И поиском можно найти типы, и погуглить по ним информацию (если они из стандартных библиотек), и случайно не станешь умножать файл на строку чтобы получить число.
Дело не в нехватке энергии, а в том что эакон сохранения энергии в принципе нарушить нельзя. Это как-бы ставит определенные пределы в развитии, которые не перепрыгнешь. То есть мы можем переставлять кубики мироздания в разных сочетаниях, а новых сделать не можем.
Да вы просто забыли себя в детстве:) В 9 лет мозг лучше соображает чем даже в 29 или тем более 39.
У меня в 9 лет компьютера не было, но это не мешало быть гиком — например изучать настольные игры и придумывать новые (а все это достаточно большие объемы текста и иллюстраций).
А то что у людей могут быть разные вкусы и разные потребности вы не думаете? Или вы таки считаете, что партиямиркософт лучше знает что нужно людям?
Ту же семерку я вполне настроил так как мне надо. Так что зачем чего-то ждать и плакать, если можно просто пользоваться?
А линукс вполне популярен среди программистов и гиков.
Программирование же на чистом Си вызывает умиротворенность:) Все навороты С++ просто отсутствуют. Все что можно сделать — можно сделать единственным образом. Возможно, что это следствие того что для Си другие задачи, и если бы я применял Си для тех задач для которых я применяю обычно С++, то проблем было бы еще больше (на самом деле так оно и есть).
И еще. Удивительный по красоте и гармоничности язык Си сочетается в Линуксе с ужасными и взрывающими мозг языками шелл-скриптов и мейкфайлов. Глядя на них только и хочется сказать «дайте мне развидеть это». Странное противоречие, но как будто эти языки пришли из совершенно разных миров…
Это также работает и для EMS, если не хочется встречаться с курьером (например не знаешь где точно будешь находиться в тот момент когда тебе позвонит курьер, а перенаправление стоит денег).
Против неявной типизации и вывода типов я ничего не имею — поскольку тип выводится на этапе компиляции, потенциальные ошибки также выведутся на этапе компиляции.
PS. интересно, если в языке есть и тип «any», и вывод типов, который в сложных случаях вполне может вывести «any» и ничего не сказать программисту… но это уже тонкости реализации компилятора. Как минимум warning я бы на такой случай давал.
а это невозможно, потому что не существует понятия сложения для типов type2 и type3, ошибка возникнет сразу же, на этапе компиляции, а не неизвестно когда на этапе выполнения в продакшене.
А руборд был пожалуй последним ресурсом, на котором присутствовал еще дух Свободы. Что-то старое и доброе… По крайней мере других таких я не знаю.
То что они движок не обновляли — ну так а зачем его обновлять, если все работает? Просто ради вебдванольности? Да, конечно можно сделать и лучше… но свои функции он выполнял исправно. Рабочий инструмент, как простой молоток против современных навороченных сайтов… но иногда нужен просто молоток.
Прелесть статической типизации именно в ее декларативности, в том что ошибки выявляются не во время выполнения (если ветвь кода редко выполняется, то ошибка может не проявляться годами), а во время компиляции, где программа — просто дерево, и компилятор гарантированно пройдет по каждой ветке этого дерева.
Но скажите — кому может понадобиться на ходу менять тип переменной с числа на строку? Если х — число, то оно скорее всего используется в математике, возможно как счетчик цикла или индекс. Если х — строка, то это работа с текстом, строковые алгоритмы, может быть имена файлов и т.д.
И это только простые типы. А если х — навороченная структура?
Поэтому когда я в коде вижу
то что я должен ожидать от x, y и z? Какие действия я имею право с ними совершать?
А если написано
то все становится гораздо понятнее. И поиском можно найти типы, и погуглить по ним информацию (если они из стандартных библиотек), и случайно не станешь умножать файл на строку чтобы получить число.
У меня в 9 лет компьютера не было, но это не мешало быть гиком — например изучать настольные игры и придумывать новые (а все это достаточно большие объемы текста и иллюстраций).
партиямиркософт лучше знает что нужно людям?Ту же семерку я вполне настроил так как мне надо. Так что зачем чего-то ждать и плакать, если можно просто пользоваться?
А линукс вполне популярен среди программистов и гиков.