Это был проект на Си++. Кстати, забавная цитата со ссылки:
Back when you were at Berkeley you were enthusiastic about writing systems code in Java. I remember listening to you talk about what a good idea it was during your dissertation talk ...
Rust is a programming language with a focus on type safety, memory safety, concurrency and performance. It is intended for writing large-scale, high-performance software that is free from several classes of common errors. Rust has a sophisticated memory model that encourages efficient data structures and safe concurrency patterns, forbidding invalid memory accesses that would otherwise cause segmentation faults. It is statically typed and compiled ahead of time.
Лозунги, одни сплошные лозунги. Впрочем я так бешусь оттого, что когда-то тоже верил в rust. Может и сейчас немного верю, но, блин, не пойдет с плюсов и си народ на него...
«Метод» получает замыкание как параметр, пихает его в хеш-таблицу, после чего должен передать ссылку на замыкание в процедуру регистрации. Вот это вот
note: `callback` moved here because it has type `'a |~[~str]| -> ~str`, which is
a non-copyable stack closure (capture it in a new closure, e.g. `|x| f(x)`, to override)
достало меня до такой степени, что ссылку я уже достаю из самой хеш-таблицы find-ом :(
Насколько я понимаю, вся эта история с сохранением замыканий растет из того, что lifetimes для данных определяются стековым порядком исполнения процедур. И, опять же насколько я понимаю, сейчас предлагается пользоваться объектами-функторами.
Ты правда считаешь захват по ссылке в C++ сломанной фичей?
Я правда считаю, что нельзя вводить в Rust то, что заведомо нарушает безопасность памяти (да и система типов будет сопротивляться). И, что забавно, замыкания в Rust - это безопасный аналог лямбд Си++ (но безопасность достигается за счет ограничений).
А для Си++ - одной сломанной фичой больше или меньше, неважно. И да, фича сломана.
А для Си++ - одной сломанной фичой больше или меньше, неважно. И да, фича сломана.
Что же в ней сломанного? Используешь правильно - все правильно работает, используешь неправильно - получаешь бяку. Так и надо. А то получается, что лучшее средства от головной боли - топор...
«Шесть миллионов сорок три кадета приступили к первому году обучения, и большинство из них по разным причинам выбыло. Некоторые не сдали экзаменов. Некоторые были исключены и расстреляны за содомию. Некоторые поверили лживым либеральным слезам красных комми, утверждающих, будто в постоянной войне и резне нет никакой надобности; их тоже исключили и расстреляли. На протяжении ряда лет слабаки отсеивались, пока не осталось ядро Дивизии - вы!»
Ты прав, всё фигня. Продакшеновый Go, также как и Rust в будущем, каждый для своей области — например, Go в ряде типичного класса задач large-scale приложений будет выгоднее, чем Rust, впрочем, последний, конечно, из той же песни, однако, несколько ниже уровнем — что и не всегда нужно, но важно, и он тоже будет. Это здорово.
Если тенденции идут в правильном направлении, то Rust и Go — по ходу условий — взаимозаменяемы в тех или иных аспектах и будут идти рука об руку.
Ты вообще воспринимаешь какую-нибудь информацию из реального мира, или всю генерируешь как продукт жизнедеятельности собственного мозга? Вон вверху дали ссылку о переписывании небольшого проекта с Си++ на Go. Там четко сказано (автором и комментаторами), что ниша Go - это серверсайд вообще и вебесерверный серверсайд сириоус ынтерпрайзес. Как раз та ниша, которую сейчас занимает Ява.
У тебя есть два статически типизированных языка со сборкой мусора и относительно простыми системами типов, ориентированных на один класс задач, но ты рассуждаешь о переносимых многонодовых ассемблерах и взаимном положении языков 40-летней давности. Я уже сказал, что ты упорот?
т.е в какой язык тогда уже был в нише в которую С оказался лучше вписаным
В то время C был языком для всего, а не только для низкоуровневого байтодрочерства. Поэтому сравнивать его можно с другими языками для всего, существовавшими в то время. Лисп, B, форт, фортран…
Си хорошо умеет делать только одно - месить память. И в более-менеее сложной задаче это 0.1% кода. Во всем остальном Си убог чуть менее, чем полностью.
Си хорошо делает то, что хорошо делает нормальный квалифицированный программист. Список хорошо написанных программ и библиотек на Си довольно длинный, в одном посте места не хватит перечислять.
Проблема в том, что Си-программисты очень консервативны, до луддизма; плюсовики же привыкли мастурбировать шаблонами. Если добавить к этому естественную инерцию готовых кодовых баз, шансы Rust на взлет невелики. С другой стороны, многие понимают, что Си давно устарел и нуждается в замене.
То, что реально умные парни могут осилить и на С написать хорошие программы и библиотеки, совершенно никак не доказывает положительные качества С для их написания.
Не существует убогости и красоты в отрыве от шкалы, относительно которой можно мерить. Если у си нет альтернатив, значит он и не убор и не красив. Это просто си.
Не существует убогости и красоты в отрыве от шкалы, относительно которой можно мерить. Если у си нет альтернатив, значит он и не убор и не красив. Это просто си.
Альтернатива может быть воображаемой, никто не мешает вам представить себе язык с любым набором возможностей. Можем же мы представить себе кентавра, сфинкса...
Альтернатива, пожалуй, нет, но в этом и нет необходимости. Ada, Modula-3, Cyclone - вполне реальные языки, нацеленные на системное программирование. Это не говоря уже об исследованиях в области ЯП.
Критерий один - практические выгоды от использование ЯП. Если бы замена ЯП приводила к качественному улучшению написанных на нём программ, ябл. давно бы отказался от использования «устаревшего» и не надёжного Objc. И вообще зачастую нет никаких проблем выбрать в качестве ЯП, например, SML. Написать биндинги для существующих библиотек не проблема для крупной корпорации. Замена C на некий X ни к чему хорошему на практике не приводит. Основной критерий талант и опыт программистов, а не свойства ЯП.
Критерий один - практические выгоды от использование ЯП
Спасибо, Капитан.
Замена C на некий X ни к чему хорошему на практике не приводит
Что значит «замена»? Тупо переписывание вообще редко приводит к чему-то хорошему, даже если переписывать с Си на Си. Но современные компиляторы, браузеры, игровые движки не пишут на Си. «Замена C на некий X» уже произошла, братья живы.
Более того... даже там, где позиции Си сейчас непоколебимы, в ядрах ОС, используется не чистый Си. В ядре NT - Си с SEH, в ядре Linux - с GNU-расширениями и аннотациями sparse.
Основной критерий талант и опыт программистов, а не свойства ЯП.
Где-то я это уже слышал... а, вот: «лучше быть богатым и здоровым, чем бедным и больным».
Языки программирования не устаревают, они эволюционируют как естественные языки. В этом твоя главная ошибка. Нет устаревших языков программирования как нет устаревших научных знаний, при условии что они выдержали испытание временем.