• Немного технической лирики о C++ Tools от JetBrains, и при чем тут единороги
    0
    Тыкал палочкой CLion пару лет назад. Во-первых, на кодовой базе хромиум (CentOS 7.2, 8 core, 32 Gb) он умер. Во-вторых, проект поменьше он распарсил через 15 минут, но лагает даже при передвижении курсора. В-третьих на темплейтном коде он подчёркивает полностью всё после ошибки. Нетбинс все проекты поднимает на раз и там можно свободно работать. Кстати, у них свой парсер, он понимает примерно 80% с++14/17 кода и не тормозит. Если апач не сольёт с++ плагин, то лучше ничего не надо.
  • Начато производство корпуса космического корабля «Федерация»
    –4
    Ну следующая итерация это спаять корпус из жести вместо аллюминия.
    Что-то царь просчитался, надо было перенести срок на 2024 год. Ну ещё есть время принять тяжёлое решение. База на луне уже есть, будет и педерация.
  • Суверенный интернет — за наши деньги
    +2
    Здесь ключевое слово — госбюджет, всё остальное вторично. Часики тикают, свалит лилипутин, придёт его преемник, но уже со своими вурдалаками. Нужно воровать усиленными темпами, а откуда? Для чиновника только госбюджет. А запретить что-то технически с таким уровнем компетенции и воровства нереально.
  • Алан Кей: как бы я преподавал Computer Science 101
    +2
    Кей был автором объектного подхода, а не ООП. ООП это более поздний выродок Грейди Буча и пр. Но это ничего не меняет. Убогость объектного подхода к вычислениям (и ООП позднее) это сочетание детского наива — ассоциировать состояние программы с объектами реального мира и ограниченности — вычислять следующее состояние передачей сообщений. Без жёсткой типизации и возможности трансформации программ. А С++ просто впитал это (в большой степени благодаря волне бучизма, читай идиотизма) и сейчас слава богу активно от этого избавляется, вводя, прежде всего, возможность работы с системой типов, а не отдельными типами(классами) и плясками вокруг объектов.
  • Великобритания планирует запретить end-to-end шифрование
    0
    Да я не про то, пароль ведь может быть от зашифрованных данных на диске. Я обязан его предоставлять? И если обязан и забыл, то тогда что? Нужно ведь доказать, что я пароль злонамеренно не говорю, а не забыл. Короче вся эта возня вокруг паролей такая же хрень как и с полиграфом. Ты можешь отказаться, но тогда тебя будут подозревать, что ты что-то скрываешь.

    С технической точки зрения все будут пользоваться плагинами/софтом с нормальным шифрованием и всё. Чтобы к тебе пришли за паролем нужно попасть каким-то образом под подозрение, а чтобы попасть под подозрение нужно посмотреть твой трафик. А если куча людей будет пользоваться «запрещённым шифрованием» ко всем не набегаешься.
  • Великобритания планирует запретить end-to-end шифрование
    0
    А если на самом деле забыл пароль, что делать?
  • Подборка штук на основе искусственного интеллекта для личного использования (1/3)
    0
    Пользуюсь только гугль транслейт, да и то редко. В остальных, лично для себя, не вижу никакого практического смысла, а на «вау-вау» жалко тратить время.
  • Новая SQLite ORM для C++
    +1
    Согласен, тут всё сильно зависит от внешних требований. Я разрабатываю и поддерживаю крупные (для одного человека) CAx/ERP/WRM проекты и могу использовать любые компиляторы, библиотеки, версии, и инструменты лишь бы был результат. ODB я использовал в связке только с MOC (правда ODB и QT слабо пересекаются благодаря тому же SRP ;-)) ). В общем, конечно, решение об использовании того или иного инструмента достаточно ответственное и порой становиться судьбоносным для проекта во всех смыслах.
  • Новая SQLite ORM для C++
    +1
    Кстати, спасибо за ссылку на IOD. Интересная тема.
  • Новая SQLite ORM для C++
    +1
    Там используется gcc с плагином, котрый генерит код для C++-компилятора. Сам инструмент легко встраивается в любую IDE в качестве Pre-Build step, как МОС и другие подобные. Я написал два крупных проекта (две специализированных CAD/CAM/CAE системы c зачатками ERP и warehouse management, где БД использовалась в качестве хранилища данных) с использованием этой ORM и использовал практически весь арсенал библиотеки. Серьёзных багов не встретил. Очень удобно быстрое переключение между целевыми БД, для отладки SQLite, а для продакшн PostgreSQL, например.
  • Новая SQLite ORM для C++
    +1
    Не обязательно. ODB pragma language

    struct User{
        int id;
        std::string firstName;
        std::string lastName;
        int birthDate;
        std::shared_ptr<std::string> imageUrl;      
        int typeId;
    };
    
    #pragma db object(User)
    #pragma db member(User::id) id
    #pragma db member(User::firstName)
    #pragma db member(User::lastName)
    #pragma db member(User::birthDate)
    #pragma db member(User::imageUrl);      
    #pragma db member(User::typeId)
    
    struct UserType {
        int id;
        std::string name;
    };
    
    #pragma db object(UserType)
    #pragma db member(UserType::id) id
    #pragma db member(UserType::name)
    
    /*
    Можно даже так сделать:
    
    #ifdef ODB_COMPILER
    #  include "user-pragmas.hxx"
    #endif
    
    или из командной строки:
    --odb-epilogue  '#include "user-pragmas.hxx"'
    
    */
    


  • Новая SQLite ORM для C++
    +1
    Спасибо за развёрнутый ответ с примерами. При чём тут SRP? Pragm'ы это разметка класса для внешнего инструмента автоматически строящего необходимый код для доступа к БД. Тот код который вы пишите руками в своей реализации ORM.
  • Новая SQLite ORM для C++
  • Чем меньше, тем лучше — о возможностях языков программирования
    +1
    Абсолютно согласен, помесь академического бреда, баек и заблуждений юного программиста не имеющих отношения к реальному положению дел. Пугалки в стиле «юный программист не может избрать правильный дао для решения задачи, потому что некоторые языки мультипарадигменны».
  • Разрушаем мифы о статическом анализе кода
    0
    Я боюсь, что это Вы не в курсе, что такое ИИ? И зачем-то его сюда прилепили. Паттерн — это характерный фрагмент PT/AST, который можно детектировать. А текущее состояние технологий, как и Ваших знаний, — говённое, раз Вам кажется, что поиск деревянного патерна это задача ИИ.

    Про второй Ваш, с позволения сказать тезис, даже говорить не буду, потому как Вы не поняли о чём речь.
  • Разрушаем мифы о статическом анализе кода
    0
    «Динамический и статический анализ это просто две разных методологии, которые дополняют друг друга.» — согласен только с этим, всё остальное — бла-бла-бла. Действительно, статический анализ кода, если уж он введён в процесс разработки, должен выполняться регулярно, как прогон тестов и т.д. Но ценность его работы уменьшается экспоненциально в зависимости от кол-ва итераций разработки и квалификации разработчиков.

    Сам по-себе анализ программистских багов мало полезен, нужна цельная система анализа кода, система для выделения целых кусков кода, и не только «ошибочных», а, например, кандидатов на рефакторинг, кандидатов для реализации в виде стандартных паттерн проектирования и т.д. А пока, статистический анализатор, полезен, только при разгребании унаследованного кода.
  • Коды возврата & исключения
    0
    Не знаю почему минусуют. Но как раз в эрланге основной принцип: «не можешь сделать — умри» плюс гибкая система супервизоров и апгрейда на лету и есть более надёжная альтернатива «распространению ошибок» по-всему приложению. Вообще эрланг это скорее язык управления, а не вычислений. К сожалению в С/С++ такое применимо только в специфических приложениях.
  • Поисковик Torrtilla.ru — отчет за полтора года
    +1
    К расширению для хрома есть пожелания:
    1. Автодополнение/запоминание поисковых фраз
    2. Открывать новую вкладку при поиске только если текущая не тортилла (можно включать/выключать в опшинс)
  • +1 «ГЛОНАСС-М», итого полный комплект
    0
    А в какой предвидиться, по-Вашему? Может Вам туда нужно? Да и привкуса совка там, возможно, нет (как впрочем и космической индустрии, уже).
  • Прикручиваем SageTex к LyX под Windows
    0
    Хотел приобщиться к прекрасному, но VMware Player сказал: «Failed to open virtual machine: Failed to query source for information.» при загрузке sage-4.7.1.ova файла.
  • Марковские сети (MRF) на примере «умной» сегментации
    +3
    "...«ising prior» (к сожалению, русский эквивалент установить не удалось — кто знает, подскажите)..." — это априорная вероятность Изинга. В честь Эрнста Изинга, поэтому писать нужно с заглавной буквы. Есть ещё априорная вероятность Джеффри, например.
  • Еще Одно Руководство по Монадам (часть 1: основы)
    +1
    Не знаю приводились ли эти материалы по монадам (на английском):

    bartoszmilewski.wordpress.com/2011/01/09/monads-for-the-curious-programmer-part-1/
    bartoszmilewski.wordpress.com/2011/03/14/monads-for-the-curious-programmer-part-2/
    bartoszmilewski.wordpress.com/2011/03/17/monads-for-the-curious-programmer-part-3/

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

    bartoszmilewski.wordpress.com/2011/07/11/monads-in-c/

    Да и вообще блог Милевски очень интересное чтиво.
  • Монады с точки зрения теории категорий
    0
    Всё-таки дислексия — печально.
  • Монады с точки зрения теории категорий
    0
    Вы больны дислексией. Я дал отзыв о статье, а не о теории категорий. С теорией категорий я знаком и, более того, использую в своих проектах. А такие умники как Вы учат наизусть талмуды не потрудившись их понять, по одной простой причине: страсть к моде и попугайству заложены с детства. Общаться далее не наумерен: убогим — убогово.
  • C++0x. Не вошедшее
    0
    С полнотой согласен, только в случае ошибок в темплейтных конструкциях (стл, буст, локи) вы получаете список наведённых ошибок, а это уже не камильфо. Одно дело когда чёрным по белому написано — ошибка в такой-то строке вашего файла, а далее, опционально, прицеплены все последствия этой ошибки и совсем другое — лоскут неудобочитаемого текста в котором ты сам должен найти первопричину. STLfilt это хорошо, но он работает только для стл-ошибок, а если я использую буст.мпл или ещё страшнее — буст.прото тогда как? И самое главное, что эту ситуацию кардинально никак не исправить не вмешиваясь в стандарт языка (концепции и были призваны это сделать).
  • Беспорядки в Англии и автоматическое распознавание лиц
    +3
    Ну-ну. ждём полной автоматизации — автораспознование лиц — автосуд — автоприговор — автосрок (10 лет строго режима) — автозак — автотруд на свежем воздухе — автооправдание через три года из-за ошибки в ПО (внимательно нужно читать еулу) — автокассация — автоосвобождение. Об этом мире я не перестаю мечтать.
  • Монады с точки зрения теории категорий
    –1
    И что? А изложено так будто только что разобрались и решили поделиться этим знанием с окружающими. Я ещё раз подчёркиваю, что Вы написали не понятно что — это не научный доклад, и не научно-популярная статья, и даже не ознакомительный материал — на пальцах. Простите, но теория ради теории ценна только для теоритиков, для практиков ценно применение. Я понимаю гугль, мэп-редьюс и всё такое, но это готовое решение и им успешно пользуются люди даже не подозревая о наличии монад. От статьи, лично я, ожидал следующего: В разработке ПО часто встречается следующая задача — далее формулировка, для её решения в относительно общем виде мы применим теорию категорий — объяснение — как, с попутным изложением материала из теории категорий с привязкой к конкретной задаче. Вы же предпочли запостить ссылку на опыт знакомства с теорией категорий.
  • Монады с точки зрения теории категорий
    +3
    На мой взгляд этой статьей Вы ещё больше всё запутали, нет с точки зрения математики и теории категорий всё верно. А вот с точки зрения прагматики и конкретно разработки ПО нет ничего. Какие задачи в разработке ПО позволяет решать теория категория вообще и монады в частности? Какие аналогии между категориями(монадами) и конкретными программистскими решениями просматриваются? Как мне, проектировщику ПО, эти категории(монады) помогут в моей работе?

    С точки зрения математики всё ясно — это ещё один уровень абстракции позволяющий оперировать объектами разной математической природы с помощью единого матаппарата. С точки зрения утилитарной непонятно ничего. Придать концептуальную чистоту хаскелю — это локальная проблема адептов и авторов хаскеля — к индустрии производства и разработки ПО это отношения не имеет. Вот Вы упомянули мэп-редьюс и все как-то оживились, правильно, — все знают, что мэп-редьюс это реальная технология, которую можно пощупать и, более того, использовать в своих решениях — значит есть смысл разбираться. Никто, из действующих разработчиков, не будет изучать технологию, я уж не говорю о её теоретических основах, если не будет знать конкретно — какое множество задач можно с её помощью решать. Это не из снобизма, или тупости — инженерам-разработчикам слишком много нужно держать в голове, и порой это знания эмпирические и эвристические, которые невозможно вывести логическим путём из теории, а только запомнить и научиться применять на интуитивном уровне. Просто нет ни времени, ни ресурсов на усвоение чисто-теоретических знаний. Вот если Вы в начале статьи дадите перечень практических возможностей и круг решаемых задач, тогда для читателя не будут страшны ни Ваши стрелочки, ни эндоморфизмы, ни прочие математические кунштюки.

    И при этом, Вы не обижайтесь, изложено всё очень сумбурно — такое ощущение, что Вы сами недавно разобрались с этим предметом и решили представить свои умозаключения в публичном виде. Это похвально, но Вы указали лишь реперные точки своих умозаключений, опустив рассуждения и это делает изложение ещё более запутанным, чем если бы это было описано чисто математическим языком. К сожалению это не только Ваша беда, таким подходам грешат практически все «переводы» академических работ, выкладываемых, якобы для научно-популярного обозрения — ни рыба — ни мясо. Для научной статьи слишком фривольно, для научно-популярной — слишком не понятно — и не понятно — зачем? — В чём практическая польза от использования теории категорий в повседневной жизни, в данном случае, разработчика ПО.
  • Патентная драма со звездами
    +2
    Добро пожаловать в реальный мир. Или Вы думаете, что на рынок придёт компания-изобретатель и все участники рынка удивятся, попеняют себе, и потупив очи уйдут с рынка? Да ничего подобного, более того — они даже не будут конкурировать с ней в профессиональном плане — они её либо купят, либо закроют, либо милостиво выделят кусок пирога, если будет послушной. И так будет до тех пор пока основным критерием успешности компании будет прибыль. Именно о ней родной, кстати, эффективные менеджеры трещат на хабре, да и не только, не переставая.
  • Патентная драма со звездами
    +2
    Вот-вот. А то опять началась это бесконечная хаброболтовня о богомерзких патентах. Гугль «выбился в люди» и всё что ему нужно было сделать это следовать своему дао, которое ему разрешили иметь старшие товарищи. Гугль начал совать свой нос в уже поделенный рынок и сейчас у него одна надежда, что ему позволят иметь поисковик и интернет-причиндалы, а то ведь у майкрософт есть бинго.

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

    Что касается изобретений и инноваций в гугле, майкрософте, айбиэм или оракл, то это вздор — эти компании уже давно ничего не изобретают сами, они лишь покупают изобретённое мелкими компаниями, да финансируют рынок венчурного капитала, который кстати тоже пузырь не хилый с его то непредсказуемостью.
  • Достала избыточность С++
    +1
    Формальго-да. Фактически профессионализм, в смысле глубоко знания, слабо кореллирует с зарплатой.
  • Достала избыточность С++
    +4
    Ну наверное не «был», а «считал себя» профессиональным С++ программистом — это разные вещи, поясняю на всякий случай — вдруг вы «были» ещё и «профессиональным логиком».
  • Достала избыточность С++
    +4
    "… Скучно стало в академ кругах, и ай да еще:
    Тут тебе и rvalue-ссылки &&, и constexpr, и шаблоны с переменным количеством параметров. Без этого ж не кодилось.

    Зачем так усложнять. Зачем все эти шаблоны шаблонов. Перегруженные шаблонные операторы приведения типа..." — Понятно, что Вам не нужно, всё, что относится к мета-программированию, а для меня, например, использования буст.прото и разработка своего эмбеддед DSL для задачи — это, то с чего я начинаю работу над проектом или его частью. Видимо, те проекты, которые разрабатываете Вы уместнее было бы делать на джаве или си-шарпе — безо всякого сарказма. Если Вы затрудняетесь расстановкой спецификаторов и модификаторов, то нужно использовать код-сниппеты, которые генерят шаблонные декларации и имплементации методов и классов или использовать какую-нибудь UML — систему проектирования.
  • Вопрос: Так что же? Мы не инженеры?
    0
    Вот-вот. У меня, лично, да и у всех моих прошлых и нынешних работодателей, не возникает вопроса: «кто я»? Потому что в дипломе, полученном честным путём во времена СССР, чёрным по белому написано: специальность: Инженер-системотехник (Вычислительные машины, комплексы, системы и сети). Собственно этим инженером я двадцать лет и работаю. И если кому-то кажется, что он садовник, то может быть он неверно выбрал специальность. А хабр-такой хабр, здесь таких садовников как г… за баней, это точно.
  • Google testing framework (gtest)
    +1
    В С++0х не вкдючили и более серъёзные вещи, например, концепции за которые ратовал сам Страуструп и просил их включить хотя бы как опшионал. Не включили модули, хотя всем очевидно, что это как раз то, чего не хватает с и с++, и вот это как раз нисколько с/с++ не испортило бы. Первое сильно продвинуло бы вперёд метапрограммирование и параметрический полиморфизм вместо стандартной модели наследования и ад-хок полиморфизма, а второе позволило бы навести порядок с единицами трансляции и заголовочными файлами.
  • Беззамочные алгоритмы: ненастойчивый кэш
    +1
    Разбираться в каком месте косяк у Вас мне тоже лень. Поэтому славянофильские определения с переводом:

    Без ожиданий (wait-free)
    Самая строгая гарантия прогресса. Алгоритм работает без ожиданий, если каждая операция выполняется за детерминированное количество шагов, независящее от других потоков.
    — Wait-freedom is the strongest non-blocking guarantee of progress, combining guaranteed system-wide throughput with starvation-freedom. An algorithm is wait-free if every operation has a bound on the number of steps the algorithm will take before the operation completes.
    Без блокировок (lock-free)
    Для алгоритмов без блокировок гарантируется системный прогресс по крайней мере одного потока. Например поток, выполняющий операцию сравнение с обменом в цикле теоретически может выполняться бесконечно, но каждая его итерация означает, что какой-то другой поток совершил прогресс, т.е. система в целом совершает прогресс.
    — Lock-freedom allows individual threads to starve but guarantees system-wide throughput. An algorithm is lock-free if it satisfies that when the program threads are run sufficiently long at least one of the threads makes progress (for some sensible definition of progress). All wait-free algorithms are lock-free.
    Без препятствий (obstruction-free)
    Самая слабая из гарантий. Поток совершает прогресс, если не встречает препятствий со стороны других потоков. Алгоритм работает без препятствий, если поток, запущенный в любой момент (при условии, что выполнение всех препятствующих потоков приостановлено) завершит свою работу за детерминированное количество шагов.
    — Obstruction-freedom is possibly the weakest natural non-blocking progress guarantee. An algorithm is obstruction-free if at any point, a single thread executed in isolation (i.e., with all obstructing threads suspended) for a bounded number of steps will complete its operation. All lock-free algorithms are obstruction-free.

    Поэтому автор описывает именно алгоритмы без блокировок (не путать с неблокирующими алгоритмами). Алгоритмы исполняются без ожиданий на отдельных процессорах и обращаются к отдельной памяти. Ну а алгоритм без препятствий обеспечивают стандартные примитивы для реализации многопоточности.
  • Потоко-безопасная ленивая инициализация в C++
    +1
    В с++0х пофиксили нереентерабельность:
    «If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.»
    но осталось неопределённое поведение для рекурсивной инициализации:
    «If control re-enters the declaration recursively while the variable is being initialized, the behavior is undefined.»
  • Apple опубликовала официальную позицию по файлу Consolidated.db
    0
    «К счастью, корпорации не устанавливают законы в государствах.»
    Но всеми силами к этому стремятся. -)
  • «Таблетка» от iPad-а. Почему iPad не нужен врачам
    0
    Т.е. единственный сценарий — заменитель папки с историей болезни. Тогда не понятно при чём тут стерильность, айпад не более не стерилен, чем сотовый телефон или посетители в палатах. При таком сценарии, да, айпад более чем удобен и в нынешнем состоянии. Но, возвращаясь к хрупкости, имеем дилемму: бумага и карандаш, которые всегда в работоспособном состоянии или айпад, который можно уронить или повредить, а также, который может просто сломаться. Вывод: носить с собой айпад и историю болезни с карандашом. Отсюда и выходит, что айпад это лишняя вещь, которую придётся дублировать старинными средствами.
  • «Таблетка» от iPad-а. Почему iPad не нужен врачам
    0
    Вопросом на вопрос? Лично не работал. У меня половина родственников медики: от главврача клиники до практикующих хирургов и не один не плакался на осутствие айпадов. Но вопрос не в этом — опишите сценарии использования айпада врачом в клинике? Ну за исключением очевидного сценария автоматизации документооборота.