All streams
Search
Write a publication
Pull to refresh
-5
0

User

Send message
Поэтому ничего удивительного, что именно шарп стал вашим последним языком


Во-первых я все же надеюсь, что не последним, а крайним, а во-вторых — вы все-таки не поняли, о чем я говорю. Мой путь не «начался в Паскале, кончился в Шарпе», я кратно большее количество кода написал на С/С++, где все по-другому (и нет богомерзкого бегин-енда). То есть если вы вдруг где-то там предположили «ну он паскалевод, все ясно», то непонятно почему вдруг.

Отсылка к Хелсбергу совершенно правильная, когда человек умеет делать свое дело — его труд всегда становится востребован. Самые светлые мои воспоминания — годы работы в Borland С++ Builder, угадайте почему.

А как там переменные и функции называть — да по барабану, дайте гайдлайн, буду именовать как рекомендуют


Мы немного углубились куда не следовало. Я не пытался доказать (хотя я так считаю, да), что во всех языках надо писать одинаково. Я лишь привел примеры того, как люди умеют писать понятно.
Это понятно, но хороший тон требует. Ну и варнинги по неявным преобразованиям включить, чтобы было неповадно.
Я с этим не спорю, я про другое говорил — ИнтеллиСенс позволяет решить вот эту вот проблему «вазаза, нам нужен короткий синтаксис, восемь часов писать код, ололо».
могу только предположить что это пресловутый «синдром утёнка»


Именно так, ведь я начинал свой путь в программировании с Паскаля, потом Дельфи, и все это было весьма долго… Ой нет, кажется «синдром утенка» — это про что-то другое? Подсказку, кстати, я вам выше давал — Шарп был не первым моим языком, а крайним.

Как писать переменные — весьма большая разница (и вы верно напомнили — конечно ПаскальКейс, не кэмелКейс). Привязанность целых отдельных видов разработки и, что еще более ужасно, целых языков, к тому или иному способу написания — это ужас какой-то.
Часто ответом предлагается «да уберите эти чертовы лайфтаймы»


Ни в коем случае, без этого Раст вообще непонятно зачем нужен.

Ответ на ваш вопрос не существует. Я уже пытался в прошлом холиваре что-то описать, слил карму и наполучал минусов (в этот раз растоманы тоже уже по мне прошлись, кек), но сути дела так выяснить и не удалось, поскольку на любой вопрос «Боже, зачем так?» говорилось «а мне вот все понятно». Дискуссию в таком тоне я продолжать не вижу смысла. Ну вот покажут вам девушку (пардон присутствующим дамам за сексистский пример), вы подумаете «какая-то она не очень», а что в ней именно не очень? Ну нос как нос, глаза как глаза, ну волосы жидковаты, ноги кривоваты — а что, зачем прямые ноги? Вот правда, зачем человеку прямые ноги? Вот и я видимо не умею объяснить, почему я смотрю на синтаксис Раста — и просто коробит. Реально, ровно одну статью смог прочитать, больше не осилил!

Я не так много вращался в Джаве и довольно много (но колхозно) вращаюсь в Шарпе, но мне, черт побери, нравится многословность и CamelCase. Это сделано для людей, а все остальное решает IntelliSense и нормально спроектированные библиотеки. Знаете как я начал писать на Шарпе? Какую книгу я прочитал первой, попробуйте угадать?

Ну вот или как например объяснить, чем мне не нравится бегин-енд (хотя это же многословно, ура!), и почему я считаю странными знаменитые питоновские отступы? Ну вот потому что, не люблю кривые ноги, не знаю почему. К волосам у меня претензий нет, а вот ноги чот раздражают (еще раз прошу пардону за сексизм).
Если б на ней кто писал… В смысле «много кто» писал…

Я как-то в том году заглядывал на форум оберонщиков (примерно тот же уровень популярности) — последнее сообщение было черт знает когда, то ли в Обероне нет проблем вообще, то ли…
Вам не кажется что в вашей же фразе содержится ответ? C++ — гораздо менее лаконичен, чем C. Несмотря на то, что S s= new S(); короче, чем «struct S s= malloc(sizeof s); в реальных программах C++ более многословен… и даже сам ваш вопрос это подтверждает.


Во-первых для Си вы еще забыли приведение типа, тогда еще хуже станет (однако и с приведение будет не плохо, а вполне понятно и разумно!). А во-вторых — ну нет, конечно равноценные программы на плюсах никак не вербознее. А более сложные — ну штош.

Касаемо Паскаля, мы уже как-то обсуждали с вами — он более вербозный, он менее понятный „с листа“ (дада, именно из-за бегин-енда вместо скобочек), но тем не менее он понятный, то есть условный ньюкаммер достаточно быстро примерно поймет суть дела. А тут?
Интересная статья. Не будучи настолько глубоко погруженным в тему, и не зная достаточно хорошо Раст, тем не менее прочитал очень внимательно. Про логику и хитрости вам выше уже написали, а я другое спрошу — ну когда, когда уже в Расте появится нормальный синтаксис? Я удивляюсь тому, как язык может быть одновр. совр. непн. ввду. ннужн. кртксти., но при это таким #черт -> побери: вербозным:? Вы серьезно этим собираетесь подвинуть плюсы, а тем более Си?
Невероятно крутой проект и невероятно крутая статья! Вангую вал посещения раздела «Вакансии» у вас на сайте ))

Несколько вопросов ниже.

С нашей системой после окончания испытаний и сертификации можно будет обойтись без помощника на участке


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

На перегонах есть АЛСН, а для маневровых задач сигнал по рельсу не дублируется внутри станции


Это конечно так, но все же вы могли бы получать данные от ЭЦ (хотя бы по каналу ДЦ), уже по крайней мере взрезы бы легко запрещались.

Собственно отсюда вытекает следующий вопрос — как бы вы на условном ТрансЖАТе перед критической публикой обосновали существенное преимущество вашей системы в сравнении с МАЛС? Там только одно звено остается незащищенным — случайный прохожий, но на этот счет также давно есть промышленные решения по предохранению от посещения опасных зон, о которых даже тут рассказывали. Ну и конечно мы же помним все, что случайных прохожих в маневровых парках особо нет, а раздавленных составителей и ваше решение не спасет, к сожалению.

Разумеется это все конкретные практические вопросы, а не попытка войти в общий дискурс «Полагаясь на те же инструменты, которые использует человек, мы будем совершать те же ошибки». Хотя и про это вы, я надеюсь, помните.

P.S.: И вы бы это, дернули бы что ли у местных настоящие «желтухи» для фотографий, грязные чтобы были, а то как-то несерьезно ))
Плюсую. Говоря о реалтайме — в конечном итоге настоящий реалтайм живет в FPGA/ASIC, а то и в аналоге (а то и вообще недостижим). Банально из своего опыта скажу так — если на уровне ПО микроконтроллера/микропроцессора вы задумались об «оптимизации в упор», то скорее всего пришла пора что-то менять, потому что завтра потребуется уйти еще глубже, а запаса у вас нет. Есть весьма тонкая прослойка задач, где вот прямо на ассемблере можно спасти всех за счет нескольких тактов (и я сам был в таких ситуациях, причем бизнес-цель каждый раз была весьма сомнительная), но это все плохо, очень плохо, так работать нельзя.
Мне показалось вы имеете в виду другое — когда народу много, то появляется потребность в более широком охвате возможностей языка и с этим не согласился (здесь по-моему есть связь только с требованиями задачи). Если вы говорите сугубо о «протечках кодстайла», то тут конечно дело в числе людей и степени контроля за ними. И, да, одним компилятором тут не обойдешься, и код-ревью тоже, тут нужны автоматизированные средства технофашизма.
А, если вы о нарушениях конвенций — так они уже от двух человек начинаются. Я про другое писал.
Зависит от отрасли. Если отрасли, где на каждый «we need to move fast» может воспоследовать «ok, prepare an order to move fast», и поверьте моему опыту — вы просто первую фразу вообще никогда не услышите (потому что потенциальные говорильщики несут персональную ответственность и без таких странных приказов, зачем им лишнее). Само собой должны быть при этом механизмы искоренения самовлюбленных мудаков среди линейного персонала, все это сложная наука. Там же, где руководство может позволить себе сказать «we need to move fast», качество кода очевидно не очень сильно кого-либо волнует, и часто линейный персонал на это откликается соответствующим образом. Иногда конечно и наоборот бывает, вот как у вас — сделать все так, чтобы все красиво, и имманентно быстро, и имманентно надежно, и без код-ревью, но это как раз вы тот самый невоспроизводимый мамонт, а отнюдь не бесчисленная вереница коммитеров и кодревьюеров.
Если у вас на проекте работает несколько сот человек, то вы все, даже самые странные, закутки C++ там рано или поздно увидите


Зависит от проекта, а не от количества человек.
Это же как раз типичная инфографика гибкой разработки (хотя «гибкость разработки» — термин вообще говоря широкий и необязательно именно так инстанцируется) — вместо того, чтобы сделать сначала кабину, потом колесо, а потом двигатель, вы сначала делаете садовую тачку, ну и дальше ее улучшаете. MVP есть, ура, можно работать дальше. Просто с карьерными самосвалами это прямо в таком виде не работает, чуть иначе надо.
Вот это да! Вы такой крутой чувак, а пишете вещи, которые и мне близки и понятны. Меня местные плюсоводы своим примером склоняют к идиоматичному коду, а я вот смотрю примеры, и мне иногда прямо хочется сделать проще и понятнее для средних умов, пусть даже и вербознее иногда. Это конечно ведет скорее не к С++, а к какому-то уютненькому его подмножеству, но вроде сам Бьярне не возражает.
как кроссплатформенно открыть файл и узнать его размер


До С++17 — с boost::filesystem, и это весьма кроссплатформенно же. Иначе POSIX-методы, по-моему ничуть не стыдно их юзать в коде на С++, и они тоже в общем кроссплатформенные по духу.

А вообще несколько странно, собеседование на эмбеддера и вдруг tar на плюсах?
Вот, я это и спрашивал — что там под капотом, оказалось семихостинг. Да, в этом случае вывод сам по себе идет в консоль отладчика. В этом смысле с выводом через ITM больше тонкостей, он как-то в ATS у меня вообще отказался работать, приходилось отладочную консоль в Link Utility запускать.
Исторически так сложилось, что мы всегда на работали на IAR


Этой практики вероятно и следовало придерживаться, просто если вы решили взять что-то более красивое, то кажется Кейла было бы достаточно, и это все еще было бы отраслевое решение. Но это сугубо ИМХО.

функция __write() определяется в библиотеке dlib, без ключей компилятора она не подключается и соответственно нет и её имплементации


Ну ок, а внутри нее-то какая реализация?
Отличная статья, спасибо!
Пара вопросов:
1) Почему вы студентам не предлагаете Кейл? Я не похоливарить сейчас хочу на тему «Великой Тройки», а конкретно про студентов. Сертифицированность компилятора для них вряд ли имеет значение, а в части удобства работы с МК у него конкурентов нет ИМХО (с IAR-ом все понятно, а Atollic True Studio и аналоги мало того что тормозные, так еще и в gdb приходится макаться). Ну и он бесплатный до 32кБ, ИХМО достаточно. Ну и вероятность поработать с ним в отрасли весьма высокая.
2) Поясните убогим — файл startup.cpp откуда берется? Понятно, что его можно и самому при наличии знаний написать (оглядываясь на готовые примеры), но вот конкретно тут он откуда?
3) И еще вопрос от убогих — не очень понял из поста, где и как вы переопределили _write, очевидно ITM_SendChar должен быть в основе всего, а как дальше настраивается вывод вот туда вниз?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity