Аналитическая компания RedMonk опубликовала новую редакцию рейтинга языков программирования, построенный на основе оценки сочетания популярности на GitHub c активностью обсуждений на Stack Overflow. Из наиболее заметных изменений отмечается попадание языка Rust в 20 самых популярных языков и вытеснение из двадцатки языка Haskell. По сравнению с прошлой редакций, опубликованной полгода назад, также перемещение C++ на пятое место, перемещение Scala с 14 на 13 место. R сдвинулся с 13 на 14 место, язык Java потерял одну позицию и оказался на третьем месте (в прошлом рейтинге он разделял второе место с Python)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=53458
Не открывая новость уже знал, что на последнем месте.
И что же там увидел? Снова язык Ada мерещиться?
>20 Rust
Требуется ещё 19 новостей "язык %s вошёл в топ-20"
При этом у тех 19 языков будет больше причин попасть в новость, ололо.
> Требуется ещё 19 новостей "язык %s вошёл в топ-20"То, что они вошли, давно уже не новость.
А почему Раст такой популярный на опеннете, целая новость про двадцатое место.
> А почему Раст такой популярный на опеннете, целая новость про двадцатое место.Потому что единственное что растаманы умеют делать хорошо - гнилой пиар своей поделки и обсирание всего остального. Ну вот такое вот у них сообщество - горластое и бесполезное. Новые дельфисты образовались.
Поделки? Единственное, что умеют?
У вас растоман работу или жену отобрал?)
> Поделки? Единственное, что умеют?
> У вас растоман работу или жену отобрал?)Ну вот конкретно здесь - растаман наколотил абсолютно идиотский заголовок для новости. Это просто топ пиара перешедшего в кретинизм в терминальной стадии уже.
Самый перспективный язык из системных новейших, почему нет, при чем тут какой-то пиар? Тем более как потенциальный язык модулей ядра.
Плюс это показывает, что появляется смысл всерьез думать о переходе на него.
> Самый перспективный язык из системных новейших, почему нет,Пока я что-то не вижу систем на этом языке, нужных кому-то кроме их авторов. Да и вон там memcpy как-то больно уж блевотным получился - труба я шатал такие перспективы!
> при чем тут какой-то пиар?
Ну хотя-бы при том что нормальный заголовок сабжевой новости - "представлен рейтинг языков программирования", чтоли. А вон то - голимое всучивание гребаного гербалайфа уже просто внаглую, с подбеганием на улице и всучиванием баночек занедорого, бл. Совсем о...ели!
> Тем более как потенциальный язык модулей ядра.
Угу, бездари в веревки вьются, уж и не знают как бы примазаться к чужой популярности и на чужом хребте въехать в рай, присвоив заслуги Торвальдса и ко себе. Думаете, они там настолько лошары и вы их сможете обставить? Ну, попробуйте :)
> Плюс это показывает, что появляется смысл всерьез думать о переходе на него.
Какое безаппеляционное суждение из разряда маркетингового булшита. Ха.
> Самый перспективный язык из системных новейших, почему нет, при чем тут какой-то
> пиар? Тем более как потенциальный язык модулей ядра.
> Плюс это показывает, что появляется смысл всерьез думать о переходе на него.Фееричный маркетинговый булшит и потуги манипуляций из арсенала достойного гербалайфщиков.
как язык обычных программ может и соглашусь, но как системный? на нем конечно можно писать в систему проги, но там он ничем не отличается от плюсов и хуже си. чтобы на нем что то написать для ядра там одни сплошной небезопасный
как язык обычных программ может и соглашусь, но как системный? на нем конечно можно писать в систему проги, но там он ничем не отличается от плюсов и хуже си. чтобы на нем что то написать для ядра там одни сплошной небезопасный режим. тогда появляется одна головная боль от него нежели польза. так что раст надо гнать из системщины.
Unsafe в Rust предполагает, что программист сам берет на себя ответственность следить за безопасностью некоторых участков кода. То есть, вы поверх вашей unsafe-системщины создаете свою безопасную обертку - некую структуру или модуль с безопасным внешним API, абстракции в Rust либо совсем бесплатные, либо стоят очень дешево. Дальше пользуетесь ею и компилятор автоматически обеспечивает вам безопасность в местах вызовов. В этом смысл unsafe. Если вам такое не нужно (потому что вы не умеете/не можете/не хотите в абстракции и API, а императивная лапша - ваш стиль жизни), то да, Rust лучше тогда не использовать.
Они просто до сих пор ничего не сделали, зато орать про супер безопастный раст горазды. При этом покажешь им код в котором без всякого unsafe можно отстрелить себе всё туловище и начинается...Ты ничего не понимаешь, ты д.рак, ты д..ил и т.д. Т.е. что и требуется доказать. Только орать и могут. А когда находят переполнение стэка прямо в компиляторе так это не мы, это вы всё со своими дырявыми языками.
Ребята, если вы азы работы с памятью не осилили, не лезьте в компиляторы и языки.
>Ребята, если вы азы работы с памятью не осилили, не лезьте в компиляторы и языки.Так для этой работы и нужен анализатор, а человеческий фактор никто не отменял, даже будучи продвинутым программистом...
> Так для этой работы и нужен анализатор, а человеческий фактор никто не
> отменял, даже будучи продвинутым программистом...Извини, в системном програмизме анализатор не панацея. Там всегда шаг в сторону и усе, приплыли. Да и насколько вообще для раста развит статический анализ и реально изучены грабли которые он откаблучить может? И какой период валидности этих данных с релизами новых версий компилеров раз в месяц, где половина кода перепахано и синтаксис опять переколбашен?
>Извини, в системном програмизме анализатор не панацеяСмотря какой "системный программизм" вы имеете ввиду. Там где ядра и железо - да, оно "опасно" в любом случае, безопасный язык или анализатор для этого не изобретут. А если говорить про более высокоуровневые компоненты, то вполне.
>Да и насколько вообще для раста развит статический анализ и реально изучены грабли которые он откаблучить может?
Самый лучший вариант - сходить к растовикам на GitHub и изучить данный вопрос, если он вас так интересует.
> Смотря какой "системный программизм" вы имеете ввиду. Там где ядра и железо
> - да, оно "опасно" в любом случае,Ну так а какой язык системный без всего этого? :)
> безопасный язык или анализатор для этого не изобретут. А если говорить про
> более высокоуровневые компоненты, то вполне.Я не спорю что в расте есть некоторые интересные идеи, но синтаксис они какой-то совершенно гадский сделали. Со своей стороны я бы предпочел "более быстрых лошадей", пардон, си с нормальными типами, специфицированным вместо undefined поведением ряда вешей и чем-то типа borrow checker по смыслу. Без всей этой галиматьи и закорючек, они мне нахнрен не уперлись.
> Самый лучший вариант - сходить к растовикам на GitHub и изучить данный
> вопрос, если он вас так интересует.Звучит как отмазка какая-то. Я правильно понял что вы вообще не практикуете в сколь-нибудь продвинутый анализ грабель своего кода?
>но синтаксис они какой-то совершенно гадский сделалиДа много чего гадского можно придумать в любом языке, но используют или не используют их явно не из-за синтаксиса (не в первую очередь по крайней мере).
>Я правильно понял что вы вообще не практикуете в сколь-нибудь продвинутый анализ грабель своего кода?
Нисколько не являюсь специалистом раст, в том числе не специализируюсь на линтерах и анализаторах. Вы, я так думаю, тоже. Поэтому громогласно заявлять что с анализатор раста что-то не так я бы стал. Единственное умозаключение, которое можно сделать: анализатор не рождается сразу из ниоткуда, но также не является завершённым продуктом, он развивается. Всё приходит со временем, и с момента создания раста прошло уже довольно приличное время, и их анализатор явно не выглядит как поделка на коленке.
> Да много чего гадского можно придумать в любом языке, но используют или
> не используют их явно не из-за синтаксиса (не в первую очередь по крайней мере).Ну не, програмер тоже человек. И я имею наглость полагать что мне при програмизме должно все же быть удобно. А иначе пусть этим ЯП пользуется кто-нибудь другой. Ну вон там раба какого-нибудь к веслу прикуйте, а я посмотрю чего он вам там напрогает. Отойдя на безопасную дистанцию, если это что-то управляющее/реалтаймное/опасное.
> Нисколько не являюсь специалистом раст, в том числе не специализируюсь на линтерах
> и анализаторах. Вы, я так думаю, тоже.А я думаю что меня интересует reliability, safety и security. И поэтому я вообще-то не брезгую делать статический анализ своих нагенерил мудрапрограмов. Ну так, для критической оценки качества кода, избежания приколов в стиле тойоты, и вообще.
> Поэтому громогласно заявлять что с анализатор раста что-то не так я бы стал.
Пааааазвольте?! В этом случае я скорее хочу пруфа и какого-то assessment что, где и насколько - "так". Когда отказ кода роялит - это не тот случай когда джентльменам верят на слово. С этой точки зрения у раста вообще вроде бы нет оформленного стандарта. Поэтому прочекать compliance сорца оному ... вроде бы и невозможно, чтоли?! А учитывая что его перехреначивают раз в месяц-два - это вроде бы выглядит как заведомо дохлый номер к тому же. Не?
> Единственное умозаключение, которое можно сделать: анализатор не рождается сразу
> из ниоткуда, но также не является завершённым продуктом, он развивается.Есть еще один фактор. Понимание проблем ЯП и его окружения - и анализ сорцов на их наличие или отсутствие. Заявление о том что любой сорец проехавший компил в столь фичастой штуке типа-заведомо-безграбелен как-то подозрительно хорошо, для того чтобы быть правдой.
> анализатор явно не выглядит как поделка на коленке.
Без наличия застабилизированного то стандарта хотя-бы? Дааа? А комплайнс относительно чего, пардон, чекается? Относительно версии раста которая вчера такая, сегодня такая? :)
> А иначе пусть этим ЯП пользуется кто-нибудь другойНу пусть пользуется другой, и деньги зарабатывает пусть тоже другой :) Ну если язык, кончено, востребован.
> И поэтому я вообще-то не брезгую делать статический анализ своих нагенерил мудрапрограмов
Речь шла не о анализе, а о его корректности и всеядности в раст.
>С этой точки зрения у раста вообще вроде бы нет оформленного стандарта
Ну давайте посчитаем, сколько у нас языков стандартизировано (IEEE, ISO и прочие)? Особенно из тех, которые появились в начале нулевых. Тогда эти стандарты помогали предотвратить фрагментацию среди компиляторов или браузеров, но с сегодняшних реалиях, когда языки и компиляторы к ним разрабатывают корпорации, они им просто побоку. У них свои "стандарты" и language references, которые используют при разработке, и большего им не надо. Могут конечно и совсместимость между версиями сломать, внезапно.
> Заявление о том что любой сорец проехавший компил в столь фичастой штуке типа-заведомо-безграбелен как-то подозрительно хорошо, для того чтобы быть правдой.
Никакой анализатор не сможет покрыть 100% случаев хотя бы потому что существует огромное количество вариантов и комбинаций кода :) А сколько покрывает случаев анализатор раста - исследуйте и узнаете.
>Относительно версии раста которая вчера такая, сегодня такая? :)
Так раст всё ещё в разработке и обрастает фичами, хоть и перешагнул релиз в 15 году. Поэтому они не обзавелись даже стабильным ABI. В любом случае гарантируется стабильность в пределах одной ветки, например Rust 2015 или Rust 2018, можно не боятся что сломают что-либо.
> Ну пусть пользуется другой, и деньги зарабатывает пусть тоже другой :)Между нами, кастомерам зачастую так вообще наплевать на чем оно там написано и что там под капотом. Хоть дрессированые гномики, если это разруливает их задачи и не несет проблем.
> Ну если язык, кончено, востребован.
Ну вон гербалайфщики пытаются набить себе цену, скоро наверное баночки с карго у метро начнут прохожим впаривать занедорого.
> Речь шла не о анализе, а о его корректности и всеядности в раст.
Так анализ - это про корректность и есть?
> Ну давайте посчитаем, сколько у нас языков стандартизировано (IEEE, ISO и прочие)?
Ну вот сишники и плюсовики стандартизировались. Жыэсы и прочие хтмылы с цсс кстати тоже. А то что остальное было театром одной фирмы или даже актера - ну, кто ж виноват? Так у них и период полураспада соответствующий. Кто не верит - может попытаться, ну, запустить скрипт на питоне 2.4 на современной системе, чтоли, и посмотреть что будет.
> просто побоку. У них свои "стандарты" и language references, которые используют
> при разработке, и большего им не надо. Могут конечно и совсместимость
> между версиями сломать, внезапно.Я бы даже сказал, яп которые не стандартизированы - или карманные проекты 1-2 корпов или даже пранки одного индивидуала. Ясен хрень оно при этом не стандартизировано. Это ж - вы только подумайте - надо контролем поделиться с другими?! И вместо того чтобы монопольно в одну харю/фирму кормить всех булшитом придется еще с кучей всяких там согласовывать?!
И все б ничего - но если вы не та харя/фирма, такой подход к делу почему-то значительно менее комфортен и как-то вообще совсем не учитывает интересы всех кроме этой фирмы/хари.
> Никакой анализатор не сможет покрыть 100% случаев хотя бы потому что существует
> огромное количество вариантов и комбинаций кода :)Это еще Тюринг сказал. Однако хорошо если есть тул который подозрительные места и типовые факапы хайлайтит.
> А сколько покрывает случаев анализатор раста - исследуйте и узнаете.
Это требует кучу времени. А что я получу взамен? Зависимость от 1-2 корп на которых вся разработка завязана и их маздайный стиль с их карго-культом? Да ну его так вляпываться да еще за свой счет.
> Так раст всё ещё в разработке и обрастает фичами, хоть и перешагнул релиз в 15 году.
А разрабатываться начал ... э, в 10 чтоли? И с тех пор немало оброс какими-то стремными закорюками.
> Поэтому они не обзавелись даже стабильным ABI. В любом случае гарантируется стабильность
> в пределах одной ветки, например Rust 2015 или Rust 2018, можно не боятся что сломают что-либо.Это никуда не годится - потому что даже не стандарты. И что такое "Rust 2015" и "Rust 2018" когда это даже как стандарт не оформлено? У плюсовиков конечно с этим тоже не фонтан, но они хотя-бы как стандарт это запилили, чтоли.
> Между нами, кастомерам зачастую так вообще наплевать на чем оно там написано и что там под капотом.Ага, только почему то в вакансиях или на фрилансе указывают и языки, помимо всего остального. Особенно если язык/фреймворк модный.
> Так анализ - это про корректность и есть?
А корректность анализа нет)?
> Жыэсы и прочие хтмылы с цсс кстати тоже
Ну это такой себе стандарт.
> Кто не верит - может попытаться, ну, запустить скрипт на питоне 2.4 на современной системе, чтоли, и посмотреть что будет.
И всё равно продолжают писать на питоне, не смотря на это
> Да ну его так вляпываться да еще за свой счет.
Ну а тогда зачем было разговор затевать)
> А разрабатываться начал ... э, в 10 чтоли?
По факту с 2006 года. Как любительский проект
> И что такое "Rust 2015" и "Rust 2018" когда это даже как стандарт не оформлено?
И что даст стандарт, когда у раста 1 компилятор на земле? Стандарты именно про это, про сомвестимость на уровне компилятора/интепретатора. У c/c++ исторически их было много, и реализаций тоже, надо было как то собрать это в одну кучу. И то, никто не заставляет этим стандартам следовать, пример тому JS/CSS. В расте же, как и во многих нынешних языках, реализаций либо нет, либо они соврешенно побочные.
Практической необходимости стандартизовать Rust сейчас нет. Если вас интересуют спецификации - то есть RFC, есть справочники, есть код эталонного компилятора. Если вы хотите внести свое предложение в язык - создайте новый RFC, процесс их принятия открытый.У компилятора Rust есть встроенный статический анализатор: https://doc.rust-lang.org/rustc/lints/index.html
Дополнительно есть внешний, Clippy: https://rust-lang.github.io/rust-clippy/master/
> Потому что единственное что растаманы умеют делать хорошо - гнилой пиар своей
> поделки и обсирание всего остального. Ну вот такое вот у них сообщество - горластое и бесполезное. Новые дельфисты образовались.Судя по не раз демонстрированному уровню (не)знаний опеннетных "растоманов" - обыкновенное анонимно опеннетное "сначала сам запостил типа от, потом сам с пафосом разоблачил".
> А почему Раст такой популярный на опеннете, целая новость про двадцатое место.Потому что под такой новостью сразу начнётся срачик, а значит — больше рекламки будет показано.
> По сравнению с прошлой редакций, опубликованной полгода назад,
> также перемещение C++ на пятое местоС шестого, лол.
Что характерно обогнав пхп.
Конечно лол. Население то всё глупеет и глупеет.
Растошкольники вместо того чтобы писать приложения коммитят свои хеллоуворлды на Гитхаб.
Не умеешь пользоваться гитхабом?
https://github.com/topics/rust
> Не умеешь пользоваться гитхабом?
> https://github.com/topics/rustИ, собственно, чего полезного есть в этой помойке? Прожекты с достоинством "зато на раст"? Блин, у пыхтонистов такого в 10 раз больше, кукуйте. Операционка которой даже автыри не пользуются? Туда же.
а когда css стал языком программирования?
С тех пор, как стал Тьюринг-полным
https://stackoverflow.com/a/5239256
лучше б оставили тем, чем он задумывался - таблицей стилей... (-_-)
Вот это новость. Но все же это полнота, и там верно подметили: When people say "CSS is turing complete" they mean "CSS, which supports animations is Turing Complete".
совсем недавно туда завезли математические функции🤔
Модный и молодёжный язык. Жалко что он не может без рантайма. Язык претендующий на системный не должен таскать с собой батарейки. Берите пример с языка Си.
Если вы имеете в виду Rust, тогда там есть no_std, no_core.
А разве в C нет рантайма? crt0 ?
>crt0Это что такое?
>no_std, no_core
А-а стандартные отговорки. В Расте пишут в функциональном стиле. Отсутствие рантайма предпологают лютый процедурный код, попахивающий ассемблером. А растаманы не умеют писать люто и процедурно.
В чистом Си рантайма нет.
Сразу видно специалиста!)
Не настолько уж и врет - на си реально с zero runtime и даже по сути и без ассемблера, если проц к тому располагает, типа cortex-M какого.
>на си реально с zero runtime и даже по сути и без ассемблера,Чувак, если ты сам накатал ResetHandler, то это значит что ты сам накатал минимальный рантайм, а не то что С может без него. Это как раз и значит что ты накатал этот самый рантам вручную.
Для AVR - это сделали разработчики libc, или уто там crt0 писал.
> Чувак, если ты сам накатал ResetHandler, то это значит что ты сам
> накатал минимальный рантайм, а не то что С может без него.ResetHandler - не рантайм в обычном понимании этого слова. Его никто не вызывает и не использует, кроме железа при ресете. Чтобы обзываться таковым у него наверное caller'ы какие-то должны быть, не?! При том что у reset handler их в общем случае by design как раз и нет.
И если это все же рантайм, является ли IRQ handler рантаймом? А обработчик сигналов в linux-ной проге?
> Это как раз и значит что ты накатал этот самый рантам вручную.
Это, еще раз, не рантайм - а код который просто идет и просто делает сам то что хотел сделать. Без всяких либ и рантаймов - максимально напрямую. Про какие либо замашки на это можно говорить только когда появится хоть один внешний по отношению к всему этому caller, чтоли.
> Для AVR - это сделали разработчики libc, или уто там crt0 писал.
Ну так на сях можно и без crt0, вот ведь какой парадокс. Да, при этом изначально арена не соответствует стандарту. И вообще когда фирмварь после нажатия вспоминает свое состояние это выглядит крайне стебно (и, увы, опасно, ресет должен деглюк делать).
> ResetHandler - не рантайм в обычном понимании этого слова. Его никто непочитай википедию - https://en.wikipedia.org/wiki/Runtime_system
И если у тебя в ресетхендлере инитятся переменные (.data) и зануляется .bss , то это что ни на есть настоящий рантайм.
> Это что такое?"Startup". Он подготавливает сишному коду окружение соответствующее стандарту. Можно при желании даже и без него - с некоторыми особенностями.
> А-а стандартные отговорки. В Расте пишут в функциональном стиле.
Там пишут в каком-то крейзанутом стиле, ни два ни полтора. Так что код потом без поллитры вообще в принципе неодупляем. И синтаксис зачем-то изгадили кучей добавочных закорюк, как будто в сиобразных было мало, блин, закорюк. Так еше в новых версиях этого добра все больше и больше. И в результате код уже на раз заспорит с убуханым плюсовиком по его угробищности.
Код на Rust непонятен только тем, кто не знает Rust и никогда на нем не программировал. Код на C++ часто непонятен самим C++ разработчикам. ) Чувствуете разницу?
>В чистом Си рантайма нет.А libc это что?!
Это вообще внешняя библиотека конкретной платформы. Далеко не везде она есть. А на МК вообще библиотек нету, как и ОС.
>Далеко не везде она есть. А на МК вообще библиотек нету, как и ОС.А можно пару примеров таких МК, для которых нет libc?
Или опять, абы ляпнуть ?
> А libc это что?!Либа стандартных функций. Но JFYI можно без нее. А иногда так даже и нужно. А куда вы будете делать fopen() на микроконтроллере каком, чтоли, когда у него ни малейшего намека на файловую систему нет? И как вообще это может выглядеть, при отсутствии stdin/out/FS/... ? :)
А в ядре нет libc, прикинь а. И ничего, написали на C
Ищвините, хочу спросить у специалистов что такое чистый си?
чистый С - это фантастика!
kernel.org
> А разве в C нет рантайма? crt0 ?Можно и совсем без него - в режиме гольного "кодогенератора". Правда тогда придется написать в entry свой setup arena'ы, если хочется чтобы поведение соответствовало стандарту, но это довольно просто. Я так делал, канает.
Буквально недавно обсуждали начиная отсюда: https://www.opennet.dev/openforum/vsluhforumID3/121332.html#107Как минимум для Rust, похоже, нужен runtime в лице memcpy, memcmp, memset, rust_begin_panic и rust_eh_personality (это в режиме no_std, как я понял). C, как языку, такой runtime не нужен. В реализации gcc могут понадобиться разные хитрые процедуры 64-х разрядных умножений/делений, которые находятся в libgcc.
> как языку, такой runtime не нужен. В реализации gcc могут понадобиться
> разные хитрые процедуры 64-х разрядных умножений/делений, которые находятся в libgcc.Еще иногда это падло хочет memcpy, но назвать мой минимальный memcpy рантаймом мне как-то совесть не позволяет - функция на полэкрана не бог весть какой рантайм.
>> как языку, такой runtime не нужен. В реализации gcc могут понадобиться
>> разные хитрые процедуры 64-х разрядных умножений/делений, которые находятся в libgcc.
> Еще иногда это падло хочет memcpy, но назвать мой минимальный memcpy рантаймом
> мне как-то совесть не позволяет - функция на полэкрана не бог
> весть какой рантайм.По логике хотеть не должен, если Вы явно не используете. Хотя, возможно, для больших структур/массивов инициализируемых:
int a[4096] = { 0 };
> для больших структур/массивов инициализируемых:Ну, я бы не назвал 16-байтовый массив таким уж прямо большим. Но вот в паре с LTO этот гад все же возжелал сие. Да еще самый угар - в optimize out оного потом сумел, как dead code. А потом обнаружил что не такой уж тот код и дед - на что сам же и пожаловался, гы! :)
>> для больших структур/массивов инициализируемых:
> Ну, я бы не назвал 16-байтовый массив таким уж прямо большим. Но
> вот в паре с LTO этот гад все же возжелал сие.
> Да еще самый угар - в optimize out оного потом сумел,
> как dead code. А потом обнаружил что не такой уж тот
> код и дед - на что сам же и пожаловался, гы!
> :)ну, возможно всё зависит от аппаратной платформы. У нас и для большего числа байтов он тупо вставлял кучу команд mov.
> ну, возможно всё зависит от аппаратной платформы.Cortex-M3 самый обыкновенный. Впрочем тот взбрык стал вообще фичой: там вообще static const просился на самом то деле и этот прикол лишний раз подхайлайтил этот факт, потому что нехрен мизерный RAM забивать RODATA которые вообще должны в флеше были быть :)
p.s. и кстати да, RTFM показал что сие поведение описано в мане gcc. Только кто ж его читает, пока фича не укусит за окорок? :)
>>> нужен runtime в лице memcpy, memcmp, memset, rust_begin_panic и rust_eh_personality
>> как языку, такой runtime не нужен. В реализации gcc могут понадобиться
>> разные хитрые процедуры 64-х разрядных умножений/делений, которые находятся в libgcc.
> Еще иногда это падло хочет memcpy, но назвать мой минимальный memcpy рантаймом мне как-то совесть не позволяетТ.е. ржавый memcpy - это рантайм, сишный - "не очень рантайм"?
Самим-то не смешно?Хинт:
// These functions are used by the compiler, but not
// for a bare-bones hello world. These are normally
// provided by libstd.
#[lang = "eh_personality"]
#[no_mangle]
pub extern fn rust_eh_personality() {
}#[lang = "panic_impl"]
#[no_mangle]
pub extern fn rust_begin_panic(info: &PanicInfo) -> ! {
unsafe { intrinsics::abort() }
}
> Т.е. ржавый memcpy - это рантайм, сишный - "не очень рантайм"?Это ровно 1 функция. Без дергов каких либо внешний компонентов и вообще любого иного кода, довесков и прочего. Считанные байты кода, около нуля использования RAM.
> unsafe { intrinsics::abort() }
Ага. А тут мы типа и не рантайм какой-то вызывали, с какой-то функцией, мде? И мне очень интересно - и чего вот эта интересно выглядящая шляпа удумает на микроконтроллере каком делать, например, ежели она все же вызовется?
>> Т.е. ржавый memcpy - это рантайм, сишный - "не очень рантайм"?
> Это ровно 1 функция. Без дергов каких либо внешний компонентов и вообще
> любого иного кода, довесков и прочего. Считанные байты кода, около нуля
> использования RAM.И че? Где там дерги внешинх компонентов-то?
>> unsafe { intrinsics::abort() }
> Ага. А тут мы типа и не рантайм какой-то вызывали, с какой-то
> функцией, мде? И мне очень интересно - и чего вот эта
> интересно выглядящая шляпа удумает на микроконтроллере каком делать, например, ежели она все же вызовется?С какого перепугу compiler-builtin стал рантаймом?
> As of Rust 1.38.0, intrinsics::abort lowers to a trap instruction on most architectures; on some architectures it simply lowers to call to the abort function (unmangled name). The exact behavior of intrinsics::abort is architecture and system dependent.
>
> И че? Где там дерги внешинх компонентов-то?Ну вот там - под отсутствием рантайма в идеальном случае подразумевается что есть только мой код и более - нихрена. Ну там ладно, примитивную математику сгенерить типа 64-битных операций при только 32-битных нативно еще сойдет - ЕСЛИ это не валит проц в дикие эксепшны и не вызывает само черт знает что куда-то в недра. Есть случаи когда я решительно не хочу отвечать за чужой код и предпочитаю знать по сути каждый байт полученого бинаря. И какого черта он тут делает.
> С какого перепугу compiler-builtin стал рантаймом?
Хм, а чем он интересно стал? И, главное чего эта пакость делает и насколько это оверрайднуть там можно?
>> As of Rust 1.38.0, intrinsics::abort lowers to a trap instruction on most architectures; on
>> some architectures it simply lowers to call to the abort function (unmangled name).
>> The exact behavior of intrinsics::abort is architecture and system dependent.Охрененно. И эти люди еще будут нам тут что-то про undefined behavior лечить. Когда компилер может сделать <что-то>. Architecture dependent. При том это вообще-то видимо программу валит по задумке. И в штуке типа микроконтроллера мне вот например вообще совсем не катит подобный подход, особенно с "architecture dependent something".
>> И че? Где там дерги внешинх компонентов-то?
> Ну вот там - под отсутствием рантайма в идеальном случае подразумевается что
> есть только мой код и более - нихрена.Где "там"?
>> С какого перепугу compiler-builtin стал рантаймом?
> Хм, а чем он интересно стал? И, главное чего эта пакость делает
> и насколько это оверрайднуть там можно?Хинт: посмотри для платформы или выкинь интринсик и впили свой код.
>>> As of Rust 1.38.0, intrinsics::abort lowers to a trap instruction on most architectures; on some architectures it simply lowers to call to the abort function (unmangled name).
>>> The exact behavior of intrinsics::abort is architecture and system dependent.
> Охрененно. И эти люди еще будут нам тут что-то про undefined behavior лечить.И где там "undefinded"? Если есть trap для этой платформы, то он вставится компилером. Если нету, до будет ошибка при компилировании.
Если трапа недостаточно ... напиши то, что тебе именно нужно именно там.
> Когда компилер может сделать <что-то>. Architecture dependent. При том это вообще-то видимо программу валит по задумке. И в штуке типа микроконтроллера мне вот например вообще совсем не катит подобный подход, особенно с "architecture dependent something".Отличное опровержение ... своих же фантазий.
> Где "там"?Какие-то интринсики, билтинсы и проч. Всегда хочется оторвать бошку за это при програмизме под микроконтроллеры и проч.
> Хинт: посмотри для платформы или выкинь интринсик и впили свой код.
А нельзя как-то сразу сказать что мне не надо медвежьих услуг? Ну и вообще, я вон посмотрел как растовик-затейник пытался решить "проблему Тойоты". Это когда у вас есть платформа без MMU, но очень хочется чтобы stack overflow был пойман и не порушил состояние системы. И там он совсем дошел - аж до кастомного экспериментального линкера(?!?!). Я попробовал - у меня такое, и даже круче, на си получилось с штатным гцц из системных репов. Стабильным. Без всякой экспериментальщины. Там пойнт в том чтобы перепахать layout RAM и сдалать верхушку стэка ниже прочих данных, тогда он не сможет протереть переменные, а когда RAM закончится совсем - за заезд вне региона проц уже сам даст в тыкву хардварным эксепшном. Блин, с фига оно у вас так сложно и криво? Эта типа-системная штука вообще не умеет изначально одуплять в кастомные лэйауты памяти? Или wtf?
> И где там "undefinded"? Если есть trap для этой платформы, то он
> вставится компилером.Откуда я знаю что эти упыри вообще называют trap? Для начала не у любого проца на этом глобусе вообще есть какой-то эквивалент этого понятия, если это было нечто типа "exception" и "exception handler" по смыслу.
И тем более я ниипу как это реализовано у них на той или иной платформе. И то что это может быть еще и по разному и нет четкого определения как-то душу не греет. Вообще, на вид, ему бы какой-нибудь "freestanding mode" оформленый стандартом, как в c99 сделали, чтоли, не? А то выглядит как отписка какая-то, мол мы тут что-то сделаем а вы там ипитесь как хотите.
> Если нету, до будет ошибка при компилировании. Если трапа недостаточно ... напиши
> то, что тебе именно нужно именно там.Самое логичное - ну, мой собственный обработчик позвать. Оно будет возбухать если своим обработчком их дефолтное барахло с какими-то там "трапами" перекрыть?
> Отличное опровержение ... своих же фантазий.Ну, я так понял описание работы вон той фигни с ваших слов.
>> Хинт: посмотри для платформы или выкинь интринсик и впили свой код.
>> Какие-то интринсики, билтинсы и проч. Всегда хочется оторвать бошку за это при програмизме под микроконтроллеры и проч.Когда нечего возразить по теме, прискипайся к стандартному примеру баре метал хеловорда.
> А нельзя как-то сразу сказать что мне не надо медвежьих услуг? Ну
> и вообще, я вон посмотрел как растовик-затейник пытался решить "проблему Тойоты".Т.е. по теме сказать нечего.
> так сложно и криво? Эта типа-системная штука вообще не умеет изначально
> одуплять в кастомные лэйауты памяти? Или wtf?
$ cat link.x
/* Memory layout of the LM3S6965 microcontroller */
/* 1K = 1 KiBi = 1024 bytes */
MEMORY
{
FLASH : ORIGIN = 0x00000000, LENGTH = 256K
RAM : ORIGIN = 0x20000000, LENGTH = 64K
}/* The entry point is the reset handler */
ENTRY(Reset);EXTERN(RESET_VECTOR);
SECTIONS
{
.vector_table ORIGIN(FLASH) :
{
/* First entry: initial Stack Pointer value */
LONG(ORIGIN(RAM) + LENGTH(RAM));/* Second entry: reset vector */
KEEP(*(.vector_table.reset_vector));
} > FLASH.text :
{
*(.text .text.*);
} > FLASH/DISCARD/ :
{
*(.ARM.exidx .ARM.exidx.*);
}
}
Оно?> на вид, ему бы какой-нибудь "freestanding mode" оформленый стандартом, как в
> c99 сделали, чтоли, не?Смею заметить, что сделали аж 30 лет спустя. И эта, давно хотел спросить как у вас там с альтернативными компиляторами-то? А то сначала "ну, для gcc нужно еще сделать то и это", затем - "смотри стандарты".
> Самое логичное - ну, мой собственный обработчик позвать. Оно будет возбухать если
> своим обработчком их дефолтное барахло с какими-то там "трапами" перекрыть?Изволите издеваться или не изволите читать? Дефолтное барахло в примере предоставляется самим погромистом компилеру. Только что анонимы возмущались по этому поводу.
> Т.е. по теме сказать нечего.Ну я ссыль прислал на вон те упражнения растамана. У него как-то дофига странной долботни вышло.
> Оно?
Ага. Только я не понимаю: а как по этой штуке
- Сам раст знает где у него стэк?
- Проц знает откуда стэк начинается?
- Как сие все вместе сообща играет?Но вообще gcc'образненько так, я б сказал смотрится неплохо, люди прочухали как это должно быть. Но где тут описан layout RAM, самое интересное как раз?
> Смею заметить, что сделали аж 30 лет спустя.
Ну так те 30 лет как бы прошли. И это, нельзя было NIH урезать и стибрить идею? Или тут надо тоже 30 лет погодить? Блин, а я не МакЛауд :\
> спросить как у вас там с альтернативными компиляторами-то?
Если именно фирмвари и проч - это таки малость выезд за пределы стандарта. То-есть даже freestanding не регламентирует столь низкоуровневые вещи как компоновку адресных пространств или структуры бинарников и как сие контролировать - де факто, раньше такой уровень контроля вообще давал только ассемблер, возможность заюзать что-либо кроме него в общем то уже некислый апгрейд. Половина сишников и то таблицы векторов и проч до сих пор асмом оформляет.
Так то сам код неплохо жрется тем же tcc. Но вот сгенерить поток команд cortex M он вроде не умеет, а если б даже и умел - у него не такой умный линкинг чтобы суметь структуру бинаря скомпоновать под кастомный образ, с указанием адресов и проч.
> А то сначала "ну, для gcc нужно еще сделать то и это", затем - "смотри стандарты".
Ну как бы именно злостно системные вещи имеют тенденцию несколько выезжать за пределы стандартов. Потому как сильно специфичные.
> Изволите издеваться или не изволите читать? Дефолтное барахло в примере предоставляется
> самим погромистом компилеру. Только что анонимы возмущались по этому поводу.А, ок, значит я тормознул, пардон.
>>>> нужен runtime в лице memcpy, memcmp, memset, rust_begin_panic и rust_eh_personality
>>> как языку, такой runtime не нужен. В реализации gcc могут понадобиться
>>> разные хитрые процедуры 64-х разрядных умножений/делений, которые находятся в libgcc.
>> Еще иногда это падло хочет memcpy, но назвать мой минимальный memcpy рантаймом мне как-то совесть не позволяет
> Т.е. ржавый memcpy - это рантайм, сишный - "не очень рантайм"?
> Самим-то не смешно?нет, C-шный (по стандарту) runtime тоже указан в том обсуждении - для freestanding implementation это штук 9 h-файлов в которых нет ни одной функции. Т.е. вообще. Для GCC это не совсем так, как тут уже обсуждалось, есть libgcc, в которой есть поддержка 64-х разрядных операций, но это мы говорим про 32-х битные процессоры, но разных memcpy() и прочих mem*() среди них нет. И вообще сам по себе GCC не должен вставлять вызовы функций, там, где Вы этого не сделали (опять-же за исключением 64-х разрядных операций на 32-х битных процессорах).
> нет, C-шный (по стандарту) runtime тоже указан в том обсуждении - для
> freestanding implementation это штук 9 h-файлов в которых нет ни одной функции.Реально можно хоть 0 хидерфайлов. Но для C99 парочку стоит взять. Хотя-бы stdint.h, чтоли, с нормальными людскими типами. Для стандартного memcpy надо еще size_t дурацкий, это stddef.h.
> Т.е. вообще. Для GCC это не совсем так, как тут уже обсуждалось, есть libgcc, в которой
> есть поддержка 64-х разрядных операций, но это мы говорим про 32-х битные процессоры,На кортексе M3 спокойно билдуется без всяких libgcc. И он 32-битный, разумеется.
> но разных memcpy() и прочих mem*() среди них нет. И вообще сам по себе
> GCC не должен вставлять вызовы функций, там, где Вы этого не
> сделали (опять-же за исключением 64-х разрядных операций на 32-х битных процессорах).У меня вставил memcpy на инициализированный массив...
>> нет, C-шный (по стандарту) runtime тоже указан в том обсуждении - для
>> freestanding implementation это штук 9 h-файлов в которых нет ни одной функции.
> Реально можно хоть 0 хидерфайлов. Но для C99 парочку стоит взять. Хотя-бы
> stdint.h, чтоли, с нормальными людскими типами. Для стандартного memcpy надо еще
> size_t дурацкий, это stddef.h.так и я пытаюсь тут намекнуть прозрачно, что у С нет как такового runtime-а. Т.е. никаких функций для работы программы он не требует.
>> но разных memcpy() и прочих mem*() среди них нет. И вообще сам по себе
>> GCC не должен вставлять вызовы функций, там, где Вы этого не
>> сделали (опять-же за исключением 64-х разрядных операций на 32-х битных процессорах).
> У меня вставил memcpy на инициализированный массив...у нас такого не делал, правда для процессоров Atom.
> так и я пытаюсь тут намекнуть прозрачно, что у С нет как
> такового runtime-а. Т.е. никаких функций для работы программы он не требует.Ну да. По большому счету его можно сделать и просто кодогенератором без нихрена. Так что в полученом бинаре по сути ничего кроме моего кода и не останется.
> у нас такого не делал, правда для процессоров Atom.
Ну это все же здорово другая архитектура. Массив для этого должен быть RW, инициализированный, да и очень врядли вы на Atom парились размером бинаря, так что LTO наверное не заморачивались. А вот когда у вас в чипаке на все 16 кил флеша, срезать добрую четверть фирмвари "совершенно нахаляву" (без потерь скорости или функциональности) почему-то становится очень уж соблазнительно. И LTO это обеспечивает. Но у него свой, довольно инопланетный подход к делу. Настолько инопланетный что он вот как оказалось даже может в принципе сам себя обмануть, посчитав memcpy напрочь unused и выкинув его. И потом заметив что не такой уж он и unused был :D. И да, вот за такие приколы я недолюбливаю builtins/intrinsics/типа-нерантайм/whatever this crap called.
> Буквально недавно обсуждали начиная отсюда: https://www.opennet.dev/openforum/vsluhforumID3/121332.html#107
> Как минимум для Rust, похоже, нужен runtime в лице memcpy, memcmp, memset,
> rust_begin_panic и rust_eh_personality (это в режиме no_std, как я понял).Везде вам рантайм мерещется. Нужны минимальные _реализации_ базового набора функций.
rust_begin_panic и rust_eh_personality - заглушки-однострочники.
#[lang = "eh_personality"]
#[no_mangle]
pub extern fn rust_eh_personality() {
}
#[lang = "panic_impl"]
#[no_mangle]
pub extern fn rust_begin_panic(info: &PanicInfo) -> ! {
unsafe { intrinsics::abort() }
}
memcpy, memcmp, memset - можно взять из compiler-builtins, можно сваять самому
https://doc.redox-os.org/std/src/std/sys/redox/start.rs.html...
/// Memcpy
///
/// Copy N bytes of memory from one location to another.
#[unstable(feature = "start_fn", issue = "0")]
#[no_mangle]
pub unsafe extern fn memcpy(dest: *mut u8, src: *const u8,
n: usize) -> *mut u8 {
let mut i = 0;
while i < n {
*((dest as usize + i) as *mut u8) = *((src as usize + i) as *const u8);
i += 1;
}dest
}
Ну и уродство.
> Ну и уродство.И потом эти люди удивляются что на этом никто в здравом уме не хочет операционки писать.
> Ну и уродство.Аргументативный аргумент, че.
> Аргументативный аргумент, че.Ну реально ж дохрена каких-то диких закорюк. А с си я просто зырю описание memcpy в мане и пишу его за считаные минуты. Без этих странных закорюк.
>> Аргументативный аргумент, че.
> Ну реально ж дохрена каких-то диких закорюк.Ну раз дохрена, то покажи эти дикие закорюки, которых нет в си.
> А с си я просто зырю описание memcpy в мане и пишу его за считаные минуты.
От этого "оно выглядит не как си!" не стало серьезным аргументом.
> Ну раз дохрена, то покажи эти дикие закорюки, которых нет в си.Ну, например, таких:
#[unstable(feature = "start_fn", issue = "0")]
#[no_mangle]Это вообще что за монстры такие дикие? И зачем весь этот ужас в коде должен быть?
Это называется "атрибуты". Типа аннотаций, которыми можно помечать элементы программы. Они могут быть реализованы как в компиляторе, так и самим пользователем.
>[оверквотинг удален]
> n: usize) -> *mut u8 {
> let mut i = 0;
> while i < n {
> *((dest as usize +
> i) as *mut u8) = *((src as usize + i) as
> *const u8);
> i += 1;
> }
> dest
> }
Мда...
1) В сях это определено как void* а не u8*. Это нечто для раста-онли, несовместимое с кодом на си, так?
2) Куча закорючек, да еще я не понимаю - ну ок, а если ей NULL дать на вход, то будет - что?
А, да, ну и на сях тогда уж: while (remains > 0)
void *memcpy(void *dest, const void *src, size_t n)
{
size_t remains = n;
uint8_t * sr8 = (uint8_t *) src;
uint8_t * ds8 = (uint8_t *) dest;
if ((dest == NULL) || (src == NULL) || (n == 0))
{
return dest;
}
{
*ds8 = *sr8;
remains--;
ds8++;
sr8++;
}
return dest;
}
Мне кажется, или оно лаконичнее, ловит явно кривые случаи как прописано в спеках, и закорючек меньше? Не буду утверждать что это 100% compliant но хотя оно делалось для стартапа, до кучи сие устроило и огромный сторонний код, которому я накидал тесткейсы и они проехали.
> Мда...
> 1) В сях это определено как void* а не u8*. Это нечто
> для раста-онли, несовместимое с кодом на си, так?Мда, ржавый memcpy работает с ржавыми типами, вот так сюрприз ...
> 2) Куча закорючек, да еще я не понимаю - ну ок, а
> если ей NULL дать на вход, то будет - что?А ты не давай и ничего не будет.
> Мне кажется, или оно лаконичнее, ловит явно кривые случаи как прописано в
> спеках, и закорючек меньше? Не буду утверждать что это 100% compliantКажется. В built-in фунции для внутренней развертки компилятором, в ЯП без NULL (в safe) и возможностью компилятора доказать ненульность аргументов, как-то более логично вынести проверку туда, где она действительно будет нужна. Чай не жабаскрипт.
> Мда, ржавый memcpy работает с ржавыми типами, вот так сюрприз ...А какое применение имеет сферический ржавый memcpy в вакууме? oO Ну, например, им можно допустим взлететь в типа-неправильном-расте, скопировать RWDATA flash -> RAM, проинитить нечто типа BSS, получить типа-правильный-раст и работать как будто этого не было, все это самим растом? Без асма и прочих интринсиков? На сях так проканало и вот там самопальный memcpy пригодился, как типа часть типа-стартапкода, который внезапно тоже на си. А что, разве не прикольно запустить си из си? Это квинтэссенция системного программизма.
> А ты не давай и ничего не будет.
Это уже на совести caller'а. Откуда я заранее знаю что наобум взятый caller делать по факту будет? Я что, телепат? oO Изначально оно вообще делалось наполовину чтобы запустить прикольный но крупный и чужой алгоритм, где я ессно не могу оценить чего тот подаст на вход моей функции, я не настолько крут чтоб в уме просчитать все фокусы ридсоломона при произвольных входных данных. Поэтому я могу лишь поFUZZить сие, сделать тесткейсы, а если safety был не пустым звуком - вместо "return dest" написать "system_fault()". Который не даст просто пойти и просто работать как будто проблемы не было.
> Кажется. В built-in фунции для внутренней развертки компилятором, в ЯП без NULL
> (в safe) и возможностью компилятора доказать ненульность аргументов, как-то более логично
> вынести проверку туда, где она действительно будет нужна. Чай не жабаскрипт.Так эта функция заявлена как unsafe, не? Ну и в конкретно моем случае я был лимитирован совместимостью с стандартным прототипом, дабы не патчить вон тот код. Это собственно единственный пойнт за дурной size_t.
>> Мда, ржавый memcpy работает с ржавыми типами, вот так сюрприз ...
> А какое применение имеет сферический ржавый memcpy в вакууме?clone, copy и все такое?
> На сях так проканало и вот там самопальный memcpy пригодился, как
> типа часть типа-стартапкода, который внезапно тоже на си. А что, разве
> не прикольно запустить си из си? Это квинтэссенция системного программизма.Еще раз, накуя ржавому коду иметь сишные дататипы, если это не предполагается к использованию сишкой?
>> А ты не давай и ничего не будет.
> Это уже на совести caller'а. Откуда я заранее знаю что наобум взятый
> caller делать по факту будет? Я что, телепат? oO Изначально оно
> вообще делалось наполовину чтобы запустить прикольный но крупный и чужой алгоритм, где я ессно не могу оценить чего тот подаст на вход
> моей функции, я не настолько крут чтоб в уме просчитать всеА в огороде бузина? Что не понятного-то в "compiler-builtin" и в том, что сaller - это вообще-то исключительно компилятор?
И стандартное определение memcpy - валидные указатели. Как в сишке.
> Так эта функция заявлена как unsafe, не?И че? Или труЪ-критикам ржавчины не разрешается узнавать, что на самом деле из себя представляет unsafe?
> clone, copy и все такое?А, типа это прогер должен предоставить компилеру в "freestanding" окружении?
> Еще раз, накуя ржавому коду иметь сишные дататипы, если это не предполагается
> к использованию сишкой?Гм, ну без сишки как мне кажется будет довольно тухло. Накодить все и вся на свете самому конечно круто, но некоторые алгоритмы довольно навороченные, их самому с ноля хреначить может потребовать дофига времени.
> что сaller - это вообще-то исключительно компилятор?
Не понимаю откуда в случае memcpy следует что caller'ом будет исключительно компилятор. То-есть, мне самому этой функцией в другом коде пользоваться нельзя?
> И стандартное определение memcpy - валидные указатели. Как в сишке.
У сишки другой прототип вызова этой штуки. Я бы сказал немнго дурацкий (как минимум size_t) но сейчас видите ли уже есть легион кода, который написан именно вот так :\ и при всем уважении, коней на середине переправы менять уже поздно, а переписывать вообще все алгоритмы на этом глобусе "зато на раст" лично я морально не готов.
>Берите пример с языка Сиэто которому нужен libc?
> это которому нужен libc?Не нужен в случае baremetal и проч :P
Если используешь libc, то да - libc нужно, иначе не нужна.
Лично тебе "не нужна". Говори не за всех а за себя. Это тебе говорит лютый микроконтроллерщик.
Python топчик и работа на нём есть, в отличие от Rust🌚
Ну так ведь Питухон - это псевдокод, а Раст - синтаксический ад.
В Расте весьма неплохой синтаксис
Достаточно лишь немного вникнуть и увидеть, что всё отлично легло на своё место
> В Расте весьма неплохой синтаксисДа ну, наворотили закорючек и в каждой версии усугубляют. Дельные идеи есть, но идиотское сообщество, переклин на карго культе и мерзотный синтаксис меня как-то отваживают. И gcc его не умеет, а полупроприетарный llvm - ну его нафиг, там гугол да эпл рулят, стремные конторы.
> Python топчик и работа на нём есть, в отличие от Rust🌚Сравнил, блин, ежа с ужом. Да и выпрет его скоро игогошечка. Уже половина вебманки которых я знал на него переползли. А что, вебня делается ненапряжно, перфоманс не чета питону, так что илья муромец к этому змию уже пришел.
К логопеду может?
даже PowerShell популярнее Rust
>даже PowerShell популярнее RustБыдлоШелл от Майкрософта берёт количеством, а не качеством. Тупо много компьютеров на Виндовсе. Всё!
многие девопсы пользуют на линуксах повдершелл, ващета, особенно в автоматизации
и очень радуются, ибо баш - это пи*дец полный
многие девопсы просто позорно не осилили божественный баш.
Оба они - сорта говна, каждый со своими хаками.
> Оба они - сорта говна, каждый со своими хаками.Павершел сорт гамна хотя-бы потому что его старта в виртуалке можно заманаться. Так что гнать таких девопсов надо сцаными тряпками - это не девопсы а эникеи недобитые.
вот что полный п...ц так это PowerShell. такого извращения ещё поискать надо, это же геморой обычный сборочный скрипт написать, одну дату получить в нужном формате не пойми сколько строк накакать надо, против одной на bash
в PS скрипты пишутся на C#
нужную дату можно получить через toString("ddMMyyy"), не?а вот 'тестовые' паттерны в Баш - то ещё удовольствие.
Я не знаю C# и знать не собираюсь, мне нужно было получить дату для автоматизации сборки. Я погуглил.C# мне вообще не нужен от слова вообще. И учить только для того чтобы скрипт сборки написать?
@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime%Издеваетесь? Против shell
date '+ %A, %B %d, %Y.'Выкиньте свой виндовс и свой PS. Куда проще убедить начальство что для сборки нужна нормальная система Linux/BSD и получить нормальную сборочную станцию.
> в PS скрипты пишутся на C#При том не понятно нахрена. В мелкой системной автоматизации от него ничего кроме геморроя, а если кто по крупному на нем проект навернуть хотел - C# и так вроде уже был. Я вот тут вспомнил что АДовые админы - какое трололо - использовали самопальчики на WSH (js, vbs) вместо этого ацкого трэша. Ну, там как-то в 5 раз проще накодить это было - просто пошел и накодил.
> даже PowerShell популярнее RustА тут еще надо сравнить кто спонсор отчетов :). Да и вообще сравнение такое - невменяемая скриптота vs язык с претензией на скорость и системность. Они не конкуренты даже чисто теоретически - ниши сильно разные. Ну не будете же вы писать на вашей щели двигло браузера? :)
А на том же баше пишут двигло браузера? незнал... пойду пацанам расскажу... :)
> А на том же баше пишут двигло браузера?Нет, но вы ж с растом сравнивали... я и намекнул что это зело уж разные тулсы.
> незнал... пойду пацанам расскажу... :)
Ну, не, до этого пока никто не допер вроде. Только до ынтыгпгайз клиента let's encrypt'а.
Даже всё популярнее Rust
Я даже книжку по Rust'у купил и начал его изучать. Но блеять! Нет же ничего. 99% библиотек - биндинги к сишным с кучей unsafe. Зачем тогда нужен этот ваш Rust? Не лучше ли использовать добрую и светлую Сишечку или классические кресты?
Или Nim, использующий C/C++ для компиляции.
только STD у Nim'а заявзана на Boehm, что "ниочень"
Разве нельзя без gc или с другим?
Можно arc.
> Разве нельзя без gc или с другим?с другим может и можно, а вот без GC ответ мне примерно был таким: "ну, он же не сильно тяжёлый, так что можно его запихнуть и в вашу DLL, чё уж там... ну или не пользоваться stdlib Nimа, как вариант"
>вот без GCARC не GC. Так что, обойтись можно без него.
>>вот без GC
> ARC не GC. Так что, обойтись можно без него.вот это да
перестал следить за ним ещё до выхода первого стабильного релиза 1.0
видимо позже завезли этотема отключаемого GC понималась много раз
круто, когда разарботчики прислушиваются к сообществу (если, конечно, одно с другим связано)
>>вот без GC
> ARC не GC. Так что, обойтись можно без него.Маркетологи ябла кусают всех, до кого дотянутся?
Во-первых: ARC это разновидность автоматического управления памятью во время выполнения (runtime), о чем скорее всего и шла речь в "без GC". Те же яйца, только в профиль.Во вторых - т.к. разработчик не контроллирует момент освобождения памяти, ARC таки является разновидностью "сборщика мусора" (на что даже немного намекает параметр --gc:arc )
Просто "тормоза" в виде модификации счетчиков ссылок более равномерно и предсказуемо размазанны по коду.
ARC автоматически расставляет free(), не более.
На этапе компиляции.
> ARC автоматически расставляет free(), не более.А автор-то об этом слышал? 🙄
https://github.com/nim-lang/Nim/blob/947ecd1257f78e8ee723bf3...
The ``ref`` object header is independent from the
runtime type and only contains a reference count.
...
type
RefHeader = object
rc: int # the object header is now a single RC field.
# we could remove it in non-debug builds for the 'owned ref'
# design but this seems unwise.
https://forum.nim-lang.org/t/5734
Araq
> it's plain old reference counting with optimizations thanks to move semantics.
>
ну, ещё и JS в качестве бэкенда для компиляции.
в частности сам движок сайта Nim'a написан на Nim'e (насколько мне известно)
Я это к тому, что хз чому он так популярен и где все эти растолюбы? По ощущением, у Раста очень гнилое сообщество. Язык хороший и ключевые разработчики грамотные, но как-то тянет скам разный к этому языку
>Я это к тому, что хз чому он так популярен и где все эти растолюбыпотому что в интернетах очень много, громко и жёлто кричат
это основной (если не единственный) способ его рекламы
какой запах - такие и мухи.
> хороший и ключевые разработчики грамотные, но как-то тянет скам разный к этому языкуВплоть до того что эта новость имеет заголовок на грани фрода. И вот это сообщество совсем не украшает. Визгливые макаки какие-то а не програмеры. Орать что раст рулит они горазды. А вот код на нем писать видимо рулит сильно меньше, потому что как до дела, 99% горлопанов куда-то резко сливается. И долбаться предлагается почему-то именно вам. Или как максимум предложат какой-нить хелловорлд наколенный от невменяемого хипстера, делавшего домашку, в душе ниипущего как разработка софта в промышленном виде выглядит.
Я растолюб. Хз, куда ты там смотрел, но у меня большая часть зависимостей вполне самостоятельные либы на расте. Примеры биндингов, которые я использую:
gnuplot - потихоньку перехожу с него на plotters, как более продвинутый вариант.
oboe - гуглолиба, которую пусть сам гугл на расте и переписывает
mozjpeg - быстрый енкодер/декодер с байтоёбскими оптимизациями. Слишком долго пилить альтернативу, но может ещё и запилят
cursive - зависит от ncurses, но комментс
ещё некоторые матан-крейты зависят от blas/cuda и т.д. - тоже слишком долго и дорого переписывать. Например, тот же blas вообще на фортране написан - что-то никто не спешит переписывать его на плюсах, плюсисты сами юзают, что дают.
cuda и opencl - одно из последних что смотрел на Rust. Может правда не везёт мне. Но блеять! Куда ни тыкнусь - либо нет библиотек, либо биндинги к сишным плохого качества :|
BLAS не на фортране написан. Точнее, когда-то давно, в тысяча девятьсот мохнатых, первые версии и правда были на нем. Но последние лет так дохрена от фортрана там только API, а сам код на сях написан. У меня в системе реализация BLAS вообще собрана без поддержки этого фортраньего
API, потому что им тупо никто не пользуется. Современные реализации BLAS, типа OpenBLAS, вообще кусками на ассамблере нафигачены.
Всякий раз прихожу к парадоксальному выводу, что для работы с Rust, нужно на отличном уровне знать Си/C++ :)Выучи один язык по цене 3х лол
> Аналитическая компания RedMonkДальше можно не читать. И дело тут в первую очередь в "аналитической компании" ;)
⚠️аналитики опеннета выразили сомнение в профессионализме аналитиков компании RedMonk
Неа. Речь о вообще любой "аналитической Компании".
А чё ты смеёшься?? Думаешь, в РедМонк сидят люди умнее нас? Такие же лопушары, только при этом ещё сосут бабло с днищща типа Мозилл за рекламу их г***вна.
Рейтинги у них, паимаишь... Достаточно посмотреть на источники рейтинга (индекс... ОБСУЖДЕНИЯ!! Обсуждения, Карл! Бабки на лавочке обсуждают - и вот оттуда рейтинг!), чтобы понять, что там такие же АНАЛитеги, как и опеннетчики. Только в отличии от редмонковских макак, мы хотя бы отдаём себе отчёт в смехотворности источника.
Я понять не могу, это ты, брызжа сарказмами, поливаешь дерьмом опеннет или серьёзно говоришь?
> А чё ты смеёшься?? Думаешь, в РедМонк сидят люди умнее нас?вас, этого кого, комментаторов опеннета? тогда - да, просто уверен
Во ты себя обгадил, тезка. Фигурно! :)
> А чё ты смеёшься?? Думаешь, в РедМонк сидят люди умнее нас?ну, дяди своей аналитикой занимаются полный рабочий день, а аналитики опеннета - только в свободное время. какое-то отличие есть.
а вообще я слабо верю в такие рейтинги - взять 100500 параметров, сложить их, предварительно домножив на взятые "на глазок" коэффициэнты и потом результат отсортировать по убыванию. результат будет очень сильно отличаться в зависимости от выбора этих коэффициентов
PHP на четвёртом месте!!! Ааа! И TypeScript = JavaScript, хотя конечно для TypeScript г_внокода поменьше.
>PHP на четвёртом месте!!! Ааа!Так я сейчас тем и занимаюсь, что заправляю картриджи и кодю на PHP/
Бедолага... ну как там, на днище ИТ? :)
Там весь интернет.
Ну какое же это днище it? Я его здесь не встречал ...
Не обижай студентика ... он вырастет найдет тебя и отомстит...
CSS среди языков программирования доставляет.
> CSS среди языков программирования доставляет.Ну а что поделать если эта гадость стала тюрингполной? :)
Растовики совсем очешуели с гнилым пиаром!Нормальный заголовок для такой новости: "компания RedMonk опубликовала новую редакцию рейтинга языков программирования". Новость от растамана - "раст вошел, блаблабла". Гребаный стыд.
Можно было бы назвать: "Даже перл популярнее раста".
> Можно было бы назвать: "Даже перл популярнее раста".Чорт, это хороший, годный троллинг! :D
> Даже перл популярнее растаПотому что На Perl'e программируют и решают реально возникающие задачи, а на расте манкикодят ненужнопрожЭкты.
Я вот порадовался за язык. Он заслужил признания, единственная реальная альтернатива C/C++. R тоже был на 20 месте в прошлый раз.
Как я понимаю, не рады только те, у кого из-за Раста знания тонкости извращений с C будут обесцениваться :)
> Я вот порадовался за язык. Он заслужил признания, единственная реальная альтернатива C/C++.Ну хорошо, я теперь признаю вас - наравне с Herbalife International и центром американского английского. Спамеры из вас примерно настолько же наглые и задолбавшие уже.
> Как я понимаю, не рады только те, у кого из-за Раста знания тонкости извращений
> с C будут обесцениваться :)Да вот что-то редокс не сильно линуха пока обесценил. Ну вы то с него нам уже пишете, не?
Что? Какие спамеры, кто задолбал?
Пока на опеннете я наблюдаю в основном только тех, кто боится всего нового и поэтому бессмысленно критикует Раст. И маленькие островки адекватности, которые хотя бы попробовали его перед тем как что-то говорить. По моему опыту, редко что-то отрицательное может исходить от человека, который вник в эту тему, и понял его перспективы.> Да вот что-то редокс не сильно линуха пока обесценил
Не, ну это слишком палевно. Редокс же тут вообще ни при чем
Сразу становится видно, что коммент просто от толстого тролля)
> Что? Какие спамеры, кто задолбал?Ну вот например заголовок этой новости - злостный спам.
> Пока на опеннете я наблюдаю в основном только тех, кто боится всего
> нового и поэтому бессмысленно критикует Раст.Ну там вон некто memcpy родил. А что, вы и правда утверждаете то такой шмат блевотины - красиво и удобно?
>> Да вот что-то редокс не сильно линуха пока обесценил
> Не, ну это слишком палевно. Редокс же тут вообще ни при чемА кто при чем? На этой пыхтонрасии вообще есть хоть 1 вменяемый проект более-менее доведенный до ума и имеющий какие-то достоинства, кроме "зато на %s"?
> Сразу становится видно, что коммент просто от толстого тролля)Ну уж не спамерам от раста жаловаться на троллей. Скажите спасибо что не как с директором американского английского, а то со спамерами и вот так бывает.
Не звезди в чём не понимаешь! Раст заслужил пока что только одного - памятной грамоты работнику, который это толкает в Гугле. В реальном продакшене такое г0вно не нужно от слова вообще.
Можно хоть уссыкаться мантрой про "распределение памяти", только язык от этого лучше не станет.
Не говоря о том, что Раст не имеет ООП! Кому такое Г нужно??
Вам зачем ооп? На си как то и без ООП программы пишут и как то он популярный. А шаблоны в плюсах это к какому свойству ООП относяться?
Ага, в C совсем без ООП обходятся. Только вот наворачивают его сбоку искусственно. И в результате получаются франкенштейны GTK.
> Ага, в C совсем без ООП обходятся. Только вот наворачивают его сбоку
> искусственно. И в результате получаются франкенштейны GTK.У полюсовиков получился франкен-куть. Я даже и не знаю кто стремнее, если честно. "Оба хороши" :)
зато у сплюснутых с ихним кутёй всё замечательно в оопе... версии moc плодятся, как грибы, и должны совпадать у приложения и системы.
Ну GTK ладно.
Но EFL то неплох.
> В реальном продакшене такое г0вно не нужно от слова вообще.А что нужно? Джавка?
Сколько у тебя часов опыта программирования на Расте?
Например, actix web - один из быстрейших веб-серверов вообще, в целом.> Не говоря о том, что Раст не имеет ООП
Имеет
Трейты круче классического ООП
public / private тоже есть
Даже сериализация есть (Serde), о чем в C/C++ можно только мечтатьКстати, именно Serde и Cargo меня привлекли изначально, и после C++17/20 Раст ощущается как Ламборджини после Жигули :)
> Даже сериализация есть (Serde), о чем в C/C++ можно только мечтатьПока ты мечтаешь, у нормальных людей в c/c++ она уже давным давно есть. Я тебе больше секрет открою. Прямое отображение структур данных не только на память, а даже на часть файла mmap к примеру. Т.е. практически нулевые затраты. И никакого дибильного парсинга дибильных json
>Я тебе больше секрет открою.Ты очередной раз пёрднул в лужу и дупля не отбиваеш о чем тут примеры приводили.
Если ты думаеш что оскорбляеш растовиков, то нет. Ты тут позориш себя и С.
> отбиваеш
> оскорбляеш
> позоришБлин, надеюсь что програмите вы все же получше чем это. Но да, вы кое-в-чем правы: си явно не годится для таких как вы.
имена переменных на скорость программы не влияют.
> Не говоря о том, что Раст не имеет ООП! Кому такое Г нужно??Детка, лично я последний раз писал что-то ОО в далеком 2012. И да, я забыл ООП как страшный сон.
Так и скажи, неосилил.
> Так и скажи, неосилил.точняк, после 5 лет в универе и 3 лет работы - не осилил.
> точняк, после 5 лет в универе и 3 лет работы - не осилил.Это типа похвастаться хотел? Как-то наоборот вышло. За 8 лет не осилил.
Ну так я тебе скажу, многие и за всю жизнь дальше жопаскрипта не пойдут.
Парадокс, но жопаскрипт таки объектный, так что наезд получился какой-то багофичнутый :)
Эммм... Наверное с Go путаешь? Его в гугле толкают, а не Rust.
Никогда бы не подумал, что скала и котлин так популярны. Хотя котлин там вроде гугл продвигал(?), а что со скалой?
после твоих вопросов народ ломанулся гуглить, что за порода котлинг и почему популярен альпинизм по скале. А гугл продолжает считать запросы.
Да... Erlang'a нигде нет, зато мартышкин Go растет. За Rust рад - неплохой язык. И С держится - круто.
Erlang - на любителя. А вот почему Elixir c Phoenix-ом не взлетели, а Ruby-к c ROR в топах - это вопрос.
Вот как раз Elixir на любителя. Адская смесь Erlang и Ruby.
Потому что нужно знать и понимать otp. Просто выучить otp толку мало,нужно понимать зачем оно тебе надо вот в этом то вся и проблема.если бы на каждом углу кричали в otp вот так генсераер может и это нам даёт кучу плюшек,а про это молчат, да и не до otp начинающим. Литература по elixir мягко говоря не ориентированна для тех кто раньше программировал на ruby и хреначил круды. Что до ruby там все плохо. Плохо с самим gems, плохо с startup time, memory usage. Вообще рекомендовать новичку ruby плохая идея они тупо не понимают где нужно проще делать, где нужно сделать сложнее, где переиспользовать код,а где хватит copy-past
> Да... Erlang'a нигде нет, зато мартышкин Go растет.А чего б ему не расти? Он постепенно отправит вебмакак на питоне и рубях на отпуск. Вечный. Достаточно посмотреть на то как выглядит вебсервак на го. И сравнить его перфоманс, чтоли.
> За Rust рад - неплохой язык. И С держится - круто.
А вот сообщество у раста как-то не очень, гербалайф прямо какой-то развели. Скоро будут на улице подбегать и баночки своего карго всучивать.
> Достаточно посмотреть на то как выглядит вебсервак на го. И сравнить его перфоманс, чтоли.Да, а потом попытаться на нем написать что-то сложнее пары файлов с кодом. После двух лет мазохизма понял, что больше не могу. К счастью, подвернулась крутая работа на Erlang. Прям глоток воды в пустыне.
> А вот сообщество у раста как-то не очень, гербалайф прямо какой-то развели. Скоро будут на улице подбегать и баночки своего карго всучивать.
Да и хрен с ними. Лично я изучаю язык потому, что он мне нравится (правда, зашел со второго раза). А на сообщество мне, по большому счету, плевать.
Да нормальное сообщество. Много геймдева. Из программ на расте которыми пользуюсь могу вспомнить rg и bitwarden_rs.
> Да нормальное сообщество. Много геймдева.Мде? И много игр эти геймдевы написали? А то почему-то все виденные геймдевы были почему-то злостными плюсовиками. И вот кому-кому а этим на всякую безопасТность вообще если и бывает интересно - то разве что в контексте отстрела читеров, чтоли. Но это вообще о зондировании юзеорям их систем и защите памяти процесса от модификации, а вовсе не то о чем вы подумали.
Что бы полностью нет, части кода говорят пишут,но сам я из не видел. Закрытый код смотреть не дают.
Эти гейдеверы только зарубками на линейке меряются.
> Да, а потом попытаться на нем написать что-то сложнее пары файлов с кодом.На...й, Винни?! (c) анекдот. Заодно вебманки как раз и переходят на микросервисы. Мелкие, легко поддерживаемые, шустрые, простые, если что-то не работает - достаточно атомарно изолируется и более-менее понятно где косяк. Ну то-есть это потом еще и майнтайнить реально вроде.
А теперь сравним с каким-нибудь громадным куском блевоты бэкэнда на пихоне, чтоли, делающим в конечном итоге то же самое по смыслу, но куда уже и сами разработчики этого кала очкуют заглядывать. А там вон скоро дропнут пихон 2 и тому кто в это влопался останется разве что застрелиться. Примерно как битбакет и прочие любители hg это вотпрямща и делают на наших глазах, демарш за демаршем. А сколь-нибудь нагруженые сайты с пихона сдриснули уже давно, потому что хайлоад и питон взаимоисключающие параграфы.
> После двух лет мазохизма понял, что больше не могу. К счастью, подвернулась крутая работа
> на Erlang. Прям глоток воды в пустыне.Ну мне оно как-то ни к чему: мне системные и низкоуровневые дела нравятся, работа с железом и проч, а не уберабстракции и мегаконцепции.
> мне нравится (правда, зашел со второго раза). А на сообщество мне,
> по большому счету, плевать.Ну не знаю, вон тот memcpy() от растовика мне что-то совсем не вштырил. Я не спорю что там есть интересные моменты, типа borrow checker, да и вроде люди понимают прелести макросов. Но я бы предпочел чтобы вон то прикрутили к си и не делали мозг. Хотя меня и статический анализатор в принципе устроит, благо завезли :P
> Ну мне оно как-то ни к чему: мне системные и низкоуровневые дела нравятся, работа с железом и проч, а не уберабстракции и мегаконцепции.Мне так-то тоже, помимо распределенных систем. Но проблема в том, что по месту жительства все программирование вертится вокруг PHP, JS и 1C, а на удаленку такие штуки, как правило, не выносят. Хорошо еще с Erlang'ом повезло.
> на удаленку такие штуки, как правило, не выносят. Хорошо еще с Erlang'ом повезло.Да ну нафиг, там вон в соседней новости перец придумал вообще kvm из гомна и палок. И если он не лоханется, у него и годный проект получится, многим на зависть. Вот так можно взять да и стать сам себе работой, если не тупить по дикому.
То-то я смотрю тут каждый второй изобретатель-рационализатор, прям куда ни плюнь.
Erlang работает поверх виртуальной машины. Это для многих (людей и case-ов) уже в одиночку является исключающим фактором.
Тоесть пробил дно популярности
Вот это пожалуй самое удачное описание ситуации :)
Ага, причем снизу. Теперь остальные начнут вытекать.
Ладно rust Это не удивительно. Он позиционировался как убийца всех и вся, новости про него.
Но R как с 20 на 8 вдруг попал за год это загадка. Причём загадка не к языку, а к методике составления этого рейтинга.
> Но R как с 20 на 8 вдруг попал за год это загадка.Я могу объяснить. R -- это язык обработки данных. По возможностям чем-то похоже на SQL, но синтаксис больше ориентирован на обработку данных, а не на выборку их из базы. Так вот, big data сейчас в трендах, собирать данные может любой гугл, но толку-то их собирать, если не обрабатывать и не делать из них статистческих выводов? А как ты будешь делать статистические выводы, если не посредством R? Matlab? Octave? Что там ещё бывает? Или скармливать нейросетке, в надежде на то что она магически сама всё сделает? Нейросетка не сделает магически, Matlab почему-то сливает конкуренцию R. Octave всегда был и останется для альтернативщиков.
> Причём загадка не к языку, а к методике составления этого рейтинга.
Я могу предположить, что в их аналитику закрался bias: они сами эту аналитику творили небось на R. То есть они сами живут в R, и поэтому на него они нечаянно собрали больше данных. Но прежде чем обвинять кого-то в таких bias'ах, надо хоть немного пошевелить задом, и найти хоть какие-нибудь обоснования. Проверить методику создания выборки данных, например.
> А как ты будешь делать статистические выводы, если не посредством R?Ой мамочки, какое узкое мышление.
>> А как ты будешь делать статистические выводы, если не посредством R?
> Ой мамочки, какое узкое мышление.А у тебя широкое? Ты используешь SPSS?
Открой для себя Julia и не позорься.
Я знаю людей, кто занимается наукой или big data, кто использует R. Но я не знаю ни одного, кто использовал бы julia. Это может быть результат кривой выборки -- может это в моём информационном пузырьке так? Но добавляя сюда результаты этой аналитики, я бы сказал, что скорее твой информационный пузырёк искажает твоё восприятие, чем мой -- моё.
Всё так и есть. Если брать срез на текущий момент, то сообщество у Julia многократно меньше. R уже близок к пику своего успеха, Julia только начала восхождение. До выхода первой версии, когда Julia полностью стабилизировалась, не все были готовы даже начинать её изучение. Это было всего два года назад, в августе 2018. А R всё это время был уже одним из признанных стандартов в анализе и обработке данных и его признание только росло. В итоге, на данный момент у R большое сообщество, много литературы, в сети огромное количество многократно проверенных рецептов на все случаи жизни, а для Julia пока довольно пусто, по версии выше 1.0 ещё даже толком не успели напечатать книжек. Многие библиотеки, без которых невозможно нормально работать, ещё не стабилизировались, значительная часть кода, которую можно найти в сети, уже не работает. Сам-то язык невероятно хорош, но чтобы как-то можно было сравнивать с чем-то уже устоявшимся, нужно подождать хотя бы лет пять, пока выйдет литература и сформируется сообщество
Ну да, под R можно найти тонны скриптов с разными статистическими методами под все случаи жизни. Но ждать придётся не пять лет, не меньше десяти, а может и больше. Кодобаза формируется вокруг языка всю его жизнь, и "заслуженные" языки имеют огромную базу, такую за пару лет не напишешь. И пяти будет мало. То есть, моё предсказание более пессимистично: лет через пять можно будет лишь судить о том, взлетела julia или нет (ну ладно, не через пять: два уже прошло, надо ещё три), а реальным конкурентом для R Julia начнёт выглядеть лет через десять (если начнёт).
Да, примерно так и есть. Года через три наверное основные тенденции уже будут видны. Единственное, тут есть ещё один фактор, который пока никак невозможно учесть: часть из тех, кто сейчас сидит на R и постоянно плюётся от его низкой производительности, вынужденный выкручиваться, чтобы писать код без циклов, которые в R долгие как неизвестно что, с вставками на C++ через Rcpp, то есть фактически работая уже на двух языках, а не одном, наверняка при первой же возможности сбегут на что-то другое, тоже удобное, но со скоростью и возможностью нормально использовать циклы. Julia тут первейший кандидат. В подобной ситуации и любители математических расчётов и всякого машинного обучения на Python. Фактически всё, что требует скорости, у них написано на Fortran или C, где Python - только обёртка, а хочешь залезть в решатель - вникай в ещё один язык. Ну и наконец бедные студенты и научные сотрудники, которые прямо сейчас начинают учить Fortran. Увы, есть и такие. Эти наверное ждут прихода Julia больше всех. Судя по падению рейтингов Fortran их миграция уже началась. Так же как с MATLAB и ещё более медленного Octave, которые судя по синтаксису Julia видимо и планировались как её первая цель. Чуть только выйдут нормальные книжки по современным версиям языка и немножко оживёт раздел на Stack Overflow, процессы миграции станут более явными. Но вот какими темпами пойдёт эта миграция - пока что предсказать никак нельзя.Это помимо естественного роста за счёт новых пользователей, который будет в любом случае, в том числе- за счёт университетов, в некоторых из которых, в основном, за рубежом, уже начали вести курсы на Julia. Фактически, студенты этих курсов - это те, кто через пару лет будет писать грамотные рецепты на Stack Overflow.
> Единственное, тут есть ещё один фактор, который пока никак
> невозможно учесть: часть из тех, кто сейчас сидит на R и
> постоянно плюётся от его низкой производительности, вынужденный выкручиваться, чтобы
> писать код без циклов, которые в R долгие как неизвестно что,
> с вставками на C++ через Rcpp, то есть фактически работая уже
> на двух языках, а не одном, наверняка при первой же возможности
> сбегут на что-то другое, тоже удобное, но со скоростью и возможностью
> нормально использовать циклы.Возможно. =)
Я изучал R (под задачи типа обработки данных с эксперимента для курсовой) консультируясь у чувака, который профессионально работает с R, он чётко говорил, что писать надо в функциональном стиле. А функциональный стиль требует, чтобы мозги вывихнуты были в другую сторону, не в ту, которую требует императивный стиль. Многим не даётся.
> Это помимо естественного роста за счёт новых пользователей, который будет в любом
> случае, в том числе- за счёт университетов, в некоторых из которых,
> в основном, за рубежом, уже начали вести курсы на Julia. Фактически,
> студенты этих курсов - это те, кто через пару лет будет
> писать грамотные рецепты на Stack Overflow.Если перепишут https://faculty.marshall.usc.edu/gareth-james/ISL/ с R на Julia, то стопроцентов. ;)
> Но R как с 20 на 8 вдруг попал за год это загадка.Чуваки его выучили и натравили на обработку статистики, ну а каким бы он языком для обработки статистики он был если бы себя задвинул куда не светит солнце?! :D
Хорошая новость. Рад, что перл снова на коне
Да как нафиг С оказывается на 1-м месте?? Кто на нём вообще пишет??
Все
#include "trollface.xpm"
я :)
Тут как бы ситуация сейчас, что только на Си и можно писать.
Как пример: микроконтроллеры
Для микроконтроллеров и на C++ хорошо. Даже для Arduino. Для 32-битных тем более.
Я могу больше сказать. С++ для микроконтроллеров с его шаблонами замечетельно, а специализированные шаблоны позволяют здорово оптимизировать код. При этом нет никакой прямой работы с памятью и позволяет одним кодом покрыть целую ленейку продуктов.Но конечно, сейчас придут неосиляторы шаблонов и наминисуют.
> При этом нет никакой прямой работы с памятьюИ когда нам потребуется четко выверенный sequence доступа к периферии ... мы судя по описанию откушаем годного огурца? :)
А чего сказать то хотел? Или просто голодный? Огурцы какието.Я так больше помидорки люблю.
> А чего сказать то хотел? Или просто голодный? Огурцы какието.Я хотел сказать что в низкоуровневых системных вещах убер-абстракции зачастую больше мещают чем помогают. Ну например - чтобы стереть флеху в вон том МК - надо вполне конкретный паттерн доступа к регистру (адресу в памяти) отрисовать. А шаг в сторону - и контроллер флеша залочится до ребута, как защита от сдуревшего софта. Это такая хардварная защита, чтобы микроконтроль при глюках себе фирмварь не снес ненароком, что как бы более чем фатально - unrecoverable.
> Я так больше помидорки люблю.
Нене, там походу будет огурец со всеми этими абстракциями. Я решительно не допираю как сделать "характерный паттерн доступа к памяти" без "доступа к памяти". Это какое-то, простите, совсем уж извращение - и наверное довольно глюкоопасное и зависящее от чертовой тучи малопредсказуемых факторов.
Не надо тут ничего доказывать. Я не предлагал пихать C++ абстракции везде гне не попадя как растоманы пихают свой раст.Ты безусловно прав с флэхой, и я тоже прекрасно в состоянии осознать где абстракция поможет, а где она будет мешать. И не пихаю её всюду. Си без абстракций прекрасен прост и понятен, с этим никто не спорит.
Но есть и другие контроллеры, со сложной логикой, например того-же BOSH, где сложная логика для тяжёлой карьерной техники. И логика эта ещё и отличается в зависимости от региона. Вот там абстракции и шаблоны в помощь. При этом есть аналогичный другой производитель подобных контроллеров (не буду его называть, надеюсь сдохнет скоро) в котором схожая сложная логика, но реализована на си с макросами. Там чёрт ногу сломит, поддерживать этот код один кошмар. Благо удалось убедить начальство больше с ними не связываться в будущих проекта.
> гне не попадя как растоманы пихают свой раст.Вот этим они утомили. Гербалайф какой-то поразвели.
> её всюду. Си без абстракций прекрасен прост и понятен, с этим никто не спорит.
Мне нравится что он предсказуем. И если я делая вот это или вот это, знаю что чип сделает вот это и вот это. И это сравнимо с асмом по уровню предсказуемости - без грубой непортабельности и не особо читаемых простынок.
> Но есть и другие контроллеры, со сложной логикой, например того-же BOSH, где
> сложная логика для тяжёлой карьерной техники.А, ну что-то такое - возможно, возможно. Особенно если там гуй какой на экран или чего еще. Я впрочем предпочту от такого держаться подальше.
> реализована на си с макросами. Там чёрт ногу сломит, поддерживать этот
> код один кошмар. Благо удалось убедить начальство больше с ними не
> связываться в будущих проекта.Ну хызы, я как таковой не особый фанат плюсов. И с поддержкой у плюсов тоже грабли - они большие и сложные, к тому же за годы обрасли разными подвариантами, достаточно разными. Поэтому плюсовики шпрехают каждый на своем субдиалекте. И соответственно когда вопрос встает о том чтобы передать проект - вот тут может случиться полнейшая, абсолютная задница. Я видел как один плюсовик просто урыл проект, понаворотив там для разгона своей эффективности. Он, конечно, разогнал свою эффективность. Но однажды все же задолбался. И на этой планете не оказалось более ни одного человека, готового в принципе иметь дело с этим кодом. Это был эпик фэйл, а того гражданина до сих пор проклинает последними словами толпа народа. Благородный дон хотел конечно как лучше, а вот получилось у него как всегда и даже хуже чем всегда.
А про огурец всё равно не понял аналогию.> не допираю как сделать "характерный паттерн доступа к памяти" без "доступа к памяти"
И правильно. Никак. Так что всё на своих местах.
>И когда нам потребуется четко выверенный sequence доступа к периферииКогда действительно нужен четко выверенный sequence доступа к периферии пишут на асме.
> Когда действительно нужен четко выверенный sequence доступа к периферии пишут на асме.Покорно благодарю, но - нет! На сях можно писать очень предсказуемо, когда между мной и железкой по сути ничего лишнего нет. Как на асме, но - с намного менее мерзотным синтаксисом, куда читаемее, да еще оптимизер глобальные оптимизации и покруче меня смогет если есть где развернуться.
На асме я делаю только то что _принципиально_ не делается на си. Ну там например, си не может адресовать "special registers" которые не отмаплены в память. Для меня загадка почему ARM их такими сделал, если честно. Ну да, там придется мелкий хелпер воткнуть. Но вот такого я предпочитаю абсолютный минимум. Это напрочь непортабельно и читаемость хреновая.
> Покорно благодарю, но - нет! На сях можно писать очень предсказуемо, когдаНе благодари. Я ж не о тебе вещаю. А о реальном мире.
И примеров масса. Половина кодеков писана на асме. Асма полно в libc, какую из реализаций не возими.
Начальная инициализация проца при старте практически всегда писана на асме. Да ее, за редким исключением, по другому не реализовать.
Хош пример для МК - так вот HID USB для АVR-ок тоже реалзовано с использованием асма, где надо стабильное время исполнения и гарантированные тайминги.
> Не благодари. Я ж не о тебе вещаю. А о реальном мире.А мои фирмвари в параллельном измерении чтоли?
> И примеров масса. Половина кодеков писана на асме.Щаззз! У меня видите ли есть такое хобби - алгоритмы нравятся. И вот кодеков у меня есть. И таки писаны они все же на си. С небольшими вставками на асме в критичных местах. С фалбэком на чистом си для случая когда систему команд не знаем совсем. То-есть, пишется референс на чистом си, потом - оптимизится местами, с опциональными, в общем то, вставками, там где это разгоняет алгоритм. Так что на асме писаны не кодеки а только оптимизации.
В последнее время кстати пошла мода оформлять сие simd intrinsic'ами. Сказать что они вот прям 100% си конечно кривовато, но они все же записаны сишным синтаксисом. А в чем пойнт? Оно теоретически несколько портабельнее: запрошенная simd операция в принципе может быть изображена из того что есть на вон той платформе, но и на другой платформе оно тоже прокатит, если там есть из чего это эффективно изобразить. На практике, конечно, это сильно менее портабельно чем нормальный си, т.к. некоторые фичи зело уж специфичны и не имеют потребных аналогов на других платформах.
> Асма полно в libc, какую из реализаций не возими.
В musl вот прямо завалов асма не видел. Меня из него правда в основном работа с временем интересовала - и там совершенно точно никакого асма не было.
> Начальная инициализация проца при старте практически всегда писана на асме.
Я таки бутанул cortex-M гольным си. Без стартапа даже, лол. Мне было интересно проверить насколько арм гонит что можно одними сями. Вообще, не врут. Но есть нюансы :). Так что пару мелких кусочков все же логично юзать, как минимум CPSIE I и CPSID I (глобальный irq en/dis).
> Да ее, за редким исключением, по другому не реализовать.
Cortex M вполне себе втапливают с места в карьер одними сями. Если без стартапа, в начальный момент arena не соответствует стандарту, но с этим можно жить и после пары нехитрых операций окружение приходит в соответствие. Так что си может быть и startup-ом для си. Забавно.
> Хош пример для МК - так вот HID USB для АVR-ок тоже реалзовано с использованием асма,
> где надо стабильное время исполнения и гарантированные тайминги.Это тот софтварный юсб? Ну да, забавный извратик и masterpiece. Но накладывает сильно дофига ограничений, и вообще, сейчас нормальный хардварный usb подпертый буфером и dma не есть экзотика, чтобы так дико изгалаться.
А так я на сях довольно крутые тайминги степперу без проблем отрисовал. Конечно не 1.5 мегабита как в юсб, но вообще довольно прилично. И между нами, STM32 кроет AVR по фичам как бык овцу. Даже если забыть про USB. И я как-то не очень видел желающих его на асме сильно прогать. Хоть теоретически так и можно.
> Покорно благодарю, но - нет! На сях можно писать очень предсказуемо, когда
> между мной и железкой по сути ничего лишнего нет. Как на
> асме, но - с намного менее мерзотным синтаксисом, куда читаемее, да
> еще оптимизер глобальные оптимизации
> очень предсказуемо
> оптимизер глобальные оптимизации
>> смотрим для наглядности еще регулярные матюки Линуса в LKMLОптимизатор gcc, с трансляцией в несколько промежуточных кодов, построением графов codeflow и прочими не только крутыми, но довольно неудобными (и специфичными) для понимания с наскока технологиями, значит "очень предсказуем"...
Не устаю удивляться опеннету - столько анонимных гениев можно встретить только тут ...
> Оптимизатор gcc, с трансляцией в несколько промежуточных кодов, построением графов codeflow
> и прочими не только крутыми, но довольно неудобными (и специфичными) для
> понимания с наскока технологиями, значит "очень предсказуем"...HW REGS в памяти нормальные люди, видите ли, допирают указать как volatile и с правильными типами :). И дальше графы графами, а компилер обязан обеспечить то что попросили. На уровне стандартов уже. И таки это и работает. Достаточно предсказуемо для того чтобы вон тот адов легион прогеров с cortex-m делали вот так - и это прекрасно для них работает, btw. Но, конечно, можно сказать что они все раки, и только вы тут один такой вумный.
> Не устаю удивляться опеннету - столько анонимных гениев можно встретить только тут
Блин, я тоже. Вот например тезка пытается лечить что эмбедеры с cortex-m - лохи педальные, как я понимаю :)
> И дальше графы графами, а компилер
> обязан обеспечить то что попросили. На уровне стандартов уже. И таки это и работает.Так-так, что там было в последнем выпуске gcc?
>> По сравнению с версией GCC 10.1 в GCC 10.2 отмечено 94 исправления, в основном связанных с устранением регрессивных изменений.Но главное верить в предсказуемость!
> Достаточно предсказуемо для того чтобы вон тот адов легион прогеров с cortex-m делали вот так - и это прекрасно для них работает, btw. Но, конечно, можно сказать что они все раки, и только вы тут один такой вумный.
Что-то я не видел тут отписавшегося легиона прогеров. Только одного.
Продемонстрировавшего понимание процесса на уровне "если нажать кнопку, то с потолка упадет банан! Всегда падал!" и в качестве мощного аргУмента приписавшего мне что-то абсолютно левое, лол.
Или имя вам - легион?Кстати, проигнорировав отсылочку на LKML
https://lkml.org/lkml/2017/3/2/644
> From Linus Torvalds <>
> I can't take this compiler braindamage any more, so I just decided to
> remove the ____ilog2_NaN checks, and return 0 for any constant value < 2.
> It's commit 474c90156c8d ("give up on gcc ilog2() constantoptimizations") in my tree
https://lkml.org/lkml/2014/7/24/584
> From Linus Torvalds <>
> Ok, so I'm looking at the code generation and your compiler is pure and utter *shit*.
> Adding Jakub to the cc, because gcc-4.9.0 seems to be terminally broken.
> Lookie here, your compiler does some absolutely insane things with the
> spilling, including spilling a *constant*. For chrissake, that
> compiler shouldn't have been allowed to graduate from kindergarten.Вы хотели завуалированно сообщить нам, что все там раки и только вы один вумный?
> Блин, я тоже. Вот например тезка пытается лечить что эмбедеры с cortex-m
> - лохи педальные, как я понимаю :)А куда деваться, если тезка продолжает настойчиво демонстрировать педальность? :)
> Для микроконтроллеров и на C++ хорошо.Без RTTI.
> Даже для Arduino.
Да, и без STL.
Только можно ли это назвать C++?
Да, можно.
И зачем им обмазываться? Ради того, чтобы написать a->foo() вместо foo(a)?
Чего сказать то хотел? Можно и так и сяк. В чём проблема то?Как минимум шаблоны куда проще отлаживать чем макросы.
> Как минимум шаблоны куда проще отлаживать чем макросы.У макросов есть жесточайший плюс: при правильном применении они вообще совсем не генерят код. Они не код как таковые сами по себе.
Кстати растовики вроде это дело малость прочухали. И на мой вкус это им дает пару очков форы относительно serial.begin'щиков, которых за нормальных эмбедеров вообще никто толком не считает.
А я не говорил что макросы вселенское зло. При правильном использовании всё только в пользу. Я только сказал что сложные макросы отлаживать сложнее чем шаблоны.И я не говорил что всё надо обмазывать абстракцией на плюсах. Есть места где это излишнее, есть где наоборот даёт более короткий и логичный код. Всего должно быть в меру.
А посадить макаку так ей любой язык дай, там такой ужас выйдет что ой...
> А я не говорил что макросы вселенское зло. При правильном использовании всё
> только в пользу. Я только сказал что сложные макросы отлаживать сложнее чем шаблоны.За сложные <макросы, функции, код, whatever> в эмбедовке имхо стоило бы превентивно расстреливать киловаттными промышленными лазерами, без суда и следствия. Потому что сложный код ведет к куче багов. Туда же и всякие высококонцептуальные выкрутасы, понимаемые парой двуногих на планете. ИМХО в этих вещах код должен быть таким чтобы в нем было все понятно и логично, без возможности понять это как-то не так. Всякие плюсы и шаблоны в этом смысле звучат довольно подозрительно уже.
> места где это излишнее, есть где наоборот даёт более короткий и
> логичный код. Всего должно быть в меру.Размер, скорость и логичность кода ... еще и сильно зависит от выбранных оптимизаций. У меня например unused функции аннулируются до нулевого размера. А у кого-то это и дофига кода сверху будет.
> А посадить макаку так ей любой язык дай, там такой ужас выйдет что ой...
Однозначно. И как по мне - так я даже с си порой на грани балансирую в плане понимания что будет сделано по факту и какие там worst case. И на мой вкус, если у меня фирмвара стала выглядеть так что мне захотелось плюсы - я что-то сделал здорово не так еще намного раньше. При принятии решений.
> Да как нафиг С оказывается на 1-м месте?? Кто на нём вообще пишет??Ну я. А на чем еще я должен писать фирмварь для микроконтроллера по твоему? Там вон был какой-то чудак с растом, но пусть он как-нибудь сам башкой отвечает за нечто стабильно переколбашиваемое раз в пару месяцев. И если его однажды малость линчуют за то что его гадость кого-то убила - это будет на его совести. А мне нравится максимально простой и предсказуемый код там где он должен таким быть - последняя линия обороны, реалтайм, опасные процессы и т.п. ошибок не прощают, Тойота проверяла.
Т.е. чуваки из тойоты накалякаляи на Сях реально убийственный код.
А ты из-за этого не будеш писать на расте. Ну ок...Л - логика.
> Т.е. чуваки из тойоты накалякаляи на Сях реально убийственный код.
> А ты из-за этого не будеш писать на расте. Ну ок...А там надо просто посмотреть что было с тем кодом и в каких условиях. И что раст имеет предложить по этому поводу. А был там видите ли stack overflow. И ошибка оценки worst case потребления памяти.
Трабл в том что
1) Раст в той конфигурации тоже точно так же страдает от переполнения стэка. Он изначально вообще не делан с прицелом на платформы без mmu походу.
2) Заткнуть stack overflow в системе без mmu на сях к тому же еще и зело проще чем на расте, что самое интересное. Чувак пытавшийся это на расте закончил с каким-то долбанутым кастомным экспериментальным линкером. Что явно не продакшн-риди решение. В гцц с этим справляется стоковая версия линкера из реп моего дистро.
3) Как вообще в расте дела с пониманием worst case использования stack и RAM?
4) В итоге все что раст имеет предложить в этом случае - много нового клевого геморроя и пока еще неизвестных науке способов убиения юзерей.> Л - логика.
F - фанатики.
>Он изначально вообще не делан с прицелом на платформы без mmu походу.с чего ты это взял ? Тараканы нашептали ?
>Заткнуть stack overflow в системе без mmu на сях к тому же еще и зело проще чем на расте,опять бла-бла-бла.
>Как вообще в расте дела с пониманием worst case использования stack и RAM?Как и везде. Зависит от платформы(на каком камне это будет крутиться).
>В итоге все что раст имеет предложить в этом случаеВ итоге мы имеем случай, когда некий чувак начинает рассказывать о том в чем нифига не понимает и особо не пытается понять.
> с чего ты это взял ? Тараканы нашептали ?Не тараканы а чувак пытавшийся это на расте. Раст видите ли сам по себе - вообще никак не детектит участь своих переменных, если стэк отрос достаточно чтобы въехать в их регион.
Поэтому - только подумайте, если хардварный paging не дал в тыкву за это дело на уровне маркирования регионов (в микроконтроллерах нет paging!) - с растишкой случается все то же самое что и с сями :D. Прога отращивает стэк достаточно для того чтобы тот накрыл переменные, состояние проги отъезжает к хренам собачьим, получается условная Тойота, где юзер вроде бы и сбросил газ, но почему-то оно пошло в разгон - переменные которые это трекали вынесло к хренам стэком, там мусор и прога живет своей жизнью.
> опять бла-бла-бла.
См. внизу более предметно.
>>Как вообще в расте дела с пониманием worst case использования stack и RAM?
> Как и везде.Такой ответ не котируется. Везде, видите ли, сильно по разному. Я вот например умею убеждать GCC показывать мне stack usage и размер области переменных, соотнося сие с размером региона.
Это правда в теории. Тойота делала хитрее. Они RTOS навернули. C тредами. И лоханулись в оценке worst case. Но это было бы полбеды - упыри сделали сцуко рекурсию и таки это суперкомбо смогло подстрелить им пятку. Хоть MISRA'вские правила и напрямую запрещают такие выходки. Но эти умники видимо всерьез нацелились достойно ответить ариану и все же смогли наесть и это.
> Зависит от платформы(на каком камне это будет крутиться).
А есть какая-то фундаментальная разница? Нет, бывают особо странные извраты где стэк растет вверх, но это малость экзотика.
> В итоге мы имеем случай, когда некий чувак начинает рассказывать о том
> в чем нифига не понимает и особо не пытается понять.Кушай, не обляпайся:
Общее описание проблемы: https://embeddedgurus.com/state-space/tag/arm-cortex-m/
Как это растаман увидел: https://blog.japaric.io/stack-overflow-protection/У меня на сях как-то поэстетичнее вышло - и я даже вроде обставил тех эмбедедгур, запилив "золотой резерв" на hardfault handler, так что ему стэк достается, даже если стэк и закончился, cortex M так умеет, довольно нестандартная магия, но прикольно.
> 2) Заткнуть stack overflow в системе без mmu на сях к тому
> же еще и зело проще чем на расте, что самое интересное.Ну раз проще _на сях_, то покажи это самое "продакшен-риди" с M$овским компилятором. Или с tcc. Или интел. Нельзя на tcc и в МС? Ну значит, в той же "логике" - не умеет сишка в это на самом деле.
> Чувак пытавшийся это на расте закончил с каким-то долбанутым кастомным экспериментальным линкером. Что явно не продакшн-риди решение. В гцц с этим справляется стоковая версия линкера из реп моего дистро.
Проделай этот же кунстштюк версией gcc 2.0, а то стоковая версия разрабатывается уже более 30 лет и все эти витеватые изложения в разных вариантах "раз инфраструктуру ЯП за 5 лет не смогли подтянуть на такой же уровень - значит ЯП несистемный!Вот!" как ... сбоку бантик.
> 4) В итоге все что раст имеет предложить в этом случае -
> много нового клевого геморроя и пока еще неизвестных науке способов убиения юзерей.В итоге все, что критиканы на опеннете умеют - твердить на разные лады "это сделано не как в си! Это выглядит не как си! И вообще, ЯП - полная херня, потому что нет оттестированной и вылизанной 30 годами инфраструктуры!"
> F - фанатики.С закостенелыми мозгами.
> Ну раз проще _на сях_, то покажи это самое "продакшен-риди" с M$овским компилятором.Я им не пользуюсь. Да и не умеет он под Cortex M вроде, для начала. И потому продакшн им не соберется "хоть там что".
> Или с tcc.
А он тоже под cortex M не умеет вроде, равно как и layout фирмвари им скомпоновать малореально вообще. У него прикольный парсер (даже довольно суровые упражнения на C99 сжирает нормально) но вот линкинг у него недостаточно крут для компоновки образа фирмвари. Даже если б он умел в набор команд cortex M (он вроде сие не умеет, для начала).
> Или интел.
Скомпилить им фирмварь для cortex M? Это был бы номер!
> Нельзя на tcc и в МС? Ну значит, в той же "логике" - не умеет сишка
> в это на самом деле.В упомянутом случае это фирмваря была - и там нравится, не нравится, а немного за пределы стандарта вылезти придется. Однако с растом вылезти за пределы стандарта малореально - стандарта для начала нет XD XD XD.
> Проделай этот же кунстштюк версией gcc 2.0,
А чего не Borland C? А то у меня видите ли фирмвара - здесь и сейчас. И gcc у меня таки при этом 9-й. И оно для начала C99 - gcc 2.0 вообще его умел в потребном виде? Ну или он не проходит базовые проверки пререквизитов. Tcc кстати почти весь код так то парсит, но сгенерить cortex M код и тем более скомпоновать вменяемо образ фирмвари он чисто технически не умеет, а сферический ELF в вакууме с хзкаким layout - все же еще не фирмварь.
> а то стоковая версия разрабатывается уже более 30 лет и все эти витеватые изложения
> в разных вариантах "раз инфраструктуру ЯП за 5 лет не смогли подтянуть на
> такой же уровень - значит ЯП несистемный!Вот!" как ... сбоку бантик.Ну как, если яп позволяет системные фортели, он системный. Если не позволяет - не системный. Другой то реализации, которая бы что-то такое умела штатно, у растишки все-равно нет. Или вы намекаете что надо подождать пяток лет до того как пиндеть как все системно? :)
> лады "это сделано не как в си! Это выглядит не как
> си! И вообще, ЯП - полная херня, потому что нет оттестированной
> и вылизанной 30 годами инфраструктуры!"Ну вообще, на мой вкус, memcpy у того растамана и правда по уродски выглядит. Левых закорючек в разы больше чем у сишника, гребаный стыд :)). На си и так за это бочки периодически катят. А тут блин "догнали и перегнали".
> С закостенелыми мозгами.
Да вообще странные люди - не понимают зачем все бросать и писать на таком угребище, особенно когда из дельных проектов только наглый спам о том как это круто.
Мы, кстати, на Go пишем некоторые firmware (но не для микроконтроллеров) :)
Clojure... Clojure где... :(
В треугольной бороде.
Рич Хикки стал маргиналом
Там же, где и остальные модномолодежные штучки прошедших лет.Стоит признать, что для такой откровенно наколенной поделки, она довольно долго продержалась на плаву. Умело таки лохматый юнцам лапши понавешал.
> популярности на GitHub c активностью обсуждений на Stack OverflowНиочем. Ребята, помимо сбора статистики её надо ещё интерпретировать. Не? Не учились?
/me читает жёлтый заголовокВорвался просто. Ему уже лет огого и хайп на каждом углу генерируют лет 5 по меньшей мере, только и слышно. Посмотрел какие-то лекции по русту, так лектор там чёт вообще некомпетентный рустофанатик, кто его только на работу взял? Потерял пару часов времени на эту хрень.
> Ему уже лет огогоТочнее ему шесть лет. В 2014 был первый релиз.
> хайп на каждом углу генерируют лет 5 по меньшей мере
И хайп того же возраста.
>> Ему уже лет огого
> Точнее ему шесть лет. В 2014 был первый релиз.
>> хайп на каждом углу генерируют лет 5 по меньшей мере
> И хайп того же возраста.Я только помню, что ему лет примерно как дотнету, там пару лет разницы. И я лично писал под дотнет ещё в 2005, так что это было очень и очень давно.
>>> Ему уже лет огого
>> Точнее ему шесть лет. В 2014 был первый релиз.
>>> хайп на каждом углу генерируют лет 5 по меньшей мере
>> И хайп того же возраста.
> Я только помню, что ему лет примерно как дотнету, там пару лет
> разницы. И я лично писал под дотнет ещё в 2005, так
> что это было очень и очень давно.Истинно говорю тебе, первый релиз был в 2014 году. Если твоя память подсказывает тебе иначе, то это с памятью твоей что-то.
Истину глаголешь странник! Но только вот громкие обсуждения Раста начались ещё в начале 10-х годов. Я хорошо помню как Сообщество тогда обсуждало этот язык. Тогда ещё версия языка была в нуль, от коммита к комиту появлялиь и исчезали зарезервированные, ключевые слова языка, был ещё среди разработчиков Грейдон Хоар. Выход первой версии языка Раст не воспринимался как эпохальное событие, просто преодолели очередную ступеньку на лестнице.
> Истину глаголешь странник! Но только вот громкие обсуждения Раста начались ещё в
> начале 10-х годов. Я хорошо помню как Сообщество тогда обсуждало этот
> язык.Мозилла взяла проект раста под своё крыло в 2008 году, если мне память не изменяет. Но было ли то, что было тогда, языком программирования -- сложно сказать. Это была заготовка, может быть это можно назвать PoC или MVP, но то что было тогда, и то что зарелизили в 2014 году -- это очень разные вещи.
Обсуждения велись -- но в рамках сообщества. Если есть какая-то секта, которая целыми днями в своём закутке восторженно обсуждает вовсю идущее нашествие инопланетян, то это не хайп, это секта. Хайп, это когда каждый день в топе HN появляется как минимум одна новость с растом в заголовке.
Rust 1.0 зарелизился в мае 2015: https://blog.rust-lang.org/2015/05/15/Rust-1.0.html
> Rust 1.0 зарелизился в мае 2015: https://blog.rust-lang.org/2015/05/15/Rust-1.0.htmlСтранно. Это сбивает последовательность событий моей биографии: rust вошёл в мою жизнь раньше психологии, а психология вошла в 2015. Видимо с моей памятью тоже не всё в порядке.
А, хотя не, возможно. Май 2015, а 1 сентября было только в сентябре. Да, точно, я готовился к ЕГЭ по биологии и развлекался с rust'ом. Фух. Модификаций прошлого не было, а я уж испугался.
Это не рейтинг популярных. Думать то кто будет?1) "популярности на GitHub"
1.1. Посчитали количество hello world?
1.2. На GitHub свет клином не сошёлся. Куча проекто существовало, существует и будет существовать в других местах. Туева хуча людей вообще пользуют собственный хостинг.
2) активностью обсуждений на Stack Overflow.
2.1. Вообще антипоказатель. По C/C++ уже всё разжёвано и пережевано. Вбиваешь в любой поисковик ошибку или проблему и тете миллион решений, нет смысла обсуждать. Что можно обсуждать по Си? Там и так всё понятно, чётко и логично. Вменяемый стандарт. Что там обсуждать? C++ так обсуждают новые стандарты, да и то редко. Потому что документация нормальная и языком занимаются специалисты. Открыл стандарт и в 90% там все ответы.
2.2. А что обсуждают? то в чем чёрт ногу сломит. Конечно Rust туда попадёт, потому что без плясок с бубном там ничего не сделать. Вторая половина вопросов о том "ой как это так получилось? я вроде не использовал unsafe, всё по растовски а у меня апликуха сдохла"
Трэш это всё.
А вот и обиженные подтянулись :) Минусы ставить :)
> А вот и обиженные подтянулись :) Минусы ставить :)Я тоже поставил. И если тебя это так задевает, то я объясню почему. Ты говоришь "они меряют не популярность", но ты не предпринимаешь никаких попыток определить популярность. Я уж молчу про операциональное определение, дал бы хоть какое-нибудь. Но ты не дал определения, ты его держишь при себе, всё что ты тут написал, можно выразить примерно так "я не знаю, что такое X, но X -- это не Y". Откуда ты знаешь, что X -- это не Y, если ты не знаешь, что такое X?
Есть и ещё одна причина, никто не заявляет, что они померяли популярность, они померяли _рейтинг_ популярности. Если грубо, то рейтинг X -- это числовая величина, которая коррелирует с выраженностью X. Вот и доказывай теперь, что их рейтинг не коррелирует с популярностью, не зная что такое популярность.
> Вменяемый стандарт. Что там обсуждать?Решил тут полистать вменяемый стандарт. Открыл для себя новый термин "implementation-defined". Это помимо "undefined behavior". Насчитал 70 включений. А так да, одна всеняемость за другой.
интересно кто минусы ставит? ) модератор ))
действительно, что обсуждать си и с++, гугл в помощь как говорится ) да и достаточно мануала по либе. в самих яп уже давным давно все отпалировано.
Автор исправь список. Что это за дубль 7?
см. ссылку источника
Да там вообще лажа а не отчет. две 5, две 7, две 11, две 15гед 6, 8, 12, 16?
Кто-то в серьёз ещё это воспринимает? до 20-ти считать не научились, но уже отчёты клепаем и составляем рейтинг языков программирования.
Растоманы бы не позорились такое низкосортное выставлять.
А, точно, они для этого 4 цифры и выкинули, чтобы раст в 20 попал. А я то подумал уже реально.
Julia поднялась до 36-го места
нехило так Scratch поднялся, походу за ним будущее, пошел его учить
А бородатые хардкор программеры пишут на common lisp, и понятия не имеют о каких то рейтингах.
В .опу красную обезъяну, в .опу раст.
>Индекс популярности TIOBE строит свои доводы на основе анализа статистики поисковых запросовТак что не удивительно, что буква 'C', слова "иди", "ржавчина", "питон" и "рубин" стабильно находятся в двадцатке.
ТИОБЕ не дураки они обращают своё внимание на контекст и смысл слов. Конкретно символ "С" и слово go никто не парсит.
Они тупо вбивают "<язык> programming" в поисковик и берут количество найденных совпадений.
Проблема в том, что если вбить "Ruby programming" в тот же Гугл, то он выведет, что найдено 748,000 совпадений. Если пролистать эти результаты до упора - получится 20 страниц, по 10 результатов на каждой. Итого 200 результатов. Остальные - Гугл по умолчанию не показывает т.к. они нерелевантные и с какого-то момента превращаются в мусор.
И самый главный вопрос - как количество найденных Гуглом страничек с фразой "<язык> programming" - коррелирует с популярностью этого языка?
> вытеснение из двадцатки языка Haskellэто странно. самый толковый ЯП для прокачки навыков программиста.
список, конечно, ахтунговый. Кроме C, C++ и Perl ЯП по сути больше и нет
+Если не нужна системщина Хакель хороший выбор.
По сравнению с динамикой нарочито примитивного Go динамика переусложненного Rust'а не выглядит впечаляющей.P.S. Переименуйте уже opennet в клуб фанатов Раста.
Почитал MISRA, там говорят - сделай все свои динамические аллокации\деаллокации\открывания файлов во время инициализации, а потом не лезь туда. То есть никаких попыток руками следить за памятью - система освободит память и файлы от гнёта программы после ее успешного завершения. В виду отсутствия free отваливаются баги use-after-free и double-free (а больше никакие баги даже безопасный Rust не предотвращает, принуждение использовать мьютексы в потоковом коде я не считаю важной фичей). Вопрос - зачем мне теперь Rust? И еще, кстати - как в Си (не С++) кросс-платформенно получить время суток с точностью до миллисекунды или лучше до наносекунды? В С++11 это есть в chrono
> И еще, кстати - как в Си (не С++) кросс-платформенно получить время
> суток с точностью до миллисекунды или лучше до наносекунды? В С++11
> это есть в chronoначиная с C11 есть timespec_get() аналог gettimeofday().
>> И еще, кстати - как в Си (не С++) кросс-платформенно получить время
>> суток с точностью до миллисекунды или лучше до наносекунды? В С++11
>> это есть в chrono
> начиная с C11 есть timespec_get() аналог gettimeofday().Сорри, не дописал - аналог, но с точностью как у clock_gettime().
Спасибо! Вот это я понимаю, полезные комментарии.
> Почитал MISRA,Если интересует hi-rel и все такое, еще очень рекомендуется Embedded C coding standard читануть, by Michael Barr (в отличие от мисры легально и халявно качается как пдфка с их сайта). Там есть довольно много дельных мыслей на тему превентивной обработки багов дустом. Некоторые из них вероятно прокатят даже и не для сей.
>как в Си (не С++)Можно и покороче как в "чистом Си".
Когда же наконец придумают какой-нибудь GoldOrthodox рейтинг? Куда патриарх смотрит?
Рейтинг показал, что молодеж активно дрючиться с JavaScript. Все ясно. Хорошо молодцы. А рейтинги так не делюат. Рейтинги нужно делать по какому-то тематическому срезу: ядра операционных систем, графические программы, программы для редактирования текста, утилиты и т.д. потому как правильно кто-то заметил, что обилие Hello, world на JavaScript это еще не программное обеспечение, а просто попытки разных ребят начать рабоать. Потом еще такая мысль, что многие фреймворки например UI просто тянут за собой JavaScript с всякими там WebPack и т.д. то есть репы просто напихано CSS и считают его JavaScritp-ом.
как можно сравнивать ?
4 PHP
5 C++
7 CSS
Тоже самое утверждать что молоток лучше напильника.
Я вам так скажу, не так давно годах так в 80х, вся детвора грезила китайской жвачкой и кокаколой в замен нашего полезного кваса, молока и морса. ВОт тоже самое, наблюдаю сейчас только по отношению к модным ЯП. и вот как от всех этих жвачек и кокакол, такие же последствия ожидают сообщество инженеров программистов.
Я вам так скажу, не так давно годах так в 1900-х, при Николае II-ом. Среди крестьян была в моде городская одежда: фуражка, тужурка и сапоги. И это всё взамен родных лаптей, портков, шапок. В праздники вся волость одевалась в городское. Родная крестьянская одёжа удобней и практичней чем городская.Прошло 100 лет, ничего не изменилось.
К Rust нельзя оставаться равнодушным.