Как стать автором
Обновить
-27
Александр Ковалёв @Koval97read⁠-⁠only

Программист С++ низкого уровня

Отправить сообщение

В ветке ниже @DvoiNicнаписал очень удачный девиз:

«Если студенту не давать невыполнимых задач — никогда не узнаешь, чего он способен достичь»

Потому что даёте шанс совершить ошибки и после работайте над ними. Ещё же Пушкин писал: "Опыт сын ошибок трудных". А знания из него и берутся.

Оно всегда так работает: вы изучаете теорию, потом на практике пробуете, практика позволяет накопить вопросы к теории, вы снова обращаетесь к теории, чтобы применить на практике. В менеджменте это подробней отображено в цикле Деминга или PDCA-цикл. Одно из самых известных и продуктивных методов организации и управления.

А почему, сравнивая уровень образования, люди обычно сравнивают сложность учебников?

Потому что сложность вопросов и наполненность учебника во многом определяют широту познаний.

Как явный пример я могу привести разницу между академическим учебником Михеева "Основы теплопередачи" 1977-го года, где от простого к сложному со множеством нюансов и моментов подробно преподаётся такая "сложная" дисциплина "Термодинамика" и жалкое подобие на академическую программу, которое я увидел в университете, и тогда уже понял, что самостоятельно узнаю гораздо больше, чем с тех лекций и практик, которые целиком покрывал рефератами и курсовыми.

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

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

Советские академики решили этот вопрос гениально простым способом - они разделили тему на общие вопросы, на которые даётся ответ в учебнике, на вопросы дисциплины нормального уровня сложности, на которые ученики ответ должны найти сами, и вопросы повышенной сложности, или задачи со "звёздочкой".

Правда и нормальный уровень сложности там был основательный. В обычном учебнике по Химии 9-го класса задавались такие вопросы, которые в современных и в 11-м не задают, а повышенной сложности даже в университетских программах. И это не метафора - для меня самого было огромным разочарованием, когда пришлось на практике узнать насколько современные учебники слабее учебника 1994-го года, Ф.Г. Фельдмана и Г.Е. Рудзитиса.

Полное описание: Фельдман Ф.Г., Рудзитис Г.Е. Химия: Учеб. для 9 кл. сред. общеобразоват. учеб. заведений - 3-е издание, с испр. - М.: Просвещение, 1994 - 176 с.: ил. - ISBN 5-09-005146-1

Хоть сразу в граните отливай. Гениально!

Наверное, тем что менеджеры называют "опытом в коммерческих проектах". То есть умением ставить условия оценки выполнения своей работы, ставить более менее корректные сроки выполнения работы, и самое главное - умением договорённости чётко соблюдать. Сроки понятие относительное, перенос релиза с чётким обоснованием - вполне нормальное явление для менеджмента и им никто не злоупотребляет.

Любой человек, который когда-либо имел опыт подряда или фриланса никак не мог избежать получения такого опыта. Вся сложность для HR в его оценке - часто они слабо представляют, где проходят границы градиентов "недопустимо", "приемлемо", "хорошо" и "отлично". Особенно когда сами кандидаты не удосуживаются написать об этом в своём резюме.

Я когда только начинал работать в частной компании, ещё на 3-м курсе университета, фактически начинающим программистом, то у нас каждый день заказывали на обед в размере 150-200 рублей на человека. И при том, что компания была самая малая, всего 5 человек сотрудников. Омск, 2017-й год. Так что, этот аргумент тоже очень-очень сомнительный.

Визуализации в Winamp были ещё интереснее. CoR's Aorta в AIMP до сих пор остаётся одной из самых захватывающих, хоть и были более "детализированные" её аналоги.

Если говорить про сам продукт - развернут внутри сети компании. Мы используем он-лайн, чтобы не только в рамках офиса подключаться, а еще и извне.

Глупости. Что стационарные (stand-alone), что веб-приложения так и так подключаются к общему серверу для банальной синхронизации. Просто у классических приложений синхронизация по событию или нажатию отдельной кнопки, но в плане автономности, допустим для формирования отчётов, им нет равных.

Мне, например, как менеджеру не понятен даже смысл существования подобных решений вашим. Если нам нужен корпоративный чат с возможностью голосового общения, то предпочтение отдадим серверу в Discord. При том, что там любой человек может подключиться, чтобы просто послушать. У чатов можно легко разграничить по правам, например, для объявлений и новостей.

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

Спасибо, но для целей общего развития предпочитаю Torrent Edition - работает безотказно и без нареканий.

Самое поганое в истории про вмешательство компаний в личные дело сотрудников на Хабре, не то что они пытаются что-то запрещать, а то с какой вульгарной постыдностью ваша редакция оказывается на их стороне.

Если хотя бы один мудак в пиджаке посмел указывать что и где мне писать, то я уже завтра оставил заявление на расторжение контракта и никаких патентных соглашений с ним не продлевал - поиск нового партнёра сильно научит уму разуму.

Ах, старый добрый срач между поклонниками С++ и Delphi. Словно в 2013-й год вернулся, славные были деньги, программисты мерились мастерством, каждый умелец применял возможности стилизации (кто ещё помнит, что в Visual Studio можно поменять стили всех системных компонентов?!), а веб крутился где-то рядом. Когда ещё люди понимали, что такое CSS, и ни о каких веб-фреймворках не было даже мысли. Спасибо, мы на минуту вернули мне юность!

А что получается? Что тот факт, что я не выучил три лишние фреймворка, а вместо этого знаю 100500 подводных камней при написании сайта - нафиг никому не нужный скил. Нет больше цели - вот устроюсь в большую компанию и начну применять всё, что я узнал за свою карьеру.

Были бы ещё умнее, то не устраивались в такие компании совсем. Работать на галерах, которые отнимают работу у фрилансеров - далеко не самая лучшая перспектива.

Всё куда прозаичней друг мой. Есть понятие "профессиональная этика", и среди программистов очень много неравнодушных людей. Но когда появляются равнодушные, для которых ничего кроме "мне сказали написать так, а что оно может работать по другому не говорили" не существует, то такое поведение мягко говоря нервирует. Вмешательство менеджеров с их Jira, tusk-ами и прочей хернёй меньшее зло, но то же не сладкий хлеб.

Не раньше трава была зеленее, а менеджеры меньше вмешивались в процесс разработки.

Как? Скажите мне, как можно было допустить такой код в продакшн?

Абсолютно такой же вопрос стоит задать каждому "разработчику" на Хабре, и особенно тем для кого ничего кроме того, что написано в ТЗ, более не существует.

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

Интересный получается подход. Давайте вместе разберём:

Из резюме и сопроводительного письма увидела, что основной ваш опыт работы - это репетиторство по математике. Соответственно, причина отказа - нерелевантный опыт.

Вам по русски написали, что в коммерческой разработке предпочитают фреймворк Laravel? Вам совсем ума не хватило загуглить что это такое?

Или лучше расскажите что вы ожидали? Что придёт некий фрилансер, мы ведь все понимаем что в веб-разработке абсолютное большинство мастеров либо ИП либо самозанятые, как и любой художник, из подкрепления своих слов он может привести только собственное портфолио, иначе в его профилях вы будете час разбираться и сомневаюсь что вообще что-то хватит смелости найти, сложив это в абстрактное N месяцев некого общего стажа, который в ожидаемом случае будет излагаться как время от даты регистрации в самом первом профиле по настоящий момент.

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

И очень прошу, без таких оправданий:

В день приходит очень много откликов, написать всем детально обратную связь не всегда позволяют временные ресурсы, но я буду работать над этим

Даже если вам приходит по 8 откликов в день, что абсолютный рекорд на вакансию за три недели её жизни, см. данные статитистических исследований компании HeadHunter, то ответить детально каждому у вас хватает рабочего дня с большим запасом.

Хорошие оптимизирующие компиляторы можно сделать только для сильно типизированных языков с контролем эффектов.  

Никогда бы не подумал, что у Object Pascal может быть такой потенциал. Вы его фактически описали:

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

Справедливости ради и компиляторы для C и C++ не были этого лишены, но как показывают наблюдания всё сводится к тому, что программа больше чем на половину состоит только из инструкций mov.

Что не так уж и плохо, если посмотреть на это с истории создания процессора Cell:

Сначала потешное:

  • for (int i=1; argc; i++) — зачем сравнивать i с argc? Лучше написать бесконечный цикл! Который, кстати, довольно быстро вылезет за границы argv, что метаиронично в контексте этого треда.

Ирония, когда давно не брался за компилятор. Заигрался с SolidWorks в сборки, и вот пожалуйста. Ирония, в том, что отладчик сразу бы и указал на эту нестыковку - на Хабре же писал.

И к слову, хоть и правильно "\n\r", но последовательность более верная у меня. Переход на новую строку и возврат каретки, то есть курсора ввода в начало строки.

Вообще, вы очень зря уповаете на некоторую безусловную последовательность - многое от привычек зависит, однако манипуляции с курсором в консоли позволяли делать воистину феерические трюки, покруче всех ваших вебов вместе взятых.

Во втором cout внутри цикла (который argv[i-1] выводит) первая букца цэ не латинская. 

Нет, там в английской расскладке всё написано. Видимо какой-то баг словил.

scanf обязана принимать форматную строку. 

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

Сразу видно, что вы ни дня на реальном C++ не писали. Только хаять можете и не больше. Всё с вами решено, прощайте.

Зря вы так. Правило#1: "Никогда не давать заднюю преждевременно". И себя дураком выставили, и перед собеседником в колени сразу кланятся.

В C и C++ ещё со стародавних времён argc не может быть равным 0. Обычно 1, так как первым параметром всегда передаётся путь к исполняемому файлу.

Если в кратце то это выглядит так:

void main (int argc, char* argv[])
{
  if argc>1 {
    cout << "Вы передали следующие параметры:/n/r";
    for (int i=1; argc; i++)
    {
      //Выводим в виде нумерованного списка
      cout << i << "."; 
      сout << argv[i-1];
      cout << "/n/r";
    }
  }
  else cout << "Я здесь: " << argv;
  // argv == argv[0];
  cout << "Число аргументов: " << argc;
  scanf();
  return 0;
} 

Итого 18 строк вместе с телом функции и комментариями.

Для программ на C и C++ сепарационная логика выглядит более разумным выбором, так как они на Хоара ложатся не очень хорошо. Как и почему вы обходитесь Хоаром?

Потому что логика Хоара - это не избирательность, а соответствие форматов входных и выходных данных. Такой подход изначально создавался для упрощения тестирования при разработке, в ряде случаев разница затраченного времени достигала в 10 раз.

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

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

Само понятие "правильное" или "определенное поведение" (defined behavior) не более чем задуманное не вызывающее нареканий программистом поведение программы, описываемое понятным для вычислительной машины двоичным кодом.

Ваш ночной кошмар "неопределенное поведение" (undefined behavior) описывается более порядочным "нежелательные побочные эффекты", о чем иногда говорят в справочниках, но не заостряют внимание. И правильно делают, так как если сильно оберегать программу от любых "внешних мешательств", то можно и огрести неприятный feedback от опытного пользователя, которого не устроило, что разработчик посчитал его за дурака.

Частный пример - современные драйвера. Пользователи глубоко заблуждаются, когда говорят, что драйверы от современного железа не совместимо с операционной системой ниже Windows 10. На самом деле даже в файлах установочных конфигураций прослеживается, что ограничение сильно искусствено. При чем не на уровня кода sys-файла, а чисто нескольких строчек в inf-файле. Скоро буду как раз разбирать такой кейс, может напишу об этом статью на Хабре.

Информация

В рейтинге
Не участвует
Откуда
Омск, Омская обл., Россия
Дата рождения
Зарегистрирован
Активность