• Семь «абсолютных истин» джуниора, от которых пришлось отучиваться
    +1
    Я более высокий уровень имел в виду. Уровень, где существуют «вышеописанный», оглавление, номера страниц и даже абзацев, «см. рис. 5», «как описано в работе John Dow», abstract из научных работ (представляющий собой по сути .h — декларацию того, что изложено в подробностях дальше), саму манеру изложения материала в научной и учебной литературе (сначала леммы, доказательства теорем, определения, затем их использование как уже известных и доказанных понятий).

    И лично для меня магические константы и структуры данных внутри кода — дикость. Я не делаю так даже в самых «наколеночных» bash-скриптах или одноразовых программках. Потому что говнокод начинает замедлять тебя (не только написание и изменение, но и чтение) уже в течение часа, а именно в таких вот «наколеночных» программках часто важна скорость изменения и гибкость и поэтому там важно писать чистый код, как ни странно это может кому-то показаться.
  • Семь «абсолютных истин» джуниора, от которых пришлось отучиваться
    0
    У каждого свои ассоциации на слово «конфиг». Для кого-то это JSON, для кого-то .ini, для кого-то — структура данных внутри кода.
  • Семь «абсолютных истин» джуниора, от которых пришлось отучиваться
    0
    Не повторяться; ссылаться, а не копировать; single source of truth — это как раз про читаемость. Наши мозги работают именно так, книги написаны именно так
  • Как маленькая программа превратила маленькую контору в федеральную компанию с прибылью 100+ млн.руб/месяц
    –1
    Вообще-то это нормальный формат, который идёт ещё от серий газетных колонок, периодических изданий и пр.
  • Машинное обучение загрязняет атмосферу сильнее, чем автомобили и самолеты
    +2
    Ну да, мы же не уверены до конца, там мало что понятно, нужно больше экспериментов, научные наблюдения.
    Только вот планета у нас всего одна для экспериментов.
  • Машинное обучение загрязняет атмосферу сильнее, чем автомобили и самолеты
    +5
    См. конец 2-й страницы работы. Они используют соотношение фунты CO2 на киловатт*час по США (от EPA — U.S. Environmental Protection Agency). У них же в работе на той же странице есть таблица с пропорциями используемых источников энергии для США, Германии и Китая. На ней видно, что США не слишком экологична в этом плане — меньше всего возобновляемых источников энергии, в разы большая доля угля, чем у двух других стран.
  • Вышла бета-версия Odin — ещё одного языка программирования
    0
    Сейчас же все так любят микросервисы, а какая разница на чём они написаны — на вход JSON, на выход JSON
  • Что не так с нашим IT
    0
    Нассим Талеб вывел интересное эмпирическое правило («эффект Линди») согласно которому для оценки времени жизни технологии нужно продлить в будущее то время, что она уже используется. В 99% случаев это будет верно, потому что большинство новинок вытесняются вскоре другими новинками и только очень немногие закрепляются надолго. Поэтому колесо мы будем использовать ещё примерно 6000 лет, язык С — ещё примерно 50 лет, функциональное программирование — ещё примерно 70 лет и т.д.

    Поэтому в институтах нужно хорошо учить историю IT (почти как рассказывают Kevlin Henney, Robert Martin и Alan Key) с именами, идеями, концепциями, а также старые технологии, представляющие собой ортогональный базис главных идей. Из языков нужно учить LISP, SmallTalk и какой-нибудь диалект Algol (например C или Pascal). А специфику подтянуть либо по остаточному принципу на старших курсах, либо на факультативах. А то получается (как говорит Алан Кей) поп-культура, аналогичная тому как если бы студенты-физики не знали кто такой Ньютон и Паскаль и что они придумали. И такие студенты не будут изобретать заново микросервисную архитектуру, потому что будут знать, что ей уже лет 60.
  • Вышла бета-версия Odin — ещё одного языка программирования
    0
    А зачем делать крупные приложения на одном ЯП?
  • Трагедия Common Lisp: почему популярные языки раздуваются в сложности
    0
    Для человека неискушённого любое современное программирование одинаково дико выглядит — говорю как part-time школьный учитель информатики. Попробуйте объяснить что такое присваивание незнакомому с этим человеку, что x = x + 1 это норма и пр. И любой вообще ЯП требует понимания таких вещей как функция хотя бы на каком-то уровне, т.е. люди с тройкой по математике сразу идут лесом.
  • Трагедия Common Lisp: почему популярные языки раздуваются в сложности
    0
    Согласен насчёт С++. Я читал книгу Сайбеля по Common LISP, язык не больше большинства современных мейнстримовых, например Python (там на самом деле очень много всего) или Java. Но у него есть возможности, которых нет ни у кого, так что лично для меня это адекватная цена. Особенно с учётом того, что нотация для всех этих фич одна и та же — списки и её можно объяснить за минуту человеку с опытом программирования.

    Так что в этом смысле LISP (и диалекты) кардинально проще других ЯП (где нужно помнить много хитрых значков, отступов и ключевых слов и что они значат в том или ином контексте). В этом смысле он ближе всех к естественным языкам (русский, английский), где у нас есть очень маленький ортогональный базис (существительное, прилагательное, глагол, ..., грамматика) и множество предметных областей, включая саму лингвистику (как это похоже на мета-возможности LISP !).
  • Трагедия Common Lisp: почему популярные языки раздуваются в сложности
    +1
    насколько я знаю трагедия LISP была как раз в другом — он настолько гибок в смысле изменения синтаксиса (из-за гомоиконности и мощнейшей системы макросов), что люди очень легко начинали делать с нуля (и делали) то, для чего в других языках применили бы чужую библиотеку. В итоге получился зоопарк собственных решений и раздробленность сообщества.
  • Мифы и реальность ООП
    0
    Позднее связывание, полагаю. Вообще похоже, что для Алана Кея ООП немыслим без динамической типизации.
  • Возможности Python 3, достойные того, чтобы ими пользовались
    0
    чтобы у меня дженерик был не поверх любого типа T, а поверх только U[T] для фиксированного (или нет) U?

    Кажется, да.

    Много можно чего ещё скопировать из Haskell (и раздуться похлеще монстра C++), но задачи такой, как я понимаю, не стоит. Я просто имел в виду, что разработчики Python в сторону Haskell смотрят внимательно и заимствуются фичи оттуда давно, потому что list comprehensions в Python с 2000 года.
  • Возможности Python 3, достойные того, чтобы ими пользовались
    0
    В модуле typing вроде есть Callable? Т.е. функции высшего порядка вполне могут работать с этими аннотациями.
  • Возможности Python 3, достойные того, чтобы ими пользовались
    +1
    Clojure — интерпретируемый язык с динамической типизацией, но там есть библиотека spec, которая позволяет описать «схему» данных примерно как в Python, но в рантайме это всё проверяется на корректность. И также есть аннотации типов, которые позволяют указать тип Java и это влияет на производительность, потому что можно написать алгоритм, который будет работать только со списком Long, не задействуя рефлексию.
  • Возможности Python 3, достойные того, чтобы ими пользовались
    0
    Там есть Any, Union (sum type), дженерики и пр. Т.е. можно описать любой тип, даже сложную вложенную структуру или функцию. Можно создать свой кастомный тип.
    В общем Python списывает хорошее у Haskell ещё начиная со списковых выражений.
    подробнее здесь: docs.python.org/3/library/typing.html
  • Представляем Windows Terminal
    +2
    Я так понял, что они свой сделают.
    А вообще посмотрите на FiraCode

    P.S. Извините. Буду обновлять страницу перед тем как отвечать.
  • Лучший в мире язык программирования
    0
    Про «JS — это LISP» здесь подробно разобрано:
    journal.stuffwithstuff.com/2013/07/18/javascript-isnt-scheme
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    0
    Расшифровка есть?

    Текст выступления? Или перевод на русский?
    Насколько я знаю, ни того, ни другого нет.
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    –1
    И Алан Кей и Рич Хики говорят, что ещё не видели системы типов, которая бы помогала, а не мешала, и не причиняла бы боль. Очень возможно, что из Haskell/Rust/F# сообщества появится такая система типов. А до тех пор у нас будут void *, interface {} и пр. в языках, которые имеют статическую типизацию.

    Самая лучшая апологетика динамической типизации (не с ура-пофигистских позиций типа «а нафига типы?»), которую я видел, здесь:
    youtu.be/YR5WdGrpoug
    youtu.be/2V1FtfBDsLU?t=1143 (можно даже отсюда начать: youtu.be/2V1FtfBDsLU?t=1639)
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    –2
    У которых в названии встречается слово Context
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    0
    Возможно есть какие-то подходы лучше этого


    Вы в шаге от удивительного открытия.
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    +2
    Я бы в таком случае засунул вложенный цикл в функцию и вместо goto использовал return
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    0
    Думаю, что Джон МакКарти (отец LISP, 50-е годы) и многие другие великие и умные люди сказали бы вам много причин, по которым статический контроль типов не нужен.
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    0
    в комментариях ад — многоветочные дискуссии о том сколько ангелов можно инкапсулировать, куда и как

    посмотрите это видео:
    youtu.be/Tb823aqgX_0
  • Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
    +7
    Ну, его крестовый поход против goto увенчался успехом…

    А с учётом того, что он внёс значительный вклад в разработку Алгола, который является предком подавляющего большинства современных ЯП…
  • Стажировки — это пушечное мясо, чтобы затыкать дыры, а не “бесценный опыт и карьерные перспективы”
    +2
    Причем ИМХО самый огромный разрыв в программировании идет не между теми, кто умеет язык Х или фреймворк К, а между теми, кто умеет искать информацию сам и теми кто не умеет

    Подписываюсь под каждым словом.
  • Стажировки — это пушечное мясо, чтобы затыкать дыры, а не “бесценный опыт и карьерные перспективы”
    +5
    Мне когда-то давно (я учился в школе ещё) подарили Linux на 6 CD (это была Fedora 6). Интернета не было, английский знал плохо. Т.к. не понял как установить сразу 2 ОС, сносил свой Windows 2000, устанавливал Fedora, игрался, потом обратно. Читал книги по Borland C++ Builder 6, натыкивал в редакторе форм калькуляторы и текстовые редакторы и думал, что что-то умею в программировании.

    Потом уже студентом работая инженером-прочнистом (мои несколько месяцев работы по специальности) в одной известной авиастроительной компании я ждал пока освободится лицензия из пула на препроцессор для расчётной программы. Другие навострились вручную править текстовые файлы с описанием задания на расчёт. Мы заходили из Windows по удалёнке на сервер с Solaris. Там был старый Python (2.4, кажется). Марка Лутца я к тому времени уже некоторое время почитывал. Но как-то не шло. А в этот день попёрло (и с тех пор не перестаёт) — используя только встроенную справку (английский я знал уже очень хорошо) я написал свой консольный препроцессор для этих текстовых расчётных файлов, который облегчал пару типичных операций.

    Сейчас занимаюсь FPGA, но всё тесно связано с программированием. Приходится и сервера на Linux тюнить и курить Майкла Керриска с недрами Linux (то чувство, когда лучшим справочным материалом по нужному механизму оказывается статья Google Project Zero про уязвимость в нём).

    Было трудно, очень трудно, но это так интересно, что ты отдаёшь совершенно неразумное количество времени своей жизни на это, потому что действительно любишь.

    На работе видел людей, которых пытались научить программировать, сам менторствую иногда. Есть 2 типа людей — те, которым это интересно, у них склад ума и характера соответствующий и те, кто способен преодолевать трудности, и все остальные. Типа тех 7-классников, которых я заставляю (2 часа учу в школе) искать максимум в массиве/списке и они в первый раз в своей жизни, скрипя мозгами придумывают этот алгоритм, а я не подсказываю им, на это может уйти час… а через год, в 8-м классе некоторым рассказываешь про функции высшего порядка и они ПОНИМАЮТ, рассказываешь про недостатки наследования, а они говорят, что уже на них напоролись в своих pet-проектах…
  • Объектно ориентированное програмирование в графических языках
    0
    Главное чтобы работало. Но ООП очень большая тема, чтобы её можно было раскрыть в рамках мануала, это одна из трёх главных парадигм программирования на данный момент и было написано уже штук 10 книг, которые можно назвать классическими, притом развитие не стоит на месте, те же принципы SOLID были предложены в начале 2000-х. Да, это просто формальное проговаривание лучших практик уже сложившихся к тому времени, но до этого проговаривания большинство им не следовало (боюсь, сейчас ситуация не сильно поменялась) и в большинстве материалов они не были изложены.
  • Объектно ориентированное програмирование в графических языках
    +4
    Я отвечал с чисто теоретической точки зрения на вашу реплику про «инкапсуляцию, наследование, полиморфизм». Я не знаю кто это придумал, но в большинстве российских (и, кажется, не только российских) вузов с этих слов начинается разговор про ООП и я не уверен, что это правильное начало разговора. По сути большинство вузов обучает не ООП и не программированию, а C++, Java или C#.
    Ярко показывает степень разрыва в мышлении тот факт, что Алан Кей считает LISP «главной идеей в Computer Science», тогда как большинство преподавателей в вузах если и слышали это название, то ничего не понимают в функциональном программировании. И уж совершенно точно в вузах студенты не слышат ни слова про SOLID, про то, что наследование — очень опасная штука и её нужно использовать очень осторожно (о чём написано даже в «банде четырёх»). Там, блин, задают домашние задания на придумывание идиотских иерархий классов. Даже полиморфизм они зачастую неспособны объяснить без наследования.

    Когда-то я жалел, что не закончил вуз по программистской специальности. Сейчас — не жалею. Я закончил лингвистический класс гимназии и (спасибо Наталье Михайловне) знаю английский достаточно хорошо, чтобы слушать и читать Роберта Мартина, Мартина Фаулера и пр. в оригинале, а не преподавателей российских вузов, многие из которых вообще ни разу в жизни не занимались профессиональным программированием и переписывают друг у друга из учебников и методичек одну и ту же ересь десятилетиями.
  • Объектно ориентированное програмирование в графических языках
    +4
    Создатель ООП Алан Кей с вами бы не согласился:
    «Я считал объекты чем-то вроде биологических клеток, и/или отдельных компьютеров в сети, которые могут общаться только через сообщения.»
    «Мой опыт в математике заставил меня понять, что каждый объект может иметь несколько алгебр, они могут объединяться в семейства, и это может быть очень полезным.»
    «Одна из ключевых идей: система должна продолжать работу во время тестирования о особенно во время произведения изменений. Даже крупные изменения должны быть поэтапными и занимать не больше доли секунды.»
    «Позднее связывание позволяет с меньшими усилиями встраивать в проект идеи, которые возникли позже в процессе разработки (по сравнению с системами с более ранним связыванием вроде C, C++, Java, и пр.)»
    «Я не против типов, но мне не знакома ни одна система типов, которая не вызывала бы боли. Так что мне все еще нравится динамическая типизация.» — Алан Кей за динамическую типизацию.
    «ООП для меня это сообщения, локальное удержание и защита, скрытие состояния и позднее связывание всего. Это можно сделать в Smalltalk и в LISP.» — а наследования в Smalltalk не было вовсе.
  • О том, как Гарри Поттер формирует Российское образование, естественно не туда, куда нужно
    +1
    Мы говорим про массовое образование, которое всеобщее. Средний IQ составляет около 100 (они специально так шкалу проградуировали) — о каком проектном мышлении и создании новых реальностей идёт речь, ау!!! В массовом образовании речь идёт о том, чтобы научить читать, писать, не совать пальцы в розетку и хоть чуть-чуть понять как много же ещё всего есть неизвестного.
    Проектная деятельность в ФГОС… как там было в одной умной старой книжке? «не бросайте жемчуга вашего перед свиньями»
  • Мне было видение… Откровения нового Нострадамуса
    +1
    Т.е. сами себя вы не поддерживаете?
  • Чудеса упаковки от Microsoft: ядро Linux в Windows 10 и движок IE внутри Chromium Edge
    +4
    А она сейчас прямо такая хорошая? Старое железо (особенно всякие хитрые enterprize/embedded штуки) под новыми Windows пробовали заводить? А наоборот?
  • Джо Армстронг об Elixir, Erlang, ФП и ООП
    +1
    Кстати, Роберт Мартин постоянно говорит, что ООП не противоречит ФП:
    youtu.be/7Zlp9rKHGD4?t=2984
  • Резюме того парня
    +3
    Мне почему-то кажется, что специалист не стал бы «лечить по фотографии» и отказался бы участвовать в этой «ролевой игре»
  • Blazor перешел из стадии эксперимента в Preview
    0
    Интересно, скоро ли привязки для F# появятся…
  • Crew Dragon взорвался
    0
    Но достаточно ли точны, чтобы поставить на это жизнь человека? Я считаю, что нет и натурные испытания необходимы (хотя их требуется гораздо меньше, чем раньше — эти программные пакеты избавили нас от всяких макетов в аэродинамических трубах и пр., но это этап поиска решения, а не финальной проверки)
  • Почему язык Go плох для НЕумных программистов
    +3
    Бартош Милевски давно всё объяснил: «либо у вас динамическая типизация, либо generics, а если у вас их ещё нет, то скоро будут»