Jump to content

    
Sign in to follow this  
Максим Лапшин

Rust вместо C

Recommended Posts

3 минуты назад, Eddy_Em сказал:

Чушь-то какая! Питон - это наркоманский синтаксис, без укурки никак не разберешься!

Голословные заявления уже поднадоели. Давайте примеры наркоманского синтаксиса.

4 минуты назад, Eddy_Em сказал:

Писал на этом говне скрипты для генерации линз

Ну, покажите хоть ваш говнокод? Вместе посмеёмся.

Share this post


Link to post
Share on other sites
15 minutes ago, AlexandrY said:

а понять с какими вызовами он борется.

Ключевой момент. А то в один котел полетели кони, люди, мухи, котлеты. У каждого языка есть свои ниши применения, и в зависимости от этих ниш язык надо выбирать, а не пытаться сделать универсальную бочкозатычку.

Share this post


Link to post
Share on other sites
1 час назад, AlexandrY сказал:

Rust  между тем оснащен новыми средствами "стабилизации" способными фиксировать снимок либ. 
В IDE для C-и до такого еще не додумались.  
Библиотечная лава будет только расти. От этого никому никуда не деться.

...

Багаж библиотек для C и С++ в основной массе морально устарел.
Смотрел недавно что может пригодится из Boost-а. Одна труха. 

Согласна с вашей оценкой. Действительно "стабилизация" в разумных рамках была бы крайне желательной.

К слову сказать, приходилось мне в скриптах своего сайта/форума ковыряться, написанных на  PHP (не мной). Здесь между PHP и C/C++ или Rust'ом я прямой аналогии не провожу, т.к. PHP - интерпретатор, однако поразительно то, как много в его стандарте полезных функций! Причем, где-то 80% из них вполне могли вы прижиться с C/C++ прямо  с тем же синтаксисом. Т.е. здесь даже из пальца не надо ничего высасывать, а бери да портируй. Причем, даже описание не надо сочинять, т.к. оно уже есть. Я уж обзавидовалась. А речь веду к тому, что прежде чем смотреть по сторонам - на какой бы другой язык лучше мигрировать, было куда более целесообразно благоустроить родной C/C++ :), дополнив его стандарт функционально.

 

Вот и Fortran совершенно незаслуженно нами забыт, хотя он тоже из рода процессорно-эффективных языков. Однако здесь уже стандартизация сыграла с ним злую шутку - не позволила ему вовремя измениться навстречу новым запросам (и в частности со стороны микроконтроллеров). А потому было проще изобрести новый язык C и стандартизовать его с нуля, чем бороться с фортановским стандартом. Это наводит на мысль, что Rust и подобные ему новые языки "подсиживают" C/C++ не просто ради конкуренции, а более потому, что C/C++ "застоялся", а его новые стандарты носят скорее косметический характер, не вполне отвечая современным требованиям. Кстати, Fortran в современном варианте - конфетка! Но если я рекомендую его для программирования MCU/MPU, то надо мной станут смеяться :).

 

1 час назад, AlexandrY сказал:

Буквально сейчас я обновил либы фреймворка  для стабильнейшей RTOS ThreadX и у меня отвалился USB стек. 

Интересно. У меня даже есть лицензионный ThreadX (старой версии), но я думала, что он уже вышел из употребления, прекратив развиваться. Однако этот вопрос уже выходит за пределы этой темы, а потому (если позволите) я выясню у вас подробности в личной переписке.

Share this post


Link to post
Share on other sites
On 1/25/2020 at 4:20 PM, Максим Лапшин said:

Вводная....

Буду не популярен, по поводу использования языков. У мну языков дцать за плечами. Изучать приходиться по мере их юзанья в боевых условиях. Питон не довелось, но исходники просматривал по диогоналям. Раст наверное ещё меньше. Т.е. не видел, но осуждаю :) Ну а если серьёзно - то инструментарий вторичен. Первична задача, анализ и и нахождения оптимального способа решения.

Это типо вводная...

А вот про не популярность:
1) Когда разработчик один - то всё что тут звучало выше - 200% в ту или иную сторону - но в целом думаю общий вектор более-менее близок к истине. Имхо - да, надо понять и простить тьху проникнуться духом того или иного языка , сильные и слабые стороны и т.д. и т.п.. И исходя из этого применять этот молоток...это собственно всё понятно..и не америка в бинокль первооткрывателя...
2) А вот когда разработчиков более чем 3-5 то всё...тут уже сливай масло. Язык вообще фиолетово. Ну скажем так - то что сейчас вижу в конторах кто пилет около бюджетное бабло в разработке или комерсы - пофигу, все(!) пишут на ассемблере. Везде отсутствует анализ, декомпозиция задачи, выбор инструментария... Стандартная архитектуры программерской фирмы - кучка смотрителей за кодом, и у каждого свой личный велосипед с овальными колёсами..но свой любимый...

 

В своё время даже прогнал анализ через свою группу разработки - какой должна быть программерская фирма. Вы не поверите - максимум человек 50 вместе с бухгалтерами и уборщиками. И такая контора моэет писать всё что угодно с высоким какчеством в разумные сроки. Хоть компиляторы, хоть оси, хоть прочий софт...

 

как то так

(круглый)

 

Share this post


Link to post
Share on other sites
1 час назад, kolobok0 сказал:

В своё время даже прогнал анализ через свою группу разработки - какой должна быть программерская фирма. Вы не поверите - максимум человек 50 вместе с бухгалтерами и уборщиками. И такая контора моэет писать всё что угодно с высоким какчеством в разумные сроки.

Вот эта групповуха и всему виной - рассадник индуизма :). Не даром говорят - один человек разумен, а толпа неразумна. Т.е. при кучковании исполнителей приоритеты неизбежно меняются - процессоры и всё с ними связанное отходят на второй план (хорошо, если еще не на третий), а на первый план выходит внутриколлективная социалка взаимоотношений между отдельными особями :).

Share this post


Link to post
Share on other sites
1 hour ago, Xenia said:

Вот и Fortran совершенно незаслуженно нами забыт, хотя он тоже из рода процессорно-эффективных языков.

Fortran очень любили математики в до-Mathworks/Wolfram'овское время. Это к вопросу о нишевости. И почему никто не вспоминает Ada?!

Share this post


Link to post
Share on other sites
31 минуту назад, gosha-z сказал:

Fortran очень любили математики в до-Mathworks/Wolfram'овское время. Это к вопросу о нишевости. И почему никто не вспоминает Ada?!

Математики Fortran и сейчас любят :). Тогда как Ada и PL/1 умерли от непомерной сложности, которую заложили в их стандарт. Похоже, что и C++ идет той же дорогой - смотрю на новый стандарт и уже ничего не понимаю :) из того, что в него ввели. А вот Algol пришелся бы весьма в пору, т.к. в нем заунывных сложностей немного. Однако во всех этих языках прошлого следовало бы добавить возможность заводить переменные по четко заданному адресу памяти, чтобы их можно было привязать к регистрам периферии. Ну и еще дополнить битовыми примитивами типа поразрядного сдвига и булевых операций (если их доселе в этом языке не было). Хотя последнее можно было бы достичь, не изменяя язык, а лишь вводя библиотечные функции для этих операций.

Share this post


Link to post
Share on other sites
3 minutes ago, Xenia said:

Тогда как Ada и PL/1 умерли от непомерной сложности, которую заложили в их стандарт.

PL/1 я как-то упустил из виду, ибо о нем с прошлого века не вспоминал. А вот про Ada - это зря, на ней много чего летающего (подчиняющегося DO-178 и NASAвским аналогам) писано...

Share this post


Link to post
Share on other sites
5 hours ago, Xenia said:

Тогда как Ada и PL/1 умерли

Насколько я знаю, Ada живёт и здравствует в т.н. safety-critical системах:blum: Правда, более этого я уже ничего не знаю...

Share this post


Link to post
Share on other sites
On 1/25/2020 at 9:20 PM, Максим Лапшин said:

Если интересно — могу поделиться опытом нашей разработки под stm32

Ну и где же...? Ждём. Повторяю вторично.

Share this post


Link to post
Share on other sites
15 hours ago, Xenia said:

Интересно. У меня даже есть лицензионный ThreadX (старой версии), но я думала, что он уже вышел из употребления, прекратив развиваться. 

ThreadX живее всех живых. Я уже замучился постоянно адаптировать их апгрейды каждый квартал.
Это конечно не абгрейды того маленького шедулера, который можно найти на FTP, а всего массива middleware полагающегося к настоящей RTOS.  

C USB к счастью все разрешилось. Дело было в том, что IAR как-то некорректно соединил старые объектники с новыми сорсами.
После удаления всех объектников и полной перекомпиляции все пошло. 

Но удивительное дело, IAR если в проекте ничего не менять всегда создает один и тот же бинарник бит в бит (ну с определенными установками проекта, конечно). 
Но стоит  поменять место рабочего каталога с проектом ( по сути поменять только имя корневого каталога проекта) как создается совершенно другой бинарник и даже другого размера!
В моем случае на 30 байт при общем размере в 1,5 мегабайта.

Вот вам и проблема стабильности.   
Хотел бы я посмотреть как Rust в таких случаях делает. Он же либы тащит откуда-то из инета постоянно. 
Где они их там хостят, кто за ними следит, как проверяется их аутентичность?  Все как-то помалкивают. 

Share this post


Link to post
Share on other sites
В 26.01.2020 в 11:38, Eddy_Em сказал:

Питон для вендузятников придумали, т.к. у них нормальной командной строки нет. Вот и приходится бедолагам вместо баш-скриптов портянки на наркоманском питоне ваять.

Товарищ опять в угаре, наверно принял что-нибудь...  Зачем виндузятникам командная строка? Ну вот зачем, для особо одаренных есть cmd файлы, если чего-то подставить в качестве параметра нужно. Ну а то, что пытон для винды придуман - это ВАААЩЕ!:crazy:

1 час назад, AlexandrY сказал:

Но удивительное дело, IAR если в проекте ничего не менять всегда создает один и тот же бинарник бит в бит (ну с определенными установками проекта, конечно). 
Но стоит  поменять место рабочего каталога с проектом

Все закономерно, наверно используете дебаг выхлопы с указанием строки ошибки (как это делают в lwip), поэтому и размер разный, гляньте в бинарник и если там есть пути, то все ясно...

1 час назад, AlexandrY сказал:

Хотел бы я посмотреть как Rust в таких случаях делает. Он же либы тащит откуда-то из инета постоянно. 
Где они их там хостят, кто за ними следит, как проверяется их аутентичность?

Это как? Я делаю прогу, а либы откуда-то тянутся, кто-то в них чего-то меняет, я об этом не знаю, в результате в какой-то момент прога встает колом, и возможно не из-за меня... Надеюсь, их скачать-то можно в проект, если нет - то это вообще атас...

15 часов назад, Xenia сказал:

Однако во всех этих языках прошлого следовало бы добавить возможность заводить переменные по четко заданному адресу памяти, чтобы их можно было привязать к регистрам периферии. Ну и еще дополнить битовыми примитивами типа поразрядного сдвига и булевых операций (если их доселе в этом языке не было). Хотя последнее можно было бы достичь, не изменяя язык, а лишь вводя библиотечные функции для этих операций.

Ну дак и получим тот же Си, только с другим синтаксисом, а он нужен такой??

 

ЗЫ. Делал в своей виртуалке Си-подобный интерпретатор, так там было всего 2 типа переменных (int32 и float), 3 десятка функций, которые выполнялись на хост-машине, из встроенных только if, else, while, break, return затем добавил for и switch-case, чисто для удобства и массивы, больше ничего нет, но тем не менее, на нем без проблем пишутся программы для систем самообслуживания, вендинговые автоматы и контроллеры промавтоматики. Причем программа понятна и проста в чтении даже через несколько лет после написания. Да, на всякие сверхсложные навороты не претендую, но тем не менее, считаю, что черезмерное усложнение языка отнюдь не на пользу...

Edited by mantech

Share this post


Link to post
Share on other sites

на всякий случай, для ценителей пуре Ц - пример кода на Rust (просто столкнулся вчера, до этого не знал, что такой язык есть)

ну это я к тому, что С vs RUST не имеет смысла спорить, а пока с С vs C++ вопрос не закрыт :)

 

    fn push<T: AsRef<Path>>(&mut self, s: &str, origin: Option<(T, Range)>) {
        let base = self.text.len();
        self.text.push_str(s);

        let origin = if let Some((origin_path, origin_range)) = origin {
            let origin_path = PathBuf::from(origin_path.as_ref());
            Some((origin_path, origin_range))
        } else {
            None
        };

        let range = Range::new(base, base + s.len());
        let origin = Origin { range, origin };
        self.origins.insert(range, origin);
    }

 

Share this post


Link to post
Share on other sites
16 часов назад, Xenia сказал:

Однако во всех этих языках прошлого следовало бы добавить возможность заводить переменные по четко заданному адресу памяти, чтобы их можно было привязать к регистрам периферии.

Это можно делать не зависимо от языка. Через командный файл компоновщика.

Share this post


Link to post
Share on other sites
2 hours ago, mantech said:

Все закономерно, наверно используете дебаг выхлопы с указанием строки ошибки (как это делают в lwip), поэтому и размер разный, гляньте в бинарник и если там есть пути, то все ясно...

Неa. 
Удалил все результаты предыдущих компиляций и скопировал директорию проекта один в один в другую директорию.
И получил другой бинарник. 
Вот так вот. 
Думал эта дурь только в Keil-е есть, но теперь и до IAR-а добралась.  
 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this