Ну а если контрпримеров няшности крокодила - че далеко ходить-то. Успенского читал, «Чебурашку» смотрел - крокодил положительный герой, внезапно да? А еще журнал был «пра йумар». «Крокодил» называется, может слышал? :)
Даже конструкция if учитывает архитектуру (хотя более обобщенно, чем разница в архитектуре между i386 и каким-нибудь ARM) (а именно то, что нельзя адресовать меньше одного байта памяти, да и проверка регистра на 0, на ASM-е за это регистр flags отвечает, а именно бит с номером 4 (с программной точки зрения, а не с физической) если считать с 0 бита в этом регистре, а такое поведение ASM-а с вероятностью в 95% базируется на том, как аппаратно проходит эта проверка (простенький вариант такой электосхемы схемы я тебе даже нарисовать могу)), именно из-за этого true и false в C не обязательны как в паскале - любое значение, отличное от 0 - true, иначе - false. В более безопасных и высокоуровневых ЯП такое поведение искусственно запрещено.
Но да ладно, это больше обобщенный пример, а вот C почему думаешь имеет столько исключений, что его стандарт (вроде выше кто-то пруф давал) тянет на 700 страниц? Да потому, что все эти исключения продиктованы разными архитектурами процессоров (по большей части i386 и x86_64), т.к. на одной архитектуре нельзя делать одно, на другой - другое, вот всё что нельзя делать везде и описывается прямо или косвенно (повлияв на архитектуру самого C) в этом талмуде.
Извини, но мне кажется ты путаешь язык С с его реализацией под конкретную архитектуру, то есть с компилятором. Компиляторы разумеется учитывают особенности архитектуры. Но в самом языке С ничего привязанного к архитектуре я не вижу. И уж тем более привязанного к архитектуре х86 которой на момент создания языка просто не было.
Просто для «сишных» команд людей нужно набирать опытных.
Я не против, но это «обходится дороже», да и не всегда и везде таких достаточно (ну или опять мы в деньги упираемся). Опять же, если говорить о С++, то там набор фич растёт, что ещё больше увеличивает порог входа. Да и опытные люди тоже могут совершать ошибки.
Поэтому если «детские» ошибки язык не пропускает, то это здорово. Там где надо, опытные через ансейф выжмут необходимое. А джуниорам как раз можно это запретить.
Да я не спорю, что здорово. Только это другой язык. В который так же надо войти, которым так же нужно уметь пользоваться и пр. и пр. Совместимости по коду нет. Производительность и плата за рантайм пока неясны. Вот и спрашивается, стоит ли оно того...
Посмотрим. Пока что они многое в библиотеки выносят стараясь язык минималистичным делать. Опять же макросы какие-никакие есть. Может получится расширять внятно и не теряя совместимости.
Исходные коды пока не будут открываться, мы долго обсуждали подобную возможность и пока не приняли подобного решения. В открытии исходников есть как преимущества для нас, так и недостатки, так что для принятия столь серьезного решения должны быть веские причины.
Лыжи не едут - это производитель лыж виноват :) Интересно, биндя OGRE к моно в виде Axiom3D чуваки не знали, что «моно тормозит» и им нужен «особый CPP-кот»?
«Из-за AoT и ограничений LGPL мы не можем использовать Mono на iOS, что не дает нам обновить версию Mono для редактора и других платформ » (с) И еще банальностей...
«Исходные коды пока не будут открываться» (с) а то комунити начнет чего-нибудь подозревать :)
Я ни за что не ратую. Сабж до стабилизаци синтаксиса даже рассматривать более-менее подробно не собираюсь, но по общим описаниям выглядит вкусно. Кстати, я вижу его скорее как конкурент C.
Одно дело не ломать обратную совместимость с тоннами существующего кода, другое — носить математические функции из пакета в пакет так, что то, что компилится в 0.12, не компилится в транке.
Постепенно все должны заморозить: весь синтаксис, что будет поддерживаться стабильной веткой должен быть обратно совместим. Кое что, чего еще могут поменять, убрали под feature gate`ы.
Кстати, здорово, что к 1.0 успели переименовать тупой 'int/uint' в 'isize/usize'. Может, не самые лучшие названия, но лучше уже так, чем оставлять в языке 'int'.
$ rustc --version
rustc 1.0.0-nightly (44a287e6e 2015-01-08 17:03:40 -0800)
...
src/num.rs:153:18: 153:21 warning: the `int` type is deprecated; use `isize` or a fixed-sized integer
src/num.rs:153 impl BaseInt for int {}
^~~
src/num.rs:153:18: 153:21 help: add #![feature(int_uint)] to the crate attributes to silence this warning
src/num.rs:153 impl BaseInt for int {}
^~~
Да я тоже не понимаю, почему так долго с этим тянули, давно бы уже сделали, а не прямо перед бета версией. Лучше поздно, чем никогда, но, блин, логи ошибок в travis-ci во всех проектах километровые сейчас.
До сегодняшнего дня было как? Типом по-умолчанию был int, но во всех руководствах говорили, что если тебе плевать на размер, то используй i32, а не int. Это странно и криво.
Народные массы, взрощенные на плюсах, тупят и используют int как тип по-умолчанию для хранения целых чисел. А, по идее, он нужен только для хранения чего-то, связанного с памятью/индексами массивов и т.п. - чего-то реально завязанного на размер машинного слова.
Не так с этим, как минимум, то, что он ведет себя по разному на разных платформах.