Comments 220
1) Новый стандарты C не во всем совместимы с C++.
2) В С нет встроенного ООП, поэтому его придется эмулировать, если оно нужно.
3) Отличаются стандартные библиотеки и задействуемые фреймворки.
4) Из-за отличия в доступных языковых средствах отличается и образ мышления — это даже в книгах Страуструпа написано.
Увы, данные языки не входят в мой профессиональный список, поэтому я мог ошибиться в перечисленных фактах.
en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
Ах да, ещё есть стандарт C11, куда добавили ещё больше функционала, несовместимого с C++.
C не так прост, как кажется:
en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
Тут тоже далеко не все различия описаны :) Например, в C вот такое:
union U {
int i;
void *p;
};
union U foo;
foo.i = 100;
void *bar = foo.p;
вполне валидная конструкция по букве стандарта C, будет выполнен так называемый type punning. В C++ же обращение не к тому элементу union, в который последним производилась запись — это undefined behaviour (но C++ компиляторы, как правило, «эмулируют» поведение C).
И такие вопросы не возникают в принципе.
Но если писать надежный код на С++11/14, основы нужно напрочь отринуть.
Вот именно в этом сложность
3. помнил бы о размере пустой структуры
Это же невалидная по стандарту (по крайней мере C99) штука, нет?
A structure type describes a sequentially allocated nonempty set of member objects…
Если начать обучение сначала с C, а затем перейти на C++, то большей части этих проблем не будет. Единственная проблема — код поначалу будет выглядеть как "C с классами", но со временем это пройдёт.
А может и не пройти:
- Я всегда ставлю .h в названии хэдеров. То есть пишу "stdio.h" вместо "cstdio".
- Именую файлы ".h" и ".cpp", либо ".hpp" в случае header-only файла.
- Испытываю лютую неприязнь к std::cout и использованию операторов битового сдвига не по назначению, предпочитая printf. Да и в целом не люблю перегрузки операторов.
- Читаю и записываю файлы через FILE ("stdio.h") или нативные функции работы с файлами, но не через iostream.
- Ненавижу явное указание способа приведения типа (static_cast, reinterpret_cast, const_cast), предпочитая C-style cast, в первую очередь, из-за многословности.
- Не люблю неймспейсы в C++ — они сделаны очень неудобно, мне приятнее просто добавить к имени функции префикс.
Вообще, считаю, что начинать нужно с С, чтобы понять, как структуры данных и абстракции устроены на низком уровне, чтобы потом грамотно их использовать.
Почему?
Дело привычки. К тому же, в других языках, которыми я пользуюсь (Pythlon, Matlab), используется fopen/fprintf — подобная семантика.
Особенно хорошо такое потом рефакторить, ага. Поменяли один из типов, и невинный static_cast превратился в reinterpret_cast.
В большинстве случаев всё очевидно. Например, в случае преобразования типа к float или int. Или преобразования результата выделения памяти (void*) к указателю конкретного типа.
А что неудобно? Чем префикс лучше кроме того, что его надо набивать будет теперь всегда?
Неудобно, что нет file scope using namespace.
Это в момент написания кода очевидно (в лучшем случае). Потом при чтении уже не так очевидно.
Неочевидно — это простыня из AVX-инстринсиков. Ассемблеро-подобная фигня, которую невозможно представить с помощью более высокоуровневых абстракций (оптимизатор нормально не переваривает). А вот каст инта к флоту вполне себе очевиден.
Эээ, а у вас там точно UB нет?
Где? В преобразовании float к int и обратно?
Чё-т мы всё глубже.
А зачем вам голый malloc?
А кто сказал, что у меня голый malloc?
Может, у меня aligned_malloc или отображение файла в память?
А чем плохо в начале cpp-файла написать using namespace Blah?
Тем, что тогда хочется так писать и в начале h-файлов, а нельзя.
У префиксов, кстати, тоже нет file scope using prefix. И других using тоже нет.
Да, это проблема.
Ага. В C++ это UB (если, конечно, вы не только преобразуете туда-обратно, но и где-то в промежутке читаете этот объект или пишете в него).
Это не UB, а обычный static_cast. Я где-то писал про преобразование указателей, когда писал про преобразование float в int?
В обоих случаях их надо завернуть как можно быстрее в более типобезопасные обёртки.
Так это и есть обёртка, которая возвращает void*
или char*
.
Пример: изображение из POD-пикселей, кусок нетипизированной памяти. Обращение к пикселю — вычисление адреса пикселя в памяти с последующим кастом к типу пикселя. Здесь c-style cast всегда будет reinterpret_cast-ом вне зависимости от типа пикселя. А ещё это, внезапно, не UB (если вы про алиасинг).
Единственная проблема — код поначалу будет выглядеть как «C с классами», но со временем это пройдёт.
по своему опыту скажу, что это не проходит. Программисты так и остаются инвалидами, что в си, что в с++. Либо ты жестко разграничиваешь для себя эти языки, либо ты просто плохой с++ программист.
9) Почему я не могу перегрузить оператор + чтобы он кроме сложения еще варил мне кофе?
Это боль скорее в Java, а не в чистом Си.
Ну не стоит уж так… Откройте к примеру код UE, вполне достойно) Я конечно не люблю холиваров, но тут же никто я думаю спорить не будет что у с++ впрочем как и у си вход покруче питона раз так в 10 минимум
Звали? Не знаю на счёт "умнее" в целом, но порог вхождения в ржавчину таки выше, чем в кресты. При этом rust таки проще, но для того, чтоб писать код, требуется знать условно 80% всех фичей. В крестах можно знать 2-3% и уже что-то (относительно) полезное писать. Тяп-ляп и готово. С ржавчиной такое не пройдёт. Ржавчина будет бить тебя по рукам до тех пор, пока ты не научишься писать нормальный код. Грубо говоря И начинающий И средний программист на Rust умнее среднего любителя крестов. А хорошо знающих кресты я не встречал в дикой природе. Как минимум по той причине, что выучить кресты целиком не представляется возможным.
Я кстати знаю один универсальный способ сравнения уровня инженеров. Его научная ценность сравнима с таковым у парадокса из статьи. Общеизвестно, что все настоящие инженеры смотрят аниме. Даже пресловутый Илон Маск, и тот смотрит (см. твиттер). Вот количество просмотренного и является основным критерием. Это ветка холивара, подходите строго по одному!
Лучше уж MIPS.
В MIPS — четыре.
Он не простой, он элементарный. Набор команд учится за час.
Если изучать его в связке с архитектурой NES (тоже крайне простой), то в качестве дополнения придет понимание многих концептов, которые в современных процессорах стали в сотни раз сложнее, но содержат ту же самую идею.
Ну и бонусом — возможность поковыряться в сорцах игр из детства :)
Не советую нанимать любителей эсперанто вместо сотрудников владеющих английским.
Петя изучил английский по тому, что чётко понимал зачем он ему нужен. Он стремился стать полноценным специалистом и системно изучал то, что ему необходимо для работы.
Эсперантист Вася, витая в облаках, учил не то, что нужно, а что попало, что ему казалось интересным. Не задумываясь зачем он тратит время и как потом будет этим пользоваться.
Когда дойдёт дело до работы Петя будет разбираться в той технологии, которая нужна, чтобы решить задачу, а Вася будет скакать с фенечки на фенечку, которые ему интересны, а вас считать сатрапом, который душит его творческие порывы.
Нужно на хабре ввести фичу: комментарий аргументированно опровергающий постинг. И Ваш комментарий как раз такой!
p.s. И как логическое завершение Вашего комментария: Вася позже просто уйдёт куда-то ещё, оставив работодателя с экзотическим легаси, которое либо будет переписано, либо работодатель будет долго и безуспешно искать очередного эсперантиста (а те будут крутить носом, т.к., то ЗП не устраивает, то ещё что-то).
Потому — нет, не оторвано.
Недавно в комментариях меня обвинили, что я не переводчик (которым я, конечно же, не являюсь) за моё утверждение, что буквальный перевод детских стишков — невозможен. Обвинитель, как раз окончила крутой иняз и работает по профессии. Я никогда специально не изучал английский, но регулярно перевожу (например документацию).
Но! Изучение иврита как раз помогло понять структуру и логику языков в целом. Плюс, специальная литература, например того же Эко.
Распространенный стереотип. Знание иврита не даёт понимание структуры других языков. Хотя бы потому, что структура есть только у иврита и арабского. А у остальных языков невозможно разговаривать, если не знаешь слов — их не нагенерируешь на лету, как в иврите.
у остальных языков невозможно разговаривать, если не знаешь слов — их не нагенерируешь на лету, как в иврите
А можно пример генерации слов? (уж очень это необычно)
Поэтому небольшая вводная перед примером. Буду использовать схожие кирилические буквы, чтобы было доступнее.
В иврите нет гласных. Например: «канал» --> «кнл».
Но, все же, есть гласные звуки, которые отмечаются согласными. Например, согласная «в» в середине слова становится «о» или «у».
Пример: корова --> кврвб («в» превращается в «б», чтобы не путали с «в» и не думали, что это звук «о»). Это привело к тому, что во многих языка Бабилон называют Вавилоном, а Бейтлехем — Вифлиемом. Также оно работает и в обратную сторону, «б» при сдвиге в начало превращается в «в» — вилон (занавеска).
Есть и много других правил по замене, но они не пригодятся для примера.
А, и еще один момент: «п» и «ф» — одна и та же буква (кстати, поэтому персы говорят на фарси, а палестинцы и фелистимляне — одно слово).
Итак, в иврите есть корни слов. Это не глагол, не существительно и не причастие. Просто корень, из которого конструируется любое слово этого смысла.
Итак, берем комбинацию «с», «п», «р»
добавляем спереди «л» — получаем инфинитив глагола. лспр (лесапэр — рассказывать). «Л» всегда значит инфинитив.
Удаляем «л» из глагола и добавляем «м». мспр — (месапэр — рассказываю)
дальше можно играться префиксами/суффиксами, как и в русском языке, получать прошлые, настоящие и будущие времена глаголов.
Можно также регулировать направление движения. Глагол «рассказать» для этого не очень удачный пример, но можно посмотреть на примере глагола «хзр». «в» в начале будет значить, что возвращается сам объект: хвзр (хозер — возвращаюсь), а если двинуть «в» во второй слог и сменить на «й», то получилось «хазир» — возвращаю какой-то предмет.
Специально для фанатов MMA: [ле]хавев — обожаю, хабиб — обожаемый («и» — потому что субъект обожания, сдвиг с заменой делают из объекта субъект).
Теперь посмотрим на существительные.
Добавляем «в» — получаем существительное. спвр (сепур — рассказ)
Двигаем «в» вперед — получаем новое существительное. свпр (софер — рассказчик, писатель).
Убираем все «в» и получаем еще существительное — сфр (сефер — книга)
Выкидываем предыдущие и добавляем «й» — это будет «сфрй» (сефрия — библиотека).
Все эти слова, по сути, можно не знать. Например, если есть желание сказать объединение сущностей, то лучше пойти по последнему варианту (сефрия), а если маленький предмет, то скорее всего угадаете, если уберете все гласные (сефер). Человек — лучше подставить «в» в первый слог. Результат глагола — во второй слог.
Ну, правда, на все на это есть исключения, но не думаю, что много.
Наверно плохо объсянил, но как умел))
Возникли вопросы по отсутствующим гласным.
1) А как угадать пропущенные гласные? Можно ли это сделать для слова, которое не знаешь (как в русском — смысла слова не понял, но произнести могу)?
2) Часто ли возникают коллизии, когда на письме одинаково, а прочитать можно с разными гласными и получить разный смысл?
Через дробь написал потому, что не важно как вы произнесете эту гласную. В иврите голобь, голубь, гулобь и гулубь прозвучат одинаково и никто не заметит разницы.
Единственное спорное место — отсутствие гласной вообще. Например «хбр» можно прочитать как «хабр», «хавар» или «хвар».
Вообще, в школьных учебниках есть, так называемые, огласовки. Они помогают точно определить звук. Взрослые делают это машинально и огласовки только сбивают с толку.
Огласовка выглядит как точки и черточки по краям букв (снизу, сверху, слева или внутри): חֲטַף סֶגּוֹל
Это что-то из серии
2. Про коллизии — часто. Но это больше межкультурная разница.
Западные люди (все от Ванкувера до Хабаровска) очень щепетильно относятся к высоте регистра букв и звучанию гласных. В германской группе — еще и согласных. Также, как китайцы щепетильно относятся к тону. Даже если в русском языке «молоко» стало «малако», то все равно все одинаково его произносят. Произнесешь чуть иначе и вызовешь недоумение.
Израильтяне/арабы/персы не знают о существовании этих тонкостей. Им просто пофиг. У меня друг живет на улице Соколова (есть такая в Тель Авиве). Так эти дикари пишут ему во всех документах про какого-то Суколова. Это как ловец орлов, только ловит не орлов.
Или вот в России есть беда полицейских. У них какой-то трэш с ударениями: «дело было возбу́ждено». Но они стандартно так говорят, одинаково. В иврите же каждый ставит ударение, где хочет — по настроению. Один и тот же человек может в разные дни поставить разные ударение на одно и тоже слово.
Кроме того, род существительных тоже не важен. Можно сказать «два шекеля», можно «две шекеля» — их такие мелочи не волнуют. Редко кто следит за стандартами. Из-за этого у некоторых существительных род вообще был утерян с течением истории — «сакин» (нож).
Поэтому гласные — это такая мелочь)))))
2) Слов-омографоф в обиходе навалом, но чаще всего контекст позволяет их без труда различить. Любимый пример моего преподавателя: «бастовала» и «который/ая в чае» на иврите пишутся одинаково, но вряд ли есть хоть один контекст, в котором их можно спутать. Одно из любимых ивритскими филологами развлечений — создавать такие предложения, которые можно прочесть дюжиной разных способов, и чтобы каждый способ был грамматически правильным.
Также оно работает и в обратную сторону, «б» при сдвиге в начало превращается в «в» — вилон (занавеска).
Ээ, какая первая буква в слове וילון?
Edit: и дальше примерно в каждой строчке по ошибке… Не надо так.
Поторопился и опечатался в одной букве.
Так правильно:
Также оно работает и в обратную сторону, «о» при сдвиге в начало превращается в «в» — вилон (занавеска).
Другие ошибки иногда намеренные, чтобы упростить (типа как в сифрие надо еще хэй добавить — поднадобится целая история почему).
«хазир» — это совсем не «возвращаю какой-то предмет»
Я не стал ставить «тав» спереди, чтобы не взровать мозг людям. Понятно, что хазир — это свинья. Но я использовал это как краткий приказной тон, чтобы было просто понять.
Но может вы сами тогда сделаете лекцию на 1000 страниц, чтобы объяснить все правильно?
Но, все же, есть гласные звуки, которые отмечаются согласными. Например, согласная «в» в середине слова становится «о» или «у».Настоящие
Более интересно, что эта самая «в» (когда она означает "&" ) иногда (перед некоторыми согласными) произносится «у».
Итак, берем комбинацию «с», «п», «р»Ещё же «сифрА» (цифра) с тем же корнем?
…
Теперь посмотрим на существительные.
Добавляем «в» — получаем существительное. спвр (сепур — рассказ)
Двигаем «в» вперед — получаем новое существительное. свпр (софер — рассказчик, писатель).
Убираем все «в» и получаем еще существительное — сфр (сефер — книга)
Выкидываем предыдущие и добавляем «й» — это будет «сфрй» (сефрия — библиотека).
Настоящие занудыспециалисты считают, что это уже не буква, а огласовка (которая обозначается тем же символом ¯\_(ツ)_/¯ ).
Всё ещё хитрее: буквами считается всё то, что было в Священном Писании изначально, а огласовками — всё то, что добавили позднее для удобства чтения.
Поэтому, например, во фразе יום טוב первый вав — это буква, а второй — огласовка, даже хотя они пишутся одинаково и читаются одинаково.
там есть гласные. Просто они не обозначаются на письме. Или обозначаются теперь с помощью огласовок.
А прочитать дальше? Я об этом сказал.
Ctrl+F: «Вообще, в школьных учебниках есть, так называемые, огласовки»
Это опять таки никак не относится к ивриту. Или вы думаете Федор и Теодор тоже из-за иврита? Просто некоторые звуки из греческого в русском языке обозначались буквой ф ( особенно, учитывя, что чисто славянских слов с таким звуком не было).
Греческая письменность и звучание букв не родились сразу готовыми. Они были унаследованы из финикийского письма. Как раз из Египта. Поэтому финикийское письмо и арамейское (иврит, арабский) очень родственны.
Берем корень -бег- и добавляем к нему приставки, суффкисы и окончания и поучаем убежать, бежать, бегал, прибежал, бежавший, бегущий, выбегший, прибежавший и т.д.
Об этом я писал. Ctrl+F: «дальше можно играться префиксами/суффиксами, как и в русском языке»
Но еще я писал о том, чего нет в других языках. Пожалуйста читайте внимательнее.
Вы написали, что в иврите нет гласных. Это не так. Даже когда огласовок не существовало, тысячу лет назад или раньше, гласные там все равно были. Учебники тут совершенно не при чем. В иврите нет букв для обозначения гласных звуков. Ну в большинстве языков нет букв для каких-то звуков, или звуки обозначаются комбинациями букв.
Я именно это и написал. Нет гласных букв и никогда не было. Есть огласовки, которые не используются. Вы вообще читать умеете?
Все остальные аргументы по точно также лишь демонстрируют ваше неумение читать.
Это опять таки никак не относится к ивриту. Или вы думаете Федор и Теодор тоже из-за иврита? Просто некоторые звуки из греческого в русском языке обозначались буквой ф ( особенно, учитывя, что чисто славянских слов с таким звуком не было).
При всём уважении, приведённые Singaporian примеры с п/ф «исказились» не в греческом, где различие п/ф вполне есть, а в арабском, где его нет.
1) во-первых, Петя вряд ли учит английский уже хорошо зная китайский и французский и понимая, что ему в его (инженерной) работе понадобится английский. Скорее всего английский — это первый язык, который он учит, потому что понимает, что он нужен для общения с потенциальными заказчиками и документации. Вася же, который учит эсперанто, вряд ли учит его для общения с эсперантистом Джоном или для того, чтобы прочитать документацию на нем для эзотерического языка. Он, скорее всего, уже знает английский, и учит теперь другой язык из интереса.
2) во-вторых, это было бы верно, если бы выучить английский и эсперанто было бы одинаково просто. Но на самом деле если для изучения английского материалов и курсов полно на каждом шагу, то для изучения эсперанто нужно по крайней мере немного напрячься, чтобы найти учебные материалы. Найти курсы «вживую» здесь вообще малореально. Поэтому если Вася выучил эсперанто, значит что он приложил в несколько раз больше усилий, чтобы это осуществить, чем Петя, который просто записался на курсы недалеко от работы.
3) ну и в третьих, зачем, собственно Петя и Вася учат эти языки? Петя — как Вы правильно написали, учит его «для работы», чтобы иметь лучшие шансы в карьере. Вася же хочет разобраться в самих языках, в их устройстве, в том, как они функционируют. Для работодателя Петя, наверное, будет более интересен как «рабочая лошадка», но Вася, скорее всего, рано или поздно выбьется в архитекторы или CTO, потому, что понимает не только в рамках своей технологии и стеке.
Теперь замените «английский» и «эсперанто», на, скажем, Ява и Эликсир — и сравните :)
Поэтому если Вася выучил эсперанто, значит что он приложил в несколько раз больше усилий, чтобы это осуществить, чем Петя, который просто записался на курсы недалеко от работы.Вы не учитываете, что эсперанто специально создавался как простой и логичный язык для быстрого изучения, без тысячелетнего груза легаси и исключений как в естественных языках.
Поэтому изучить его будет намного проще английского (и других распространенных языков), жаль только что применять его негде…
Да и по поводу отсутствия применения, это тоже вопрос. Один мой знакомый, кхм, получал уникальные тексты как раз при помощи других эсперантистов. Он просил переводить интересные ему темы с национальных языков на эсперанто. Оттуда переводил на русский и получал отличный, не заезженный материал.
Это я знаю. Но несмотря на это, для того, чтобы изучить английский Пете нужно приложить немного меньше усилий со своей стороны, так как это мейнстрим язык и по нему пруд пруди курсов, пособий и прочего. Васе же придется изначально потратить больше времени, чтобы найти учёбные материалы по эсперанто и изучить его. Это характеризует Васю как более упорного в данном случае (но только в данном).
Опять таки, а почему Вася решил вдруг учить эсперанто? Из-за того, что он проще английского? Вряд ли. Как он про него вообще узнал? Наверное были какие-то другие цели. Вот это и интересно!
Ифкуиль исходно был создан с целью быть как можно более сложным или нелогичным, а также как можно более коротким. Говорить и писать на нем сложно, и это специально так. Поэтому для чего его учить? Если хочется такой экзотики, то вполне можно выучить Клингон.
Я так понимаю тут не суть в «выпендриться», а в том, чтобы изучить что-то необычное, но полезное. Если брать что-то еще более необычное, то тут надо скорее идти в сторону логлана/ложбана, чем ифкуиля…
Вообще, хочу вернуться к своей начальной реплике. Ситуацию с Питоном не считаю типичной, потому сомневаюсь в правильности сделанного автором обобщения. При этом я сам именно питонист-любитель, так что ничего против людей на досуге лабающих на питоне, естественно, не имею :-)
Но вообще, судя по отзывам HRов, таки Rust специалистов проще искать, чем плюсовых, обычно если кто-то прошел первичный фильтр, то он почти точно толковый парень, а не просто кто-то, кто вызубрил руководство "как пройти собеседования на плюсы".
Знаю Рапиру и Algol-60 :). Ну, знал когда-то… А ещё этот, Quasic!
2) Если человек пишет на языке, который еще не оброс литературой, документацией и прочее, то человек явно залез в его кишки и стал разбираться в нем гораздо лучше, чем обычный программист который учит апи платформы, с которой он будет работать.
3) Имеет ли это какую-то коммерческую ценность? — Нет! Если ты выбираешь непопулярный стек, ты достаточно быстро тратишь весь трудовой резерв, после этого тебя ждут удивительные мероприятия, как нанять людей на язык, платформу, который нафиг никому не нужен в текущий момент (привет Wriketeam с их Dart и mail.ru с их perl)
4) Целесообразно нанять в команду 1-2 крутых разраба-архитектора, а все остальные слоты занять смышлеными джунами и качественными мидлами. Так и код будет качественным и никто жаловаться на рутинные задачи не будет.
выбираешь непопулярный стек… mail.ru с их perl
!?
которую почему-то нельзя выполнить на «стандартном» языке
А какой язык является «стандартным»? Это понятие, как мне кажется, сильно зависит от компании, индустрии и ещё кучи переменных. Где-то это Java, где-то C/C++, где-то даже Visual Basic, в NASA, к примеру, в своё время был довольно популярен явно «нестандартный» Forth.
Есть достаточно проектов в которых важен факт выполнения функции, а не стек или язык, которые создаются один раз и работают годы или даже десятки лет, или наоборот, с коротким сроком жизни, практически не требуют поддержки кода (потому что всё самое критичное вылизывается до их введения в прод) — соответственно, совершенно несущественно, какой язык выберет исполнитель.
Тут недолго остаётся до включения мозга и заполения вакансии не базвордами и аббревиатурами, а целями проекта и актуальными задачами. UNACCEPTABLE!!!
Ну пишу я условный проект на delfi/dart/haskel — ну допишу я его, ну разорится компания, ну уволят:
— куда я дальше пойду с этим опытом.
— смогу ли я претендовать на топовую зп
— и прочее
И всегда непопулярный стек проигрывает популярному по этим параметрам.
P.s. или что, вы хотите жить вечно? ©
Представляете себе продажника который переживает что из за покупки нового мобильника он не найдёт новую работу? Весь опыт то был на старой моторолле.
Представляете себе продажника который переживает что из за покупки нового мобильника он не найдёт новую работу?
Я знаю продажников, которые переехав из России в Германию или Францию, очень долго не могли найти работу (неидеальноое знание немецкого/французкого, разный менталитет, разные законы и т.п.). Даже просто крутой специалист по продажам страховок, вряд ли моментально сможет зарабатывать столько же или больше на продаже строительной техники, к примеру (так как очень много разной специфике в каждой области, разные подходы/связи и т.д.).
Все-таки смена мобильника это ближе к замене одного ноутбук на другой (с той же OC) у программиста, чем смена стека.
Он потащит в проект микросервисы с Open Shift'ом, Scala и будет рассказывать, что ваши закупки лучше всего организовать в граф на neo4j или, боже упаси, RDF c онтологиями.
Он найдет, где реализовать паттерн «Лексема» и будет супер-логично объяснять, что импортировать готовый WYSIWYG редактор для формочки обратной связи ни в коем случае было нельзя.
Он будет оптимизировать и профилировать какой-нибудь reflow на фронтенде, чтобы добиться увеличения производительности на 0,003 мс, потому что профилировать reflow — весело и интересно и квалификация повышается, а фигачить очередную формочку — скучно и надо, чтобы ваша система закупок табачного оборудования нормально фурычила.
1. Есть языки, которые уже стали историей, что не отменяет достоинств, которые у них были. Бейсик, foxpro, pascal, haskell, ocaml, fortran, algol… Кто — то ушел совсем, другие осели в специализированных нишах, третьи живут только благодаря преданным поклонникам. Стоит ли делать далеко идущие выводы, если в резюме стоит один из таких раритетов? Только очень сильно подумав.
2. Есть языки, которые появились слишком недавно. Что можно сказать о человеке, который указал в резюме язык, известный только паре — тройке сотен товарищей? Ничего! Перед тобой может быть гений, а может и чудак, любящий все, что странно выглядит. В любом случае, я бы воздержался от приема такого человека на работу.
3. Даже в случае мэйнстрим языков, все не так однозначно. Гуру веб разаботки на java или C# конечно же сможет освоить python или php, но я обязательно спросил бы, что его подвигло это сделать.
— не используются совсем (на сколько я знаю, бейсик перестали использовать при преподавании программирования, как и чистый паскаль),
— используются редко и для довольно специфичных вещей (вы часто видите вакансии на ocaml или haskell?)
— используются гораздо меньше, чем в пору их рассвета, или их использование ограниченно отдельными областями (сходу foxpro могу припомнить только в поделках от ФНС, а было время, когда разработчики на нем пользовались хорошим спросом. с паскалем та же история. delphi разработчики время от времени еще требуются, но это совсем не те объемы, что были во времена 3-7 версий. Ada разработчик, персонаж вообще редкий, почти мифический, хотя сам по себе язык вполне живой)
Изучать эти языки сейчас вполне возможно. Только я бы внимательно прислушался к мотивации интересующихся, приди мне в голову желание нанять людей с такими позициями в резюме.
Если развернуть мою мысль, то она звучала бы как — то так.
2. Открыть на GitHub репозиторий с проектом на этом языке
…
PROFIT!!!
Вброс крайне неубедителен. Ни цифр, ни пруфов. Экстраполяция с одного товарища Грэма в 2004 году на всю отрасль в 2019? Ну камон.
Имхо, суть парадокса в том, что если у тебя есть идея, и тебе нужно ее по быстрому проверить, то выбираешь инструмент, на котором это сделать проще. Понятно, что Python в этом смысле удобнее, чем Java — слишком много надо сделать телодвижений в Java, чтобы получить нужное. Относительно много, конечно.
Так вот, если человек не хочет проверять свои идеи, то ли потому, что у него их нет, то ли лишь потому, что инструмент неподходящий, то этот человек меньше пробует и узнаёт нового.
Поэтому дело не в языке, на котором вы пишете на работе, а в том, развиваетесь ли вы, ищете ли новые подходы. А связь этого с языком — лишь следствие поисков нужного инструмента.
Но «сообразительный программист, которому интересно языки учить» и «тот, кто решает бизнес-задачи» вовсе не синонимы.
На работу то нынче не для этого нанимают.
А вот Гугл на практике проверил и убедился, что это не дает ничего хорошего и перестал.
Пенку есть, знаете ли, далеко не все любят.
Ну у загнивающего капитализма это перманентное состояние.
Но оплачиваемый работы для романтиков все равно очень мало, и от рассуждений больше не станет
Гуглите, если еще не вырезали из поиска и с контролем рвотного рефлекса норм
Как ни странно, на Хабре нет практически ни одного упоминания об этом парадоксе.
Вообще любой человек способный к элементарной аналитике, рано или поздно должен осознать такую очевидность. И программирование тут не причем совершенно. Любой энтузиаст изучивший предмет «потому что нравится» всегда будет выше классом того кто что-то выучил «потому что надо». Если вам за 30 и вы это узнали из этой статьи, вам следует больше кушать витаминов.
Любой энтузиаст изучивший предмет «потому что нравится» всегда будет выше классом того кто что-то выучил «потому что надо»
Во-первых, стоит аккуратно использовать слова «любой» и «всегда» в логических выражениях, так как они опровергаются любым одним примером невыполнения, например «инициативный идиот-энтузиаст хуже диверсанта».
Во-вторых, энтузиаст может перегореть очень быстро и его кпд резко устремиться к нулю (а то и станет отрицательным), а человек, который просто работает работу, может работать долго и результативно. Думаю, все намного сложнее простого энтузиазма.
А как называется посылка, не выдерживающая применения контекста?
Если вы не тролль, соблаговолите высказывать аргументы только в рамках спорного высказывания.
Могу вам помочь, левый контекст который вы привнесли это «инициативный идиот-энтузиаст», и «энтузиаст может перегореть».
Вас не устраивает
Любой энтузиаст изучивший предмет «потому что нравится» всегда будет выше классом того кто что-то выучил «потому что надо». Я же вам заявляю, что за всю свою жизнь не видел ни одного исключения из этой посылки. Ни разу. Ваше несогласие это конфликт вашего лишнего контекста.
левый контекст который вы привнесли
Нее, вы сказали «любой» и «всегда», чтобы ваше утверждение было логически верным оно должно выполняться в любом контексте (иначе это правило работающие явно не всегда).
По вашему утверждению берем любого дауна, мотивируем его на энтузиазм, и он должен работать в любой отрасли (например, в теоретической физике) лучше любого профессонала, работающего за деньги. Если нет — то это правило работает не с «любыми людьми» и не «всегда». У вас явная проблема с логическими выражениями, что для программиста — весьма странно.
Ну добавьте к е=мс2 свой контекст
Если вы найдете множество практических экспериментов, когда е=мс2 не будет работать в рамках применимости ОТО — это будет означать, что теорию относительности нужно заменить другой лучшей теорий.
Я же вам заявляю, что за всю свою жизнь не видел ни одного исключения из этой посылки. Ни разу
Мало кто, что в жизни не видел. Я вот никогда в жизни не видел мужчину, у которого было бы более одной официальной жены, это вовсе не значит, что их не существует.
По вашему утверждению берем любого дауна,Нет, это по вашему. В конструкции: «Любой энтузиаст изучивший предмет» вы увидели только «Любой энтузиаст», в связи с чем смысл текста исказился полностью. Обратимся к популярным толкованиям употребленных вами слов. «Даун» и «Идиот», это разновидности умственной отсталости, и означают неспособность к сложной умственной деятельности. «Даун» и «Идиот» технически не способны к — «изучивший предмет». Вы выдумали собственное толкование моего текста не имеющее никакого отношения к реальному смыслу. Конструкция использованная мной, означает высоко мотивированного на результат и процесс человека, способного к высокоуровневой умственной деятельности. Такой человек не может быть ни «дауном» ни «идиотом», это взаимоисключающие состояния. Далее, вы, строите новую посылку вообще не имеющую никакого отношения к моей мысли. «энтузиаст может перегореть». Ну и что? А солнце желтое. Все на свете могут перегореть. В общем читайте больше художественной литературы, с логикой и контролем у вас не очень. Пропускать слова в некоторых текстах может быть очень опасно для здоровья. Договоры там или судебные споры…
Не улавливаю аналогии, приведите пример?
> Я же вам заявляю, что за всю свою жизнь не видел ни одного исключения из этой посылки.
А я ни разу не видел суслика.
Ad nauseam (дословно — «до тошноты», по существу — «до отвращения») — латинская сентенция, которая используется для описания спора/дискуссии, которые длятся слишком долго (подробно, навязчиво, однообразно) или повторяются слишком часто, образно — вплоть до возникновения «тошноты». Означает, что все, кто были причастны к постоянному и однообразному «потоку» пафоса, устали от этого.
Реально крупные компании активно покупают более мелкие, где продукт написан на разных языках, а потом их используют, в результате может быть сборная солянка из десятков языков.
Или другой пример, крупная компания, где я давно работал, фронт логично на javascript, местами переписанный под typescrpit (ибо более удобный, но полностью переписать js ресурсов не хватало), в беке местами php (для статических вещей), местами nodejs (для сложного дизайна). Для микросервисов ядра — java, из-за производительности и ресурсов, для больших данных — f# (просто удобнее), фремворк машинного обучение чужой по лицензии, там вообще сборная солянка из C#, python и т.п. Кажется в каких-то критических к производительности сервсивам еще и C++ обитал. Причем использование каждого языка было вполне обосновано. Но компания реально крупная, она могла позволить себе разных специалистов.
то общую автоматизацию особо не напишешь, это критично для крупных компаний
Зависит от «крупности» компании. В компаниях, где количество программистов измеряется десятками тысяч и много разных направлений, общая автоматизация все равно вряд ли возможна.
Парадокс Питона (The Python Paradox)