- 1
- 2
https://youtu.be/A4Gu0lfIKU0
Нужно ли программисту изучать C++?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://youtu.be/A4Gu0lfIKU0
Нужно ли программисту изучать C++?
Какое только дерьмо не найдешь на ютубе.
C++ это кривая и дерьмовая высокоуровневая говнонадстройка над Си.
Начинать с C++ точно не стоит, потому что в итоге получаются какие-то говнокодеры, не умеющие ничего делать без трижды обдристанной плюсовой стдлибы и всяких там классов с шаблонами и эксепшенами. Лучше уж начинать с Си, потом немного потыкать в лисп с его макросами, а потом посмотреть на плюсовые темплейты и констэкспры, тогда-то дерьмовейщая суть говноплюсов будет ясна.
Что касается ООП в C++, то это просто сраное дерьмо. Понапридумывали каких-то паблик-приват-протектед наследований. Еще эта питушня с множественным наследованием и vtable, отсутствие метаклассов (RTTI - говно), отсутствие нормальных механизмов метапрограммирования (только какое-то кривое и убогое говно), отсутствие интроспекции, тьюринг-полные темплейты, не совпадающие с самим C++. Сраное парашное нагромождение разнообразной хуйни. Никакого базиса и ничего фундаментального в этому куске дерьма нет.
Можно же добавлять множитель к существующим. PHP = 2.6e5 пиздеца
В чём измеряется боль в системе Си?
Не знаю, как зовут несчастного, служащего эталоном боли в палате мер и весов, но его работе точно не позавидуешь.
начинать нужно с php, тогда получаются умные и грамотные программисты
если без шуток то начинать с С++ точно НЕ стоит.
Начинаешь с паскаля, потом асм, потом си, потом с++
Данная версия скрипта генерирует файл "plasma.png". В принципе, можно покрутить палитру и собрать анимированный "gif" или "apng", которые будут показывать анимацию, похожую на ту, которую выдавала оригинальная программа на "C--".
А это на Quick C--:
Да, языки разные.
М-м-м...
А jmp на функцию — это чтобы return был уже оттуда?
Я об этом не нашёл, но в спецификации сказано, что все переменные аналогичны регистрам (нельзя брать адрес, и их изменение не влияет на другие переменные), ещё сказано, что нельзя использовать вызов функции в выражениях.
> jmp на функцию — это чтобы return был уже оттуда
Да, как в ассемблере, если за вызовом функции стоит ретурн, можно заменить на jump, ещё можно хвостовую рекурсию делать:
“First few” — это январь и февраль. У них будет сдвиг на один день из-за лишнего дня в феврале.
Любой баг можно задокументировать как фичу.
Есть Sphinx C--, документацию по которому написал Михаил Шекер (г. Удомля, Fido: 2:5021/3.40 или 2:5021/3.111, E-Mail: sheker@char.ru).
Есть Quick C--, в разработке которого принимала участие команда GHC (в частности, Simon Peyton Jones, João Dias, Norman Ramsey).
Возможно, это совершенно разные языки. Нужно проверять.
1. Sphinx C--: https://github.com/jossk/c--sphinx
Автор Peter Cellik (CANADA).
Михаил Шекер и его товарищи что-то дорабатывали.
2. Quick C--: https://github.com/nrnrnr/qc--
акончил универ, программирую на С++ больше 10 лет, но полностью со всем согласен! Высшее образование не нужно для программиста (только если хочешь эмигрировать). Математика не нужна (только если не пишешь научный софт).
Не гнушаюсь почитать про Html / CSS / JS. Работа на С++ будет всегда, но она УЖЕ не радует. Ощущение, что стоишь на месте, пока весь остальной мир несется вперед
Не учите С++, учите JavaScript + React!
Представилось, как сишарпик ножками крутит педали в своем трехколесном велосипеде дырчит распыляя свои слюни на все вокруг, таранит взрослых в ноги и бибикает.
Чего не пишут на плюсах? Дектопных приложений?
А так, подобное название видео -- полнейшая глупость. Из разряда "нужно ли врачу изучать офтальмологию". Если ты проктолог, то, конечно, не особо она тебе понадобится.
такое говно
Крис же смог и ты сможешь
Друзья! Не все рождены с одинаковым "IQ". Я вот глупее Эйнштейна и нисколечки этого не стесняюсь! И вам не нужно стесняться того, что никогда вам не стать программистами на С++!
Будьте заправщиками картриджей, электромонтёрами или "программистами" на "PHP" или "JavaScript" и не отчаивайтесь! Как говорится "не боги в горшки отливают": надо кому-то и улицы мести.
С++17 - 1400 страниц.
Ещё не догнали.
Какая большая у тебя страница.
А вообще это был сарказм. При его создании стремились максимально упростить описание, в результате язык получился неудобным. Из состояния экспериментального он так и не вышел.
А языками, описание которых длиннее, реально пользуются.
Специально для j123123: драфт стандарта в пятидесяти рулонах.
Вытирать жопу крестовым стандартом это примерно как вытирать жопу уже использованной туалетной бумагой, обмазанной чьим-то говном, которую в ex-USSR принято складывать в особое ведро. Ну т.е. такой вариант подойдет только в экстренных ситуациях, когда ты сходил посрать, вытереть жопу нечем, кроме как случайно оказавшимся у тебя в руках драфтом C++
+1. Никогда не понимал этого. Кьюриосити летит на марс, оптические сети в 10 терабит с мультипилексированием света, а грязную туалетную бумагу в унитаз нельзя спускать, а надо в ведерко
погугли
например вот
https://prv2.lori-images.net/0021808102-larger.jpg
В гермашке нет бизнеса или у вас для каждой фирмы строят отдельное здание?
https://gidroguru.com/wp-content/uploads/dostatochno-rasprostranennyy-znachok-v-obschestvennyh-sanuzlah.jpg
https://demotos.ru/sites/default/files/caricatures/2015-10-03-1443896685.jpg
http://i057.radikal.ru/1512/33/dcb4574b3adb.jpg
Выброс отходов на голову - это сильно. Туда клиенты ходят или крысы канализационные?
У русни не принято обращать внимание на какие-то объявления, которые "администрация" считает "правилами", поэтому для имитации бурной деятельности можно печатать любые глупости.
Поясняю. Увидел сотрудник администрации такое объявление в другой организации и предложил: "А давайте и у нас повесим".
-- Что будем делать, если враг против нас применит фенолфталеин*?
-- И мы применим!
----------
* Фенолфталеин применялся не только как индикатор щёлочи, но и как слабительное средство.
Ну хз, я всегда бумагу везде в униьаз смываю по-привычке, всё норм.
Што?
Мытьё полов в туалете и около входов - дело куда более грязное.
Ну а что, если на другую работу не берут - устраиваются на эту.
Кто-то собирает грязное бельё с роты солдат, чтобы отнести его в прачечную.
Кто-то меняет фановые трубы в домах.
Кто-то откачивает дерьмо из туалета пассажирского авиалайнера.
Кто-то выносит утки из-под пациентов.
Европейские принцессы срут только радугой? Или уборщики оперативно моют?
У этой хуёвины даже есть адепты, которые считают, что она более гигиенична, чем унитаз.
https://toilet-guru.com/quiz/quiz1.php
Я понимаю, если дом или закрытый офис, но в общественных местах напольные унитазы гораздо лучше, хоть и переходят у нас от них к нормальным.
Бля, богатый айтишник, накопи уже наконец на билет в белую страну и посмотри. Только не на привокзальный сортир (они тоже чистые, хоть и платные).
Ахааха, ну то-есть ты работаешь уборщиком туалетов?
Я думаю, просят админа. Ну сантехника же тоже техника
Техники безопасности?
А ещё особо одарённые памперсы в унитаз выбрасывают.
:)))))))
Выше не я был. И привычки киевской русни я во многом оставил.
Твои уши были закупорены сгустками плавленного сыра?
http://skuky.net/6703
Похоже на поддержку проекта с логикой на PHP и JS
Один раз на SQL, другой раз на бекенде и третий раз на фронте на JS.
А если она потом еще для мобильных приложений написана два раза (на swift и kotlin) то я просто пищу
P.S. Мне нравится, как в «Пейсбуке» регулярно депрекейтят старые API, а на их месте, как головы Гидры, вырастает куст новых.
Вирт стремился обеспечить простоту создания компилятора, потому что именно в создании компилятора для оберона, а не в программировании на нём, состоит его истинная дидактическая задача и предмет созданного виртом курса. Так что не удивительно, что он «получился» неудобным. Удивительно, что появившийся при таких же обстоятельствах Паскаль оказался популярным и даже пошёл в прод.
Notice: Undefined offset: 0 in /var/www/vhosts/guestinh_96852_0.lh.parking.ru/httpdocs/wp-includes/class-wp-query.php on line 3149
И http://govnokod.xyz/---comments/ тоже.
http://govnokod.xyz/%%
То ли дело "Zend Framework", который просто сообщает, что контроллер %% не найден (да и то только если включена отладка).
Всего-то в два раза меньше
А ведь есть еще спека Java Memory Model и стандартная либа итд
И никто не ноет
Поясните вот такую штуку:
void bar(Foo a) {
//тут a скопируется мне и будет вызван копирующий коснтруктор, верно?
return Foo(); //и тут тоже
}
даже если в кал конвешнеше все это делается через указатель на самом деле?
нет или да
>>/и тут тоже
нет
foo(Petux()) // тут он сразу же создается внутри и никуда не копируется
Petux p;
foo(p); //а вот так скопируется
тоже самое с возвратом
return Petix(); //не копируется
Petux p;
return p; //таки да
Очень интуитивно кмк
Если сработает NRVO, то таки нет.
Petux p;
p.coco();
return p; //таки да
Или оно вообще всегда действует если возвращается объект?
> объект
Скорее что-то сложнее одного-двух регистров.
В соглашении о вызовах прописано как возвращать большие структуры (указатель на буфер в родительском фрейме).
NRVO и RVO просто абузят это соглашение и срут сразу в этот буфер не создавая временный объект в своём фрейме.
джаве?) фуу
>>Шо такое JLS
https://docs.oracle.com/javase/specs/
Хеллоу ворлды понимать легко и на Java и на C++.
Как только ты столкнешься с многопоточкой, например, сразу придется понимать хеппенс-бефор и прочий JMM.
Так же и с плюсами: столкнешься с шаблонной магией и придется понимать больше
Ага, то есть этой магии в жаве таки нет? А почему? Как-то без этого говна обошлись?
Нет, если конечно твоя задача не будет звучать как "используйте класс ConcurrentLinkedQueue"
>>И до этого дожить еще надо.
Действительно, откуда у программиста, в эпоху когда у всех минимум 4 ядра, может возникнуть необходимость в многопоточке?
>>Ага, то есть этой магии в жаве таки нет? А почему? Как-то без этого говна обошлись?
Хуяча километры бойлерплейта (в джаве практически все проблемы так решаются)
А твой код всегда создает какую-то ощутимую нагрузку?
А в цпп без него обходятся? Почему же жава популярнее?
Любая многопоточная асинхронщина с коллбэками
Захотел файл скачать по сети в UI приложении и вот тебе асинхронщина (на случай если ты не в курсе: на треде, который обслуживает события UI, ничего тяжелого делать нельзя, иначе всё раком станет).
Ну давай, спроси меня "Кто пишет UI на джаве?".
Так это ты долбоеб. Пишешь все в отдельном треде, вот и все.
Что "всё", Дейкстра ты мамин?:)
Контролы кто потом обновлять будет, когда бэкграунд-таска завершилась? Во всех UI фреймворках есть какой-нибудь executeInUIThread(Function f);
Мне лично вот в этом асинхронном говне приходилось ковыряться
проверь
Преподы — это такие люди, которые не работали никогда программистами, но учат других?
Ну, я предпочитаю от таких людей воспринимать более абстрактное знание, по теории алгоритмов, например, в которой у них может быть компетентное мнение. Что они могут посоветовать в чисто прикладном вопросе, и откуда у них эти сведения — затрудняюсь предположить. Вероятно, от бывших студентов, которые стали «успешными» html-программистами, и пришли в свою альма-матер, чтобы повеситься на доске почёта и рассказать старушкам, как нынче программисты программируют. И представляете — среди них ни одного крестовика! Какое совпадение!
Если же речь идёт о хороших ВУЗах, где преподы пишут книги и участвуют на практике в разработке языков программирования, или хотя бы работают программистами, то им, конечно, позволительно иметь любое мнение, но я бы настороженно отнёсся к человеку, который раздаёт такие советы космического масштаба и космической же глупости в отрыве от практики, если только это не Мартин Одерски. Ничего себе, там правда СТАНДАРТ КАК ТАЛМУД?! О УЖАС! Ты, сёма, тогда виндой не пользуйся, там документация как талмуд. Да и устарела она, вот, говорят, новых версий больше не будет¹. Переходи на андроид.
¹ — https://www.forbes.com/sites/gordonkelly/2015/05/08/microsoft-windows-10-last-windows/#7520a053328c
Да хуй там, каждые полгода новая версия десятки.
Не знал, у коллег на десктопе боковым зрением разницы не замечаю ))
Разразил тебя гром, проверь. Почти все юниксовые ядра исторически монолитные, у Таненбаума был даже срач с Торвальдсом по этому поводу. А Hurd и ныне там.
оффтоп: было бы здорово, если бы Haiku таки вырвалась в массы. Была бы первая опен-сурс ОС с человеческим лицом.
Сразу вопрос: как там обстоят дела с поддержкой "Adobe Photoshop", "Skype", "MySQL", "Nginx", "PHP-FPM", "Notepad++"? Нахуй эта ОС вообще, я уже не спрашиваю.
/fxd
Проверил, действительно разразил.
Андрюха ругался, помню.
XNU;)
Хотя оно гибридное: там драйвера и TCP/IP всё равно в kernel space, хотя и в "верхнем" слове
> Windows будет использовать стратегию, аналогичную тому, как мобильные операционные системы разделяют основные компоненты для доставки более быстрых обновлений.
> Меню Пуск и встроенные приложения теперь отделены от основной ОС, поэтому пользователи могут получать обновления быстрее. Вместо того, чтобы ждать полного обновления Windows, Microsoft предоставляет небольшие автономные обновления для отдельных приложений.
¹ — https://www.comss.ru/page.php?id=4913
Просто улучшили пакетный менеджер свой видимо
Скоро и остальную многозадачность выключат.
Да и похуй, если честно. Не так часто они и нужны. Зато поиск есть.
Ого, почти как в гноме.
Сколько выпускников будет разрабатывать языки? И сколько будет юзать готовые?
Желательно все, хотя бы по разочку. Вирт вообще вон придумал курс, в котором разрабатывают ОС. Полезно это, чтобы потом юзать готовые. А препод на то и препод, чтобы больше других знать. Мне кажется, лучше когда препод предлагает стать лучшим, потому что стать средним программистом всегда успеешь. А про талмуд — это типа изначально совет быть посредственным. Это очень жизненный, практичный, приспособленческий, обывательский, полезный, злободневный, мудрый, поверхностный совет.
К слову, каноничный талмуд платный. К счастью, драфты очень близки к канону
Интересно, гццшники его покупают или пишут по драфту?
Реверс-инжинирят MSVC, майкрософт-то покупает небось.
Нет, как раз MSVC обычно больше всех кладёт на стандарт.
у него вовсе стандарта нету
Так я про это и говорю, претензия к объёму стандарта языка, который программисты даже не используют напрямую, является причиной не использовать язык. Ок.
Стандарт языка нужен:
• Разработчикам компиляторов
• Разработчикам статических анализаторов
• Разработчикам программ, которые по какой-то причине должны компилироваться в куче компиляторов на разных платформах
• Борманду, для участия в чемпионате мира по поиску УБ на скорость
Для такого специфичного документа 0.2% — хороший результат, а объём — только плюс.
То есть для всех разработчиков, чьи программы поддерживаются дольше одного цикла выхода обновлений к компилятору и ОС.
Этим хватит и документации к своему компилятору, а поправлять отвалившееся они будут за деньги заказчика, пусть себе ломается.
> пусть себе ломается.
С этой логикой мы имеем обновления раз в пять минут. Трафик жрётся, процессор греется, на компьютер/смартфон приходит новое приложение с исправленными багами, начинает тормозить, испускать баги, гробить систему...
Те упомянутые выше лучшие программисты пишут так, как будто у них нет интернетов, и фикс доедет до пользователя на дискете через год-два.
Да не так быстро меняются компиляторы и операционные системы.
В конце концов, стандарт нужен, только если тебе приспичило написать ОДИН код, который работает во всех компиляторах, а если тебе это не принципиально, можно наебенить макросов и обмазать ифдефами, вот тебе и кросс-то, и кросс-сё.
Охуел что ли?¹ Там куча² функций ровно для этой же цели: узнать, объявлена ли константа, существует ли в окружении функция, есть ли класс. Из-за отсутствия обратной совместимости между версиями пыхи есть даже полифиллы на пыхе, прямо как в богомерзком джаваскрипте.
¹ — https://secure.php.net/manual/en/function.defined.php
² — https://secure.php.net/manual/en/function.function-exists.php
Как мне в "Си" проверить существование функции во внешней библиотеке?
dlsym/GetProcAddress
В коде на С нет смысла это проверять. Если программа скомпилировалась, функции не может не быть, если же функции нет, программа не скомпилируется. (Ну, если ещё динамические библиотеки, но там примерно то же самое.)
Такую хуйню нужно проверять и встраивать в язык только когда у тебя нет вообще никакой статической проверки, и всё говно обваливается на тебя в рантайме. Тут ты угадал, да, именно этим и знаменит пхп.
Кстати да, чтобы этот один код работал, надо читать всё более и более свежие стандарты 🙂
Обидно то, что меняется может и нечасто, но время от времени что-нибудь да отвалится. При этом качественных изменений не происходит. Я ещё могу понять, что моя программа сломалась, когда вдруг реализовали возможность слушать песни, смотреть видео, многоядерность или многопоточность. Но сейчас ничего такого нет, а программы тормозят, ломаются, устаревают.
Это всё из-за несвободных программ, вот если бы все выложили исходники, сразу бы все баги нашлись.
Зато в GHC нету. Потму что их майкрософт спонсировал.
Нет, наоборот. Период полураспада программ на языках, для которых нету стандарта, обычно гораздо меньше.
То, что написано в соответствии с C++-98 ГАРАНТИРОВАННО будет прекрасно компилироваться даже последним шлангом (в худшем случае придётся переключить дефолтный стандарт на 98).
Вот когда у тебя реализация определяет спецификацию — вот где борьба с ветряными мельницами. Это особенно хорошо видно на примере Haskell vs Common Lisp.
Программа / либа на хачкеле перестанет работать сама по себе через несколько месяцев, если её не тыкать палочкой.
Программы, написанные на стандартном Common Lisp, обычно прекрасно работают даже если их 10 лет никто не трогал.
Поэтому я за brainfuck - сколько лет прошло, а все программы работают точно так же без изменений. И стандарт очень мал по объему и прост в реализации (хоть его официально и нет).
А что, пердолиться с C++, когда есть более адекватные языки -- это дело лучших программистов?
Если на брейнфаке писать, то вообще суперпрограммистом станешь что ли?
Заказчик не заплатит больше за то, что программист пердолился с памятью в сишках или развозил лапшу по коллбекам. Заказчику нужны функциональность, надёжность и поддерживаемость.
Обратное работает только в мире искусства. Осталось только найти тех, кто заплатит миллионы за длиннокод на крестах, который напитоне записывается в одну строку.
Ресурсы мозга ограничены, можно тратить их либо на предметную область и функциональность, либо на пердолинг с инструментами.
Я не говорю про С++, я говорю, про приведенный к нему аргумент: стандарт размером с талмуд. Этот аргумент как бы намекает, что препод, вместо того, чтобы хвалить другие языки, например, за ГЦ или другую систему типов, говорит о том, что кресты не надо учить просто потому, что это СЛОЖНО. Это же пиздец, блять. Более того, выше уже обсудили, что стандарт-то не нужен в общем случае для применения языка.
> Если на брейнфаке писать, то вообще суперпрограммистом станешь что ли?
Ну, машины тьюринга будешь знать хорошо, азы CS освоишь, потом в любом другом языке первым делом напишешь интерпретатор брейнфака -- да это уже, блять, больше теоретических знаний, чем у всех сотрудников ВЕБ-СТУДИЙ.
Это весомый аргумент.
Я же говорю, котируются только сложность предметной области и сложность программы. Сложность языка -- внутренняя кухня программиста, которая не на что, кроме как на ЧСВ не влияет.
> да это уже, блять, больше теоретических знаний, чем у всех сотрудников ВЕБ-СТУДИЙ.
А толку?
Физики-теоретики описывают реальность, математики-теоретики создают новую реальность, это понятно.
А писатели интерпретаторов брейнфака отправляются на свалку истории.
Так ты тогда и сравнивай с натиранием эбонитовой палочки и решением квадратных уравнений из учебника.
Или Кнут тоже на свалке?
А вот среди всяких людей искусства вроде художников, программистов, продавцов бургеров много тех, кто тешит своё ЧСВ тем, что узнал какую-то элитную фигню вроде устройства машины Тьюринга, правописание слова "эспрессо" или содержание томика [вставьте элитного автора]. И они переливают эти понятия из пустого в порожнее по семь раз на дню, не производя ничего нового. И таких как Кнут среди них в процентном отношении меньше. Мне так кажется.
Ну разве что потому, что в именно УЧЁНЫЕ отбор серьёзнее — потому что там нет денег. А в более-менее прибыльные области (торговля эспрессо, программирование) ползёт всякий сброд. Ты давай или приплюсуй к математикам всех учителей с дипломом, а к физикам всех заурядных инженеров, либо наоборот, оставь и там и там илиту — и увидишь, что на каждого хокинга примерно по одному кнуту и выйдет, процент получится одинаковый при правильной выборке.
Это я и сказал выше: брейнфак — лаба, хороший компилятор или язык (например то, что сделал страус) — вроде как даже поприкольнее достижение, чем открытие свойств графена, за которые дают нобелевку. А теория вычислимости, в частности проблема останова (напрямую связано с МТ) — это достижение общечеловеческого масштаба, повлиявшее на дофига что, в том числе на современную философию (например, на Эко). Достижения Штульмана и его философия, лежащая в основе движения за свободное программное обеспечение — это огромное философское достижение, связанное с теорией коммунизма и анархизма, и оно ещё оставит много-премного следов. Федеративные сети, криптография, электронная валюта — это чисто прикладные вещи, которые практически напрямую хуякс — и меняют политику, культуру, и остаются в истории они и их создатели не слабже, чем учёные. Так что я не улавливаю твоих сравнений.
Вернёмся к сути: упомянутый выше препод испугался талмуда. Стоит ли его защищать, даже по твоим меркам элитарной науки? Вряд ли. Стоит ли ЧСВшничать в обычной жизни с посторонними людьми из-за того, что ты знаешь С++? Вряд ли. Стоит ли его знать? Да. Стоит ли ЧСВшничать по этому поводу на специализированном форуме? По желанию. Думаю, да.
По той же причине, по какой Сёма называет им умение использовать Linux?
Да мы уже про другое как всегда говорили, не про стандарт. Я лично отвечал в терминах собеседника, что именно под этим подразумевает косарь-два-чирика-четыре — не знаю.
http://govnokod.xyz/_25054/#comment-400991
Именно поэтому "Сёма" против Штульмана.
Штульмана не нужно знать чтобы делать сайты на питоне
Люди выбирают С++ не для того чтобы выёбываться словами типа NRVO или "копирующий конструктор", а что бы управлять тем что у них в куче, а что в стеке например. Иногда это может быть важно (для игр, скажем, или для браузеров)
Другой вопрос что для многих задач это не нужно. И вот про это можно рассказывать: если что-то можно быстро и безболезненно написать на JavaScript, то _наверное_ лучше сделать это на JavaScript а не на С++:)
Препод мог бы объяснить минусы плюсов: сложную семантику некоторых операций, наличие UB (в некоторых языках его нет).
Аргумент "C++ слишком сложный" это плохой аргумент. Программирование это вообще слишком сложно.
Именно поэтому модель ООП из Турбо Паскаля лучше новой модели ООП в Delphi.
Ну почему Борланд так испортил язык?
Зачем мне виртуальные конструкторы?
Он говорил, что пользу от нововведений (вроде виртуальных конструкторов) в двух словах не описать.
Преподы всё правильно говорят. C++ - довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется - это хорошее зубрилко а не хороший программист. Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современно мире ценится разве что только среди прыщавых сосок
ГОСТЕВУХА САМА НЕ НАПИШЕТСЯ
НАПИШУ ЕЕ НА PHP+MYSQL+AJAX
ЗАЧЕМ МНЕ НУЖНЫ RAILS/ASP, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМИ
ЛУЧШЕ ЕЩЕ РАЗ ПРОЧИТАЮ PHP&MYSQL РУКОВОДСТВО ПРОФЕССИОНАЛА
Я ЧИТАЮ PHP&MYSQL РУКОВОДСТВО ПРОФЕССИОНАЛА ПО 3 РАЗА В ДЕНЬ
КАЖДЫЙ INДEX.PHP ЗАНИМАЕТ ДВАДЦАТЬ СЕКУНД
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ СИЖУ НА ФРИЛАН.СРУ
ПИШУ ЗАКАЗЧИКУ ЗДЕЛАЮ ЗА ОТЗIВ
ГОТОВЫЕ ГОСТЕВУХИ ЗАЛИВАЮ НА UCOZ
ТУПЫЕ ДЖАВАМРАЗИ ОДЕРЖИМЫ EJB
А Я СВОБОДНЫЙ ОТ ЗАДРОТСТВА ЧЕЛОВЕК
<?PHP ECHO 'HEЛЛO WOЯLD' ?>
$SUM = ($N & ($N % 2 ? 0 : ~0) | ( (($N & 2)>>1) ^ ($N & 1) ) );
ЛУЧШЕ Я ЕЩЕ РАЗ СОСТРЯПАЮ ГОСТЕВУХУ
И ЗАБУДУ ПРОВЕРИТЬ НА XSS И ИНЪЕКЦИИ
Я НЕ ЧИТАЛ PHP&MYSQL РУКОВОДСТВО ПРОФЕССИОНАЛА УЖЕ НЕДЕЛЮ
ПОЙДУ ПЕРЕЧИТАЮ
В PHP ВСЕ ПРОСТО И ПОНЯТНО
Warning: Cannot send session cache limiter - headers already sent
ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ
ПРОПИШУ В СКРИПТЕ ERROR_REPORTING(0)
КОКОКОКОКОКОКО
PHP — САМЫЙ ЛУЧИЙ ЯЗЫК ДЛЯ ВЕБ
КОКОКОКОКОКОКО
Все олимпийские спортсмены — дебилы, нужно просто решить непосредственную прикладную задачу: получить медаль. А они зачем-то тренируются. В современном мире тренировки ценятся только среди тупых качков.
Нет. Иначе бы у программиста была бы непосредственная задача -- получить сертификат (и заказчик такой "Давай, получай сертификат, я тебе за это заплачу").
Непосредственная задача -- занести пианино с первого этажа на десятый, вагон с углём разгрузить.
> Все олимпийские спортсмены — дебилы
Почему бы и нет? Они тренируются по дофига часов в день. Нет времени на жизнь; некоторые отказываются от детей из-за карьеры. Непомерные и неестественные нагрузки в некоторых видах спорта делают людей фактически инвалидами. Чуть менее, чем все рекорды уже побиты, без допинга хрен чего добьёшься. Максимум -- опередить других на тысячную долю секунды. В 30 лет не становишься магом, становишься пенсионером с покалеченным здоровьем. Если не был футболистом или не стал тренером -- идёшь работать на кассу в супермаркет, регулярно ходишь по врачам.
http://punkvibez.com/wp-content/uploads/2016/12/dildo.jpg
Не понимаю, зачем он это делает. Он же палится с первого комментария, какой бы юзернейм ни выбрал.
А нравится ли тебе, стертор, кушать кал?
И ты попробуй.
Это на каком диалекте? cons ровно два аргумента принимает, обычно второй из них является списком, но не обязательно. А 'vsl вообще не функция.
Возможно, вы имели ввиду
(cons 'vsl 'dead)
или просто
('vsl . 'dead)
VSL живее всех живых https://www.vsl.co.at/en
Например, сделать объект изменяемый в одном месте, и константный в другом.
Например, получить по сети 20 байт с известным лэейаутом и превратить их в структуру.
Например, гарантировать отсутствие stop-the-world GC в продакшене
>Например, получить по сети 20 байт с известным лэейаутом и превратить их в структуру.
Угу, а потом по сети приходит меньше - и получаем сегфолт при касте. Проходили. На жаве есть замечательный FilteredStream, который и со значениями переменной длины работает на ура.
программистам
>>Это типичная задача в разработке софта?
Да, такие задачи обычно возникают при разработке софта. При других видах деятельности они возникают крайне редко.
>>Угу, а потом по сети приходит меньше - и получаем сегфолт при касте.
Разумеется, ничего не дается бесплатно.
Используй JavaScript и JSON и всё будет бесплатно.
>>на жаве есть
Если ты про FilterInputStream, то превратить шматок памяти в структуру он, конечно, не поможет.
>Разумеется, ничего не дается бесплатно.
Ну и нахуя оно надо тогда?
>FilterInputStream
И пиздячишь в структуру. Что не так? Алсо как часто ты пакеты в сети трогаешь руками? каждый день по парсеру пишешь, умалишенный?
И из этого ты делаешь вывод что они ни у кого не возникают, ок.
>>спидозный?
А можно с нахрюкспика на русский перекладати?
>>Ну и нахуя оно надо тогда?
Потому что это будет быстрее и проще чем в джаве, что ты только что и доказал.
>>И пиздячишь в структуру. Что не так?
То-есть ты будешь вот так руками все 28 полей?
Это и есть пример когда сделать что-то на джаве "сложнее".
>> Алсо как часто ты пакеты в сети трогаешь руками?
Бывает
>с нахрюкспика на русский
Но хрюкает как раз русня.
>Потому что это будет быстрее и проще чем в джаве, что ты только что и доказал.
И пизданется при первом удобном случае, заодно оно не умеет в строки переменной длины. В результате или делаем постоянную длину (и лоховское ограничение на длину строки). или руками копипастим свой аналог FilteredStream.getString().
>Бывает
Ну а я бывает твою мамку за дойки трогаю, но какое отношение это имеет к работе? Призываю в тред Царя, который докажет, что только сишка может в перфоманс.
сёма, читай дальше свой "django ", и радуйся что кресты тебе не нужны
О, привет, роскомговно. Давно не виделись.
чем что?
> ту же задачу
какую?
> при тех же потребительских качествах
каких?
Подставляем (php; сделать гостевуху; чтобы работало) — получаем верное утверждение.
Подставляем (you-name-it; написать прошивку для бортового компьютера автомобиля в VR; чтобы код был поддерживаемым) — получаем бесплатный отсос от сёминой мамы.
Что пишут на C++ за деньги, школотрон? Или ты не знаешь ничего дальше скалы с жс? Я тебе подскажу немного: игры, дрова (если верить борманду, но там не совсем тот c++).
Мой знакомый прямо сейчас пишет, на крестах, для LG + Volvo или что-то такое, короче бренд техники с брендом автомобилей вместе делают бортовой компьютер для машины в VR, проецирующимся на лобовое стекло. В россии, в петербурге. Потому и привёл. Причём знакомый — совершенно заурядный программист, все знания получил в универчике в провинции.
> школотрон
у домохозяйки материнский инстинкт проснулся что ли?
> Или ты не знаешь ничего дальше скалы с жс
Ничего не знаю, абсолютно. Ни дальше ни ближе.
Ладно, подзаёб ты, пиздуй в игнор.
Гоблинский. Чую малолетних долбоёбов за версту.
сём, ну открой hh.ru и узнай блядь
дохуя чего пишут
C++ популярнее сишарпа
https://govnokod.ru/22283
Ну и ответь из глубины своего ануса опыта - чем c++ лучше остальных языков, какая у него ниша рынка, какой порог вхождения?
Свинка, а расскажи-ка про свой личный опыт программирования по работе. Сейчас окажется что это тут ты такой прожектер, а на деле - формошлеп или пехапешник.
Это я очень рад слышать
> чем c++ лучше остальных языков, какая у него ниша рынка, какой порог вхождения?
Про «лучше» тут говоришь только ты, остальные говорят про особенности. Я вообще кроме php не знаю языков, которые не были бы хороши в чём-нибудь своём. Вероятно, иначе они бы просто не появились. Да и php (это тот, на котором ты хуз делал) хорош в качестве языка для людей с психическими отклонениями.
С++ — это zero cost abstraction, ООП при отсутствии оверхеда на него ⇒ область применения: всё, где нужна достаточно высокая абстракция и модульность, но при этом крайне важна производительность (браузеры, операционные системы, игры, а также всё, где нужна максимальая производительность, но абстракции хочется чуть по-больше, чем в С (видеоконвертеры, графика, встраиваемые системы).
Это если максимально сужать, потому что на самом деле С++ до сих пор развивается, и количество существующего на нём кода позволяет использовать его более-менее где угодно, ну разве что, кроме веба. Хотя и там на нём пишут веб-серверы.
Порог вхождения — это не совсем понятный для меня термин. Есть, скажем, python. Какой у него порог вхождения? Написать на нём write-n-throw легко, а хороший поддерживаемый код очень сложно.
Порог write-n-throw у С++, знамо дело, выше, чем у любого динамического языка, а вот верхний порог, где речь о хорошем коде, собственно, у всех языков одинаковый.
> расскажи-ка про свой личный опыт программирования по работе
Ты это будешь каждый раз спрашивать, когда меня не будет на сайте больше недели? И этот человек ещё упрекал роскомговно, будто тот уходит от темы разговора.
Я пишу на Scala и JS в проекте про документооборот, ещё пишу на Java для Apache Camel кое-какие интеграции. Только начал в компании работать, ньюби.
Ну давай теперь ты представься, или засчитаем очередной слив домохозяйки?
Нет. Обработка исключений - не zero cost. Vtable - не zero cost.
Ваш КО
Другой К.О.
1) няшная не различает static, const и reinterpreter cast а плюсы различают
2) в плюсах есть рефернс, с ним удобнее получать сцылку на объект
3) шаблончики
4) структуры с конструкторами и десктрукторами (их еще называют "классы") дают тебе гарантию инварианта
Если не бросать - zero-cost в гцц и 64-битной венде. А в няшной setjmp и if (err) goto err даже в оптимистичном сценарии жрут такты.
> vtable
Как-будто в няшной полиморфизм бесплатный. Один хуй лепят или аналог vtable (меньше памяти но +1 чтение) или мешок указателей на функции (больше памяти но без оверхеда).
А что, существует такая схема обработки исключений в C++, где в оптимистичном сценарии совсем-совсем ничего не жрется?
На тех платформах которые я выше перечислил - совсем-совсем ничего.
Таблички, показывающие куда прыгать для обработки ошибки, юзаются только в момент раскрутки стека.
В теории конпелятор даже может свалить код для обработки ошибок в отдельные странички чтобы не засорять ими кеш и тлб во время нормальной работы.
Нет, я не понимаю. Если ты считаешь что "if (err) goto даже в оптимистичном сценарии жрут такты." то за счет какой компьютерной магии ты можешь без проверки условия узнать, бросать тебе или не бросать исключение? Как это делать без ветвления? Ловить пейджфолты если у нас malloc вернул NULL и мы туда разыменовались? Обрабатывать SIGFPE при делении на 0? Так это далеко не все сценарии
кстати да
структуры с указателями на функции сплошь и рядом
Linux (да почти все юниксы по сути), подсистема для работы с файловыми системами, куча "интерфейсов" с указателями на функции вроде read/write/stat/etc.
Лол, Ок, сколько стоит разработка аналогичной софтины на плюсах и других языках? В каких нишах выбирают плюсы? Ну кроме игор. Или для тебя фраза "сколько стоит разработка" тоже ничего не значит, т.к. весь код ты писал для себя по фану?
Я что, обязан каждого петуха тут помнить? И от какой темы я ухожу?
>пишу на Scala и JS
Хорошее комбо. Скажешь что порог вхождения в них одинаков?
Что я пишу я тебе только что сказал. Если ты про кресты — их я не знаю и никогда на них не писал по работе. Сколько что стоит я понятия не имею, не потому, что я не видел прода, а потому, что я совершенно не разбираюсь в деньгах, аналитике и менеджменте.
> сколько стоит разработка аналогичной софтины на плюсах и других языках
Сколько стоит сферическая корова в вакууме на С++ по сравнению с аналогичной сферической коровой в вакууме на НЕ С++? Охуенные у тебя вопросы.
https://imgur.com/a/1T0GRPf
> И от какой темы я ухожу?
Слив домохозяйки защитан. Видимо, сёме назвать нечего, особенно если учесть, что он еще и похапешник.
> Скажешь что порог вхождения в них одинаков?
Порог вхождения в Scala очень высок, потому что не у каждого есть 24 гб памяти
Нет, не одинаков, потому что у любого строго типизированного языка он выше, чем у языка с динамической типизацией. Кроме того, новичка в скале может смутить содомитское сожительство ФП с ООП. У нас в проекте используют ФПшный подход, поэтому порог ещё повыше, но если писать императивно, с var, for, присваиваниями, то кроме типов ничего, усложняющего вход в скалу по сравнению в js я особо не вижу. Ну разве что js в любом браузере есть, а для скалы ещё стек надо будет развернуть.
>Сколько что стоит я понятия не имею
>Сколько стоит сферическая корова в вакууме на С++ по сравнению с аналогичной сферической коровой в вакууме на НЕ С++? Охуенные у тебя вопросы.
Красноглазик, и хуле ты в тред влез-то? Сиди пиши код на языках которые знаешь. Хуле ты лезешь обсуждать язык который даже не видел?
ПХП я даже и не знаю почти.
Скале не нужно 24 Гб. Но это говноязык какой-то, он скорее для /с/, чем для продакшена. Нах он нужен вообще?
По такой логике ты вообще не должен нигде писать, кроме хохлосрачей, лол )
> ПХП я даже и не знаю почти.
хуз
> Скале не нужно 24 Гб. Но это говноязык какой-то, он скорее для /с/, чем для продакшена. Нах он нужен вообще?
А вот теперь ты пиздишь, про что не знаешь. Сиди пиши код бла бла бла
Хуз иньо вообще-то.
> Чем это лучше c#
Чем А лучше Б. Ты заебал с такими тупыми формулировками в отрыве от задач. Скала компилируется для джава-машины, а не для .NET
> котлина
Котлин как раз и испытал влияние скалы.
Твои вопросы обнажают неструктурированное месиво в твоей башке.
Помнится, раньше они и под .NET хотели работать, но потом передумали. Теперь вообще стало нинужно, ибо F#.
В итоге за пару месяцев изучил плюсцы параллельно с дизайном и реализацией опердени, а через полгода в городе открылся офис Я и моего знания плюсов вполне хватило чтобы стать там C++-разработчиком (там почти всё интересное на плюсцах).
С тех пор я пишу в основном на плюсцах.
Если ты прочитал две книжки Мейерса или, не дай бог, Александреску, ты уже знаешь больше, чем половина крестовиков.
Я начал с Александреску, после хачкеля легко идёт. Разве что первые главы с хаками удручают.
Задача - написание софта.
Скала для меня была слишком ФП и слишком сложной. Да, дела я имел с ней мало, но мне хватило. Котлин же - это немного причесанная жава.
>неструктурированное месиво в твоей башке.
Свинюшка, я на скале не пишу, так что хрюкни.
Минусы ЯП Scala:
1) Слишком ФП для Syoma
2) Слишком сложна для Syoma
Помню, пукан горел от парсер-комбинаторов: они выглядят как функциональные, но потокобезопасными не являются, ибо в кишках где-то мутабельные переменные создаются для удобства обработки ошибок парсера.
Вот, даже баг нашёлВ жопу такое счастье, доверия им теперь нету.
Вот Планкалкюль был без реализации. Кто на нём писал?
Нет. В хаски подобная проблема, если ты не пытаешься обмануть язык, невозможна. Если что-то выглядит функционально в хаски, оно и ведёт себя подобающе.
Каждый раз, когда я писал на скалке что-то более-менее функциональное, мне приходилось думать "а как решить это на Хаски?" и потом транслировать простые красивые концепции в говно из классов, объектов и имплиситов.
Серьёзно, я провёл эксперимент: попробовал как-то написать на скалке полноценный Maybe[T] с нуля, не подглядывая в реализацию. На хаски это занимает минут 15, на скалке я убил часа полтора и код всё ещё не компилялся, и ошибки компиляции мне было трудно понять.
Такая функциональщина мне не нужна.
Я говорю про кресты, на которых не пишу ⇒ я нуб и провокатор
Сёма хрюкает про скалу, на которой не пишет ⇒ это должно оправдать любую хуйню, которую он несёт
Понятненько
Ага.
Демагогия уровня Баропа. Он тоже на это напирал, всё про конкретику говорил.
А по факту есть реальные задачи, на которые нужны программисты. Вероятность попасть на космическую программу - 0.00001%, для драйвера - 0.01%, автоматизация свечного заводика - 1%, бизнес-программа для учёта финансов и документов в конторе "Рога и копыта" - 10%, сайт фирмы - 50% и т.п. Берём наиболее вероятные задачи, средние задачи, задачи около медианы - и получаем картину рынка.
Нежизненные задачи и рассматривать не стоит. А список жизненных конечен, и даже частично опубликован.
> по факту есть реальные задачи
Лол
Я же предлагаю взять РЕАЛЬНЫЕ конкретные задачи и усреднить по ним.
>Это я очень рад слышать
А у вас всё ещё преподают те кого на работу не взяли? Предложение махнуться учебными планами всё ещё в силе.
Ну мы же о пороге именно языка? А не общих умений программиста, которые нужны с любым языком?
Тогда у крестов он на порядок выше питоньего.
Ну да, как у любого языка с типами против языка без типов.
Я бы не сказал, что на порядок. Жабисты за десятилетия нагенерили столько акронимов, что заколебёшься во всём этом разбираться.
Ты просто виндопрогерством не интересуешься видимо
Кстати, в шарпе всего БОЛЬШЕ чем в жаве. Сильно больше. И понятий, и ключевых слов, и конструкций языка. Зато фреймворков меньше (и почти все они от MS).
Ну а в С++ всего примерно в 10 раз больше чем в C#
А, ну да.
Точно не в стандартной библиотеке. Да и по поводу языка я не уверен. Никаких тебе CLR, сборок, пропертей, зачатков pattern matching, partial classes, expressions, LINQ, async, delegates, etc.
Но STL же есть
>>сборок
ну линковку-то все равно никто не отменял
>>пропертей
да, а зато есть например френды
>>зачатков pattern matching
ох, ок
>>partial classes,
да, а зато интерфейс в .h файлах
>>expressions, LINQ, async
ок
>>delegates
ну это же просто указатель на функцию, он плюсам от сей достался:)
>>etc
зато шаблоны, семантика копирования, перемещения, указатели, конст итд
ps: хотя про копирование я мог и наврать
там же есть value types
это не более чем библиотека коллекций и примитивных алгоритмов.
> зато шаблоны
в шарпе есть reified generics
> указатели
ref, out
> конст
readonly
В общем, я не считаю, что шарп сильно проще как язык в плане числа конструкций и сущностей.
они более мощные чем в java (ибо есть в рантайм) но не такие мощные как шаблоны же
>>ref, out
но это не совсем поинтеры, там нет увказательной арифметики например
>>readonly
это же как final в java, не?
в С# нельзя объявить функцию const и указатель (или ссылку) на объект тоже конст и чтобы не const функции было не вызвать
ах да, там еще множественного наследования нет, и кажется нельзя приватно реализовать интерфейс
>>В общем, я не считаю, что шарп сильно проще
Это радует:) Правда у тебя может быть bias: ты уже знаешь С++, потому он не кажется тебе сложным
примерно, только final в жабе лучше, консистентней. Например, локальные переменные могут быть final.
но всё это говно по сравнению с const, конечно.
В D, кстати, есть const и immutable.
В C# кстати есть ключ слово const, оно всего лишь значит что значение надо установить в момент определения и что оно статик. Честно говоря не очень понятно зачем оно надо., а вот зачем оно:
"If you reference a constant from another assembly, its value will be compiled right into the calling assembly. That way when you update the constant in the referenced assembly it won't change in the calling assembly!"
https://stackoverflow.com/questions/55984/what-is-the-difference-between-const-and-readonly
И правда шарпы не так-то просты
>>Например, локальные переменные могут быть final.
Кажется до восмерки даже должны были если ты хотел их в лям анонимный класс передать чтобы явно показать что их оттуда не изменить.
в C# нет?
фу!
>>но всё это говно по сравнению с const, конечно.
воот)
В Java тоже есть такое ключевое слово.
Ну да, вроде бы там goto и const должны были какие-то сообщения об ошибке смешные выдавать, только у меня сейчас в openjdk не воспроизвелось. Но сановский компилер точно умел.
Anyway, семантика const которая есть в С++ в C# и Java отсутствует со стандартной для них отмазкой "это слишком сложно".
И потому когда жабоёбу надо в одном месте заполнить сложный объект, а в другом месте передать его риодонли представление, он плодит интерфейс с геттерами.
Я джавист, и хочу сказать:
ПРИШЛА ПОРА ПИСАТЬ БОЙЛЕРПЛЕЙТ
БОЙЛЕРПЛЕЙТ САМ СЕБЯ НЕ НАПИШЕТ.
Я ПИШУ 20 АКСЕССОРОВ и 20 МУТАТОРОВ А ЕЩЕ HASHCODE и EQUALS 20 РАЗ В ДЕНЬ.
МНЕ НЕКОГДА ЕБАТЬСЯ СО СЛОЖНЫМИ КРЕСТАМИ.
Мне кажется что Груви (особенно во времена седьмой джавы) должна была стать мегавпопулярной.
Почему седьмой? Потому что invokedynamic.
Груви почти полностью совместимы с жабой, могут компилироваться а могут интерпретироваться. Могут @TypeChecked, а могут быть полностью динамическими (см Meta Object Protocol).
Это такие Ruby, которых скрестили с джавой.
* лямбды и всякий ФП
* строковое интерполяцие
* каррирование!
* проперти и датаклассы (Groovy Beans)
* миксины, экстеншены и трйты (4.times.fuckoff()),
* DSLщина (можно не писать скобки например)
* Удобная стдбиблиотека высокоуровнявая
* AST манипуляции (вообще метапрограммирование как в рантайме так и в копуляции!! Жаба до сих пор так не умеет).
Пишем @WriteLock над методом и он автоматом оборачивается во взятие лока (почти как декораторы в питоне)
* Динамический диспатч и GPath. Скачал XML и пишешь: "response.value.petuhis.petuh[0].name"
При этом всё это можно отключить и быть обычной джавой.
То-есть кончать должны одновременно и скриптобляди и любители пописать километры унылого статического говна.
Были даже рельсы (Grails).
Блядь, почему ничто кроме сраного Gradle на Groovy не выстрелило?!
Так-то!
Хм, интересненько-интересненько.
А между СИНИМ и ВЫСОКИМ, что бы выбрал, если по-честному?
Не просто из одной категории. Дело в том, что C# создавался M$ как ответ на Java когда ныне покойная Sun засудила M$ за созданную ею несовместимую реализацию JVM
https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish
Breaking Java's portability: The antitrust case's plaintiffs also accused Microsoft of using an "embrace and extend" strategy with regard to the Java platform, which was designed explicitly with the goal of developing programs that could run on any operating system, be it Windows, Mac, or Linux. They claimed that, by omitting the Java Native Interface (JNI) from its implementation and providing J/Direct for a similar purpose, Microsoft deliberately tied Windows Java programs to its platform, making them unusable on Linux and Mac systems. According to an internal communication, Microsoft sought to downplay Java's cross-platform capability and make it "just the latest, best way to write Windows applications". Microsoft paid Sun US$20 million in January 2001 (equivalent to $27.64 million in 2017) to settle the resulting legal implications of their breach of contract.
Так вы C# с JVM сравнивали?
Тогда Вистефан прав: это вы синее с мягким сравнили.
В JVM 11 кстати есть ngen
>Compile Java classes to native code prior to launching the virtual machine.
http://openjdk.java.net/jeps/295
зы: Кстати, что такое "популярносьт"? Количество вопросов на SO?
Тогда популярнее всего JavaScript
Чего я, блять, джавы не видел?
Пошёл ты нахуй.
Тарас, ты?
Не
Еще пару лет назад ни Вистефан ни Борманд не матерились.
Но сёмы, стерторы и конарды сделали свое дело.
Роман более-ли-менее держится, но скоро и он блядь начнет хуячить отборным матом нахуй, потому что заебали уебаны блядские что пиздец
Не знаю насчет борманда, но у меня намного больше в жизни изменений произошло за это время, чем знакомство со стерторами. Но матюги я люблю, и использую их вжизни много, и литературу или кино с матюгами люблю, и говорю их не со злости, а так, для красоты.
> юные умы
> Борманд
Возможно, вы имели ввиду вечно юные умы
По-моему я всегда тут матерился.
http://govnokod.ru/11306#comment144368
Облом:
1. out в "C#" является зарезервированным словом.
2. В "C#" имя статического метода не может совпадать с именем класса. Main.Main() сделать не получится.
3. В "Java" нет аналога using или typedef.
4. В "Java" класс String является финальным, поэтому сделать псевдо-тайпдеф через extends не получится.
вот мы, например, сейчас здоровый проект на дотнет коре на беке делаем
работает в прыщах и принципиально в прыщах (даже микросервис печати на всякой экзотике пришлось через CUPS сделать)
да и в целом ничотак, полёт нормальный, не намного хуже жавы во многих смыслах, всё что встретилось нетрадиционное (а его хватало) пока что побороли, и поэтому пару других проектов поменьше также на шарпе на беке заебенили
Решение в целом правда необычное, все таки жава на линуксах более mature/stable.
В известных мне инсталляциях бекенда на .NET использовалась винда ввиду плотной интеграции с AD/Kerberos, SharePoint и пр, а так же наличии виндовых админов
Пиздец, я так давно не смеялся.
Заказчик боится попасть в анальное рабство у исполнителя, когда задача "измените красный цвет на синий" будет занимать 20 часов и стоить $150 в час, и потому мечтает потом "забрать и доделать всё".
Но это хуйня конечно полная, никогда так не бывает
так что почему бы и нет, лишь бы до маразма доходило пореже (месяц выпрашивали разрешение взять постгрес вместо оракла ("у нас дба не умеют в постгре"); также запретил тащить rabbitmq, т.к. он же написан на эрланге, а где он возьмёт потом разрабов на эрланге ёпта исправлять его проблемы, компромиссно согласился на жабье говно (артемис))
Но зачем?
и ещё я отвык от оракла за ~3 года и понял, что не хочу в него возвращаться
даже банальные для постгреса вещи типа where (a, b, c, d) is distinct from (x.a, x.b, x.c, x.d) на оракле это пиздец мишн импоссибл
И правильно, нахер нужен этот кролик, когда есть Kafuka
при этом и речи о миллиарде событий не идёт, и масштабирования на 1000 нод не требуется
Аргумент про написанную на erlang MQ мне понравился.
А Linux написан на C, они не боятся его брать? У них есть сишники?
Сишка там. Разве что для всякой low-level хуйни ассемблерные вставочки.
Современные фирмвари не биос
Да и там поди сишечка была 16-битная.
А что в нем страшного? В браузерах на порядок больше криптографии...
Ты просто ненавидишь всё маленькое и мягкое
Der Prozeß
Всё остальное слишком сложно, я бы не советовал
про гоблинов
А в игре про гоблинов поди думать надо.
> Это я очень рад слышать
Это в Германии радость. А вот в стране побольше зарплаты такие, что нормальный вузовский преподаватель имеет реальную работу, с которой ходит в семестре преподавать. Кстати, очень удобно: все бездарности находят зарплату побольше в бургерной, а людей обучают именно те, кто реально заинтересован в передаче знаний.
https://cs8.pikabu.ru/post_img/2016/10/18/4/1476767597197822680.jpg
Действительно, зачем программисту может понадобиться С++, когда сайты можно сделать и на вордпрессе?
То ли дело микрокалькуляторы.
Я-то думал там false sharing обычный
Скриптовые языки нужны например
1) Дата сайнтистам (см IPython Notebook)
2) Математикам и физикам для моделирования
3) Сис админам
4) Верстальщикам (чтобы прикурчивать jquery плагины)
Это же просто repl в браузере, причем тут сайнтисты?
>jquery
Оно же мертво?
https://www.analyticsvidhya.com/blog/2018/05/starters-guide-jupyter-notebook/
>>Оно же мертво?
https://www.npmjs.com/package/jquery
weekly downloads
699,946
Скачивания ни о чем не говорят. Сколько новых проектов юзают жуквери? Я давал ссылку что гитхаб его выбросил.
всё
>>Это просто удобный repl.
нет
https://plot.ly/python/ipython-notebook-tutorial/#3d-plotting
>>Скачивания ни о чем не говорят
говорят
>>Сколько новых проектов юзают жуквери?
Сколько-то.
>>Я давал ссылку что гитхаб его выбросил.
GitHub не единственный проект в Интернете
>Сколько-то.
Сколько, блядь? Статистики нет? Так и скажи.
нет
>>Сколько, блядь? Статистики нет? Так и скажи.
Статистики нет у тебя.
Можно экстраполировать путь некоторых сисадминов. Сначала ты ничего не знаешь, потом встречаешь реальную проблему, гуглишь пути её решения и рецепты, получаешь результат, имеешь опыт.
Задача -> Решение -> Опыт, Задача -> Решение -> Опыт, Задача -> Решение -> Опыт.
Человек не всегда хочет изучать программирование. Может, оно в каком-то виде просто пригождается в работе, и приходится отталкиваться от конкретных кейсов.
А на практике ничего не нужно изучать, и тем более от корки до корки. Всё равно всё забудешь через пару лет. Встретилась задача -- решил и набрался опыта.
Изучение программирования -- не самоцель. Программирование никому нафиг не нужно кроме программистов. Это у нас профдеформация и желание изучить лямбда-исчисление и тьюринговых питухов просто так. Для нормальных людей это тупой инструмент, где можно не знать всех выступов и кнопочек, если работает.
Но может всё таки читаешь RTFM сначала и учишь матчасть?:)
А то я так и вижу как нуб гуглит "почему может тормозить apache kafka";))
P.S. ru.govnokod.wikia.com свободно.
--А я ебал твою мамашу
--А твою мамашу только ты не ебал
--А я люблю обмазываться несвежим php и дрочить!
Гэкашечка такая гэкашечка
Я бы на месте поисковиков уже банил говнофорумы, на которых встречается слово "погугли". На веб-странице может быть либо полезная информация, либо призыв погуглить. Третьего не дано.
Ха.
Сначала гуглишь свою проблему и её решения.
Потом гуглишь более общую проблему и некоторые термины из нагугленных ответов.
Подбираешь несколько запросов по теме.
И только если это не помогло, изучаешь куски мануала по терминам из нагугленных ответов.
Если вообще ничего никак не работает, пытаешься читать мануал с начала до конца.
Читает мануалы только старый админ, у которого уже всё работает, есть время на изучение мануалов и понимание того, что изучение мануалов поможет в будущем.
Непрограммист до такого может и не дойти.
В выдаче попадается qaru с автоматически переведённым текстом, который в корявом переводе лишён смысла.
И отзеркаленным текстом с адблоком.
Кстати, что это? Показывалка рекламы с парсером stackoverflow или настоящий сайт вопросов и ответов?
Там автоперевод SO
http://qaru.site/questions/10/how-to-redirect-to-another-webpage-in-javascriptjquery
Не использовать гугл. Google is a big surveillance machine, please, don't use it. Use DuckDuckGo, it claims itself as free and not tracking.
Собственно, утка и поможет, потому индекс русского сегмента интернета там настолько плох, что тебе просто в голову не придёт искать что-то про IT по-русски. В худшем случае, ты попадёшь не оригинальный SO.
Потому что могут массово найтись "ответы@mail.ru"
Ищешь например "foo.zip". И находишь сайт:
Машенька: ребята, где скачать foo.zip?
Колян1991: вот, держи
Машенька: ой, а у меня на твой foo.zip антивирус ругается
Колян1991: да забей, это ложное, отключи просто и поставь
Смотришь в адресную строку, а она кончается
/foo.zip
Меняешь foo.zip на "хуй багровый" и читаешь
Машенька: ребята, где скачать хуй багровый?
Колян1991: вот, держи
Машенька: ой, а у меня на твой хуй багровый антивирус ругается
Колян1991: да забей, это ложное, отключи просто и поставь
Колян1991: нет, всё нормально. это защита от спама [ага, на комментарии защиты от "спама" нет, а на скачивание есть]. я скачал, брат жив, скорость супер, админу чмаффки
Интернет превратился в большой сортир. И ведь обидно, что сайты, где лежит настоящий "foo.zip", закрываются копирастами, а вот такое фишинговое дерьмо никто не хочет вытирать.
никакого поноса, чистые файлы!
Не спам. Реально живой поисковик по FTP-серверам.
http://www.mmnt.ru/get?st=%E1%E0%E7%E0&cn=&in=f
шару ищет
аха
Поэтому доменное имя не нужно, достаточно отыскать айпишник.
Откуда они доменные имена-то взяли? Из обратной зоны?
До «Мамонта» у Константина Айги был другой проект -- metabot.ru -- метапоисковая система, которая собирает результаты у других поисковиков, затем фильтрует и сортирует их собственным алгоритмом.
Теперь «Метабот» бесполезен: сначала из него выпал Яндекс (Константину не удалось договориться с Яндексом об использовании данных, хотя Нигма (ныне тоже исчезнувшая) каким-то образом договорилась), потом закрылись Яху, Апорт, Рамблер и ещё несколько поисковиков. В итоге он превратился в корявый интерфейс к Бингу и к Гуглу, а теперь совсем поломался.
Так вот у Метабота был свой форум без регистрации, на котором люди задавали вопросы по поисковым системам. Один из гуестов предложил сканировать айпишники в поисках сайтов, на что Константин ответил, что для HTTP это практически бесполезно («Мамонта» тогда ещё не было).
Потом форум засрали боты примерно так же, как Говнокод (он же без регистрации) и форум решили закрыть.
Не знаю, воспользовался ли Константин идеей гуеста, когда создавал «Мамонт» или надёргал ссылки на ftp с http-сайтов.
А теперь-то уже да
P.S. На некоторых хостингах по айпишнику открывается админская панелька.
http://195.128.120.143/
Машенька: ребята, где скачать весь Интернет?
Пидорашка, у тебя в стране за картинки сажают.
Поэтому вконтакте, telegram, youtube тоже не следует пользоваться.
Нужно использовать email с gpg и распределенные сети, только свободные программы и сначала пробовать открыть сайт в lynx.
На нём при этом АПИ есть, так что это не проблема. А вот некоторые сайты вроде статика, а отображаются как хуйня, и апи не имеют
Ты точно не хуйню гонишь? Человек либо изучает, либо не изучает программирование. Если ты хочешь научиться водить машину, ты как бы изучаешь правила движения, немного даже устройство автомобиля. Несмотря на то, что тот же результат можно получить, просто толкая машину до нужного места на нейтралке.
Я считаю, что это отличное, очень грамотное решение, ибо от numpy у меня исключительно негативные впечатления.
Автор курса сказал, что в прошлом уже пробовал начинать с python, но из опыта изучить Octave с нуля быстрее и проще, чем пердолиться с numpy, и проблем у студентов возникает гораздо меньше. Я полностью разделяю эту точку зрения.
Я больше за Scilab т.к.
1) Scilab можно оттранслировать в код на Си https://github.com/scilab/scilab2c
2) Код из Matlab можно оттранслировать в Scilab https://help.scilab.org/docs/6.0.1/ru_RU/mfile2sci.html
3) В Scilab есть Xcos (хрень типа Simulink), аналогов в GNU Octave нет.
Я совершенно точно не за Matlab т.к. это платное проприетарное говно
Ты хоть понимаешь, что ты поехавший, почти как чудик из страни НаРНРии?
Скоро будешь писать под каждым комментарием
«В "си" ничего этого нет, поэтому я за "си"»
«Переведи на "си"»
«Я за "PHP", ведь его можно использовать как "DSL" для генерации "си"»
Нахера людям, которые используют базовую алгебру, чтобы понять, как работает машинное обучение, твоя трансляция в Си?
Поэтому я за "мышинный код".
Потому что я нейросети из матлаба в микроконтроллер засовываю блядь
> я нейросети из матлаба в микроконтроллер засовываю
У тебя явно проблемы с логикой. Ты засовываешь сети в микроконтроллер, они изучают МО. Почему их должны волновать твои проблемы? Зачем твоя сишка людям, которые УЧАТСЯ?
Ага, вот понаклепают потом людей, которые пишут на говне, которое потом хрен переведешь на нормальный язык. Заебись, че
Потому я за "PHP": его ни во что переводить не надо.
http://r19top.ru/wp-content/uploads/2017/konchayut-na-chlenah-parney.jpg
http://devnull-as-a-service.com/
Потом пользователю может понадобиться MCR, и всё заработает.
только ее потом приходится долго вилкой чистить, чтобы оно нормально и читабельно выглядело. И при этом некоторые функции не могут быть оттранслированы через это говно, тогда приходится читать внутренности самого матлаба чтобы понять, через какую жопу они там считают какую-нибудь периодограмму, а потом ты переводишь на Си, берешь тот же FFTW, приделываешь к нему какое-то говно еще, и после этого эта параша как-то начинает работать
Переписать на tensorflow, обучить модель на сервере, на мобилку шипить обученную модель и стандартный рантайм.
Ну т.е. без ручного переписывания на другое говно тут не обойтись.
Ну на мобилки может и прокатит, я разработку под смрадфоны эмбеддедом не считаю.
Что же касается контроллеров - tensorflow сгенерить минималистичный код на Си (да пусть даже на плюсах), пригодный для засовывания в микроконтроллеры без MMU не может. Вердикт - говно
O sancta simplicitas!
В машинном обучении и составление алгоритма, и его реализация занимает ~3-5% времени, поэтому оптимизировать тут смысла нет никакого.
Всё время уходит на сбор данных, очистку их вилкой, выбор метрик, конструирование фич, построение инфраструктуры и т.п.
Тот день, который ты потратишь на переписывание любого алгоритма НА C++ (да хоть на фортран c лапаками), не играет ну совершенно никакой роли.
А если надо на Cuda и на OpenCl и на Vulkan и еще чтоб в FPGA прошивать (в какой-нибудь Verilog или VHDL) то что тогда?
>>Scilab
>>Xcos (хрень типа Simulink)
Как всё сложно..
Зачем это всё нужно если есть "PHP"?
Зачем он нужен?
Очередное низкоуровневое говно?
Скрипты и программки в несколько сотен строк всё равно приходится писать.
И изучать программирование никто по своей воле не хочет. Нафиг это прыщегиковское говно не сдалось физику/математику.
Лолшто. Если что, как бы они и были первыми программистами (сразу после криптоаналитиков).
CMT — сплошное прыщеговно, гоняющееся на кластерах. Квантовая химия — фортраноговно. Нанотехнолухи себе пилят смотрелки картинок. Эксперименты по квантовому компьютингу — уберпрыщеговно с низкоуровневщиной и FPGA.
Если взять решётку не 10×10×10 атомов, а «чуть побольше», то программа не завершалась за вменяемое время. Потом удалось оптимизировать некоторые циклы и получить хоть что-нибудь в течение часа.
Как бы Вы решили задачу, не связываясь с прыщегиковским говном?
Никак?
Если что, я сверху писал, что учёным приходится связываться с прыщегиковским говном, хоть они и не прыщегики.
Существование вычислительных задач в науке не сделает программирование любимым занятием каждого учёного.
Давай ссылку на опрос физиков/математиков, где большинство выбрало бы вариант ответа "нам не сдалось ваше прыщеговно". А то чтение мыслей получается.
Но, как минимум, известно, что не все от программирования в восторге. Логично предположить, что не всем интересно заниматься работой из не своей области.
Готовые программные продукты не всегда годятся (в любом случаи формулы в них придётся вводить самому учёному). Чтобы доверить программирование специально обученному программисту, нужно потратить время на постановку задачи. Потом придётся прогнать полученную программу и снова тратить время на постановку задачи на доработку.
Получается и так плохо, и так плохо.
То ли дело чисто физический труд, где удалось добиться разделения труда.
Да? А не потому что у некоторых учёных 35 лет опыта программирования на Фортране и нету желания переучиваться?
Сёму вон старые преподы научили что С++ это очень сложно, и он это и повторяет как попка, хотя плюсы в глаза не видел
Одна из причин почему я ушел от всякого энтерпрайза: очень много людей там
ЛУЧШЕ ЕЩЕ РАЗ ПРОЧИТАЮ PHP&MYSQL РУКОВОДСТВО ПРОФЕССИОНАЛА
Я ЧИТАЮ PHP&MYSQL РУКОВОДСТВО ПРОФЕССИОНАЛА ПО 3 РАЗА В ДЕНЬ
КАЖДЫЙ INДEX.PHP ЗАНИМАЕТ ДВАДЦАТЬ СЕКУНД
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ СИЖУ НА ФРИЛАН.СРУ
ПИШУ ЗАКАЗЧИКУ ЗДЕЛАЮ ЗА ОТЗIВ
ГОТОВЫЕ ГОСТЕВУХИ ЗАЛИВАЮ НА UCOZ
https://searchengines.guru/showthread.php?t=129888
https://www.maultalk.com/topic81487.html
По-старее ничего нет?
По твоему за 7 лет как-то сильно рынок заедушных изменился?
http://www.sbup.com/seo-forum/frilans___poisk_raboty/verstka_htmlcssjquery_za_otzyv_/
2016:
http://www.sbup.com/seo-forum/frilans___poisk_raboty/sdelau_lending_za_keis_i_otzyv__500_rublei_/
Такой безнадёгой от этого веет.. Так и видишь как годы летят, а опотный веб разработчек для ucoz сидит в своей проперженной комнате за старым компом и депингует понижая цену на 500 рублей что бы на фриланс ру перехватить заказ на создание магазина косметики
Нет, неправда.
1. Кто лучше напишет программку для преобразования гигабайта измерений в научный результат с помощью сотни формул, программист или учёный? Тот, кто лучше понимает, как работают формулы, а не тот, кто виртуознее пердолится с памятью.
2. В исследовательских задачах нельзя заранее написать программу. Можно сказать, что если программа написана заранее, то известна вся теория, науке в этой области нечего делать, можно один раз запустить программу для проверки результатов и забыть. Поэтому доступны только общие компоненты вроде умножений матриц и известные алгоритмы из изучаемой области. И из этого нужно скомпоновать какую-то программу.
> Тем же, кто их изучает, нужны в первую очередь не скилы практикующего программиста или красота кода, а знания в дискретной математике, логике, теории вычислимости и теории алгоритмов.
Это кому?
Непрограммистам? Им нафиг не сдались знания в логике, теории вычислимости и прочей питушне. Им нужен инструмент для работы.
Программистам? Только интересующимся этими темами. Либо героям вроде Кнута, либо ЧСВшникам, которые будут поигрывать мышцами алгоритмов, клепая сайты, в которых не нужно ничего более, чем двойной цикл.
Хуйня собачья. Учёный производит знания, программист их применяет. Либо учёный умеет программировать, но тогда он ещё и программист, а не учёный, знающий языки. Ну либо его программа будет хуетой.
Кто лучше обработает именно ГИГАБАЙТ изменений, человек, который знает абстрактные формулы в их приложении к реальности, или человек, который знает, что надо читать в буфер, не стоит три фора друг в друга вкладывать без большой необходимости, и так далее.
> В исследовательских задачах
А я не знаю, ну опять же, разве это не должно быть симбиозом программиста и учёного, где учёный производит теоретические знания, программист воплощает их, что-то ресёрчит, отдаёт результаты обратно.
А то. Так и есть.
Если есть возможность задействовать программиста, чтобы учёному пришлось поменьше писать, так и делают. Но это не всегда возможно.
> который знает, что надо читать в буфер, не стоит три фора друг в друга вкладывать без большой необходимости, и так далее.
Вот если программа будет работать слишком долго, тогда и спросят у местного знатока, скопируют у него код с буфером.
> разве это не должно быть симбиозом программиста и учёного
Должно.
> программист воплощает их, что-то ресёрчит, отдаёт результаты обратно
Программист ресёрчит только перфоманс, оптимизации и показывает результаты, на которые учёный фейспалмит. Науку программисту доверять нельзя, они её зафэйлят.
А на небольшие программы программистов не напасёшься. Все в вэб-студиях сайты делают. Имеющимся программистам дают то, что учёный точно не сможет сделать -- где архитектура и прочая прогерская логика. Что остаётся -- пишут сами.
Программистам? Только интересующимся этими темами. Либо героям вроде Кнута, либо ЧСВшникам, которые будут поигрывать мышцами алгоритмов, клепая сайты, в которых не нужно ничего более, чем двойной цикл.
Вот тут я уже фатально тебя не понимаю. Давай, ты что-то утверди положительно, а не меня опровергай, а то я не понимаю, к чему ты клонишь.
Стоит ли начинать с С++?
Но вообще, учить что-то сложнее, чем развлекаться в соцсетях, так что доля правды в этом есть.
> Давай, ты что-то утверди положительно, а не меня опровергай, а то я не понимаю, к чему ты клонишь.
* Люди стремятся сделать меньше и получить больше. Меньше думать, меньше работать, получая больше результатов и денег.
* Кому-то по работе приходится программировать только потому, что это путь к положительному результату; о желании программировать никто не спрашивает, это рутина.
> Стоит ли начинать с С++?
Фиг его знает. Если изучение программирование сейчас начинают с C, и народ от этого не умер, то можно спокойно начинать с C++, т.к. в нём есть большая доля C (можно #include <cstdio> и printf). Кто-то на ГК говорил, что не понял указатели до изучения ассемблера, и в процессе образования нужно было начинать с кишок; кому-то интересно просто программировать, и было бы достаточно только python.
Вообще, те, кому программирование интересно, съедят C++ и порадуются. Те, для кого это вынужденная вторая грамотность, могут вообще в программирование не въехать до того дня, когда придётся либо разбираться, либо лишаться премии.
Если известно, что в ближайшие N лет софт на C++ не закопают и забудут, и человеку придётся страдать и писать на C++, то можно начать с C++ и им же закончить (т.к. непрограммисту нужен минимум, который будет на работе).
Если C++ закопают, вообще всем можно начинать с python, т.к. низкоуровневая питушня уже не так остро необходима, её можно изучать в отдельных классах.
Гигабайт измерений может и да, но проблема в том, что измерений/вычислений обычно больше на порядки. Так что по-одиночке обосрётся и тот, и другой. Ну плюс в естественных науках как правило люди имеют серьёзный опыт говнокодинга, а часто и пердолинга с VTune/nvprof.
> клепая сайты, в которых не нужно ничего более, чем двойной цикл.
Так это не программисты
Я не понимаю почему зеленым.
Есть чудесная паста:
Итак, салаги, вы пришли к старым морским волкам в /pr/ и хотите стать программистами. Надеюсь, вы знаете, что хотите, так как это нелёгкий путь. Позвольте разъяснить вам несколько моментов: а) Большинство людей, которые делают сайты – не программисты. Если вы хотите делать сайты, но не хотите быть программистом – берите в зубы учебник «PHP5 в подлиннике» и начинайте делать свою первую гостевуху. Вопросы решайте в гугле, /s/ и форумах. Здесь другая тематика. Эту пасту дальше читать не надо, мы будем долго разговаривать, а вам нельзя терять время. б) За 21 день освоить программирование не получится. Никак. Совсем. Если срочно нужны деньги, то присоединяйся к товарищам, которые встали и ушли после пункта а.
А можно ли стать программистом на Haskell, не став при этом программистом на C++?
Да. Я изучил хаскель за пару лет до C++.
Я даже ругал C++ на ГК, пока не начал сам писать на нём.
А чем он тебе в итоге понравился?
Удаление объекта автоматически вызывает деструктор позволяя избежать утечки памяти в средах без GC
Ваш КО
Для простого и удобного освобождения ресурсов. Конструктор выделяет ресурс, деструктор освобождает его на выходе из скопа.
Композитный объект автоматически вызывает деструкторы всех компонентов.
Гугли "RAII"
Писать корректный код становится гораздо проще и удобней, никакого ГЦ не надо. После этого писать на сишке что-нибудь серьёзное — это как полы зубной щёткой драить.
заебись
Зато нельзя рассматривая CPU снепшот вдруг узнать что 5% времени CPU занимался Major GC
Это в C++ вообще по умолчанию. Тупо добавил в класс одно поле-указатель с new - и уже автоматически либо первый, либо второй баг.
По меркам здравого смысла -- уродливейшее говно.
При создании класса сразу приходится прописывать конструктор копирования, оператор присваивания, виртуальный деструктор, одноаргументные конструкторы делать эксплиситными. И так на каждом шагу, иначе потом разгребать баги.
Кресты защищают либо фанатики, которые на них ничего не писали, либо пердолики, которые к этому языку привыкли и нажрались вкусных шаблонов.
На C++ нужно смотреть с точки зрения обычного человека. Тогда сразу становится понятно, что есть более адекватные языки, и цель программирование -- решение задач, а не пердолинг.
В XXI веке программирование является второй грамотностью. Писарей уже давно выкинули из элитной группы, сейчас и программистов массово выкидывать начнут. От элитки останется 0.1% тех, без кого реально нельзя будет обойтись, остальные пойдут продавать бургеры.
и не подумал как оно будет удаляться
>> - и уже автоматически либо первый, либо второй баг.
/fixed
>>По меркам здравого смысла -- уродливейшее говно.
Какое-то очень абстрактное понятие: здравый смысл у всех один.
>>Кресты защищают
Я не защищаю кресты, я просто понимаю что у всего есть tradeoff.
Ты либо управляешь памятью сам, либо за тебя это делает счетчик ссылок или сборщик мусора.
>>На C++ нужно смотреть с точки зрения обычного человека.
Кто такой "обычный человек"? Не программист?
Зачем с его точки зрения смотреть на язык?
Непрограммисту не нужен С++, ему нужен язык для скриптов (а еще лучше удобный GUI для того чтобы настраивать всё через него)
>>Тогда сразу становится понятно, что есть более адекватные языки
Например?
>> и цель программирование -- решение задач, а не пердолинг.
Совершенно согласен.
Если бы я выбирал языки ради пердолинга то я бы выбрал Brainfuck или Whitespace.
>> От элитки останется 0.1% тех, без кого реально нельзя будет обойтись, остальные пойдут продавать бургеры.
Это уже было. Бум доктомов:
[quote]
Многие временно уволенные эксперты [1] в технологиях, например, программисты, столкнулись с пресыщенным рынком труда. В США международный аутсорсинг и увеличенное накануне количество квалифицированных иностранных рабочих (участвующих в визовой программе США H-1B) усугубило ситуацию. Университетские программы по подготовке специалистов в компьютерной сфере столкнулись с уменьшением количества новых студентов. Были популярны анекдоты о программистах, возвращающихся к учёбе на бухгалтера или адвоката.
[/quote]
Думаю что ты прав, и нас скоро ждет такое.
1. Речь идет о бухгалтерах, закончивших курсы "Visual Basic за 24 дня".
> и не подумал как оно будет удаляться
Ну вот я подумал, сделал в конструкторе new, в деструкторе delete. А язык конструктор копирования сделал сам. Теперь надо подумать о том, чтобы дописать этот конструктор.
Не помню, в C++11 это пофиксили, отключив автогенерацию, когда программист реализовал что-то одно из четырёх, или я что-то напутал. Банальная ошибка компиляции "Написал конструктор/деструктор -- напиши конструктор копирования и оператор присваивания" уже бы помогла.
И так довольно часто надо подумать и учесть несколько факторов, написать код в нескольких местах и т.п., иначе выстрел в ногу.
> Ты либо управляешь памятью сам, либо за тебя это делает счетчик ссылок или сборщик мусора.
В C++ временами всплывает RAII и прочий удобный уже реализованный код. Где-то смогли сделать так, чтобы меньше пердолиться, стоит развивать это.
>>Тогда сразу становится понятно, что есть более адекватные языки
> Например?
Скажем, python.
>> А язык конструктор копирования сделал сам.
Нет, это ты не подумал:)
Про правило "большой тройки" во всех букварях написано: Если у тебя там деструктор есть, то стопудово нужны копирующий коструктор и оператор присваивания еще до кучи (ну или явно их запретить).
А с 11 версии еще и move.
>>Написал конструктор/деструктор -- напиши конструктор копирования
А что делать тем, кого устраивает поведение по умолчанию?
>>И так довольно часто надо подумать и учесть несколько факторов, написать код в нескольких местах и т.п.
Такое часто случается к сожалению, см, например, hashcode/equals в java.
>>Где-то смогли сделать так, чтобы меньше пердолиться, стоит развивать это.
Трудно это сделать не отломав полностью совместимость с сисечкой.
>>Скажем, python.
Ну, питон не имеет стат типизации например, и потому типобезопастность там не очень. Не дает контроля за памятью (и это плохо для серьезных нагрузок). Кроме того он имеет и подводные камни свои (знаешь про супероптимизацию посредством добавления __slots__[1], например?) и в целом перформанс конечно никогда не будет такой же как на сях.
Так что и тут trade off. Хотя если что-то можно написать на питоне (lua, javascript, итд) то лучше конечно это сделать и не трогать плюсы без лишней надобности.
1. https://www.codementor.io/satwikkansal/python-practices-for-efficient-code-performance-memory-and-usability-aze6oiq65
> Про правило "большой тройки" во всех букварях написано
> ну или явно их запретить
В C/C++ и их UB вообще нет защиты от дурака, и это плохо. Если человек может что-то забыть или не учесть, он забудет и не учтёт. А это напрямую влияет на надёжность программ.
>>Написал конструктор/деструктор -- напиши конструктор копирования
> А что делать тем, кого устраивает поведение по умолчанию?
Что-то вроде ClassName(ClassName&) = default; написать.
Если вмешательство в большую тройку на практике чаще приводит к её ручному переписыванию, то лучше проигнорировать удовлетворённые меньшинства и встроить защиту от дурака ради надёжности программ.
Для нового ресурса, для которого у тебя ещё нет RAIIшной обёртки придётся разок попердолиться и написать эту пачку бойлерплейта (но с одним полем там сложно отстрелить себе ногу). А дальше деструкторы нужны чуть менее чем никогда. А delete я последний раз видел 2 года назад (и выпилил его само собой).
умный_указатель, общий_указатель?
У нас даже interrupt guard есть чтобы не забыть позвать sti :3
http://php.net/manual/ru/language.oop5.decon.php
А вот был бы у тебя деструктор, он бы не забывал дописывать полную фразу целиком.
А для быстрого завезли IDisposable/using.
Ну не клоуны?
еще_болье_символов&&
Рано или поздно C++ всё равно либо переполнится от фич, либо туда из-за совместимости нельзя будет добавить что-то адекватное.
C++/Mobile
C++/Embedded
C++/Desktop
C++/Full
Кажется, ты придумал C++/CLI
А какой ему дать? Уж не золотой ли?
Главное, урановый не давать.
Вообще, шаблоны задумывались как замена сишному препроцессору, чтобы делать функции для разных типов, но какие-то мудаки (не будем показывать пальцем) придумали метапрограммировать на них. Ты за какое применение шаблонов?
Тем, что они прикручены к языку без сборщика мусора, который компилируется в шустрый нативный код и не требует шипить компилятор в рантайме. Шаблоны помогают мне писать гораздо более краткий и типобезопасный код, чем я мог бы написать в той же жабе.
Я много раз говорил и могу специально для тебя повторить: да, кресты — лютое говно, просто алтернатив пока практически нет.
У нас на работе даже самые явные фанбои признали, что тащить растишку в прод даже они не готовы.
> Чем шаблоны лучше нормального метапрограммирования через AST (гомоиконность)?
Может потому, что никто ещё это нормально не реализовал? Какой конкретно язык ты предлагаешь?
Т.е. шаблоны хороши тем, что они к чему-то прикручены, а не сами по себе как механихм? Если бы шаблоны прикрутили к Go, это было бы хорошо или плохо?
> Я много раз говорил и могу специально для тебя повторить: да, кресты — лютое говно, просто алтернатив пока практически нет.
Что ты считаешь альтернативой? Я вот например предпочитаю DSL-и писать (или брать готовые), когда обычного Си и не слишком ебанутых трюков с препроцессором недостаточно.
И да, хотелось бы отметить. Чтобы убить плюсы, сделать язык лучше плюсов - недостаточно. Чтоб плюсы реально умерли, надо их запретить и заставить всех попереписывать свой код на другой язык программирования или вообще удалить. Можно например расстреливать всех кто осмелится на них писать и все исходники на плюсах стереть к чертям . Кобол с фортраном до сих пор живет где-то. Плюсы естественным образом не умрут т.к. на них слишком много хрени написано.
Вообще, надо основать колонию на другой планете, и там чтоб никаких плюсов. Новая цивилизация, свободая от крестокостылей
Исходя из практики, наколенная генерация кода — это такой лютый звездец, который даже врагу не пожелаешь. Мы в одном большом проекте такое делали, не от хорошей жизни (шаблонов уже не хватало). Все люто ненавидели трогать и дебажить это говно.
Если есть выбор — извращаться с крестошаблонами или генерить код из наколенного DSL — я выберу крестошаблоны не задумываясь.
Я лучше выберу наколенный DSL т.к. :
1) Используя наколенный DSL я не приковываю себя цепями к конкретному программирования. DSL можно сделать ретаргетируемым, т.е. генерить например не только под C++, но и под Java (даже в байткод Java если сильно надо)
2) Наколенный DSL в целом дает больше возможностей, чем убогие крестокостыли. Вон, даже с выводом структур не получается нихрена через шаблоны. Интроспекции нет
Но конечно лучше когда язык сам к себе DSL с гомоиконностью
Сегодня как раз недобрым словом поминали автора Bourne Shell, запилившего себе Algol на сишкомакросах.
F O R T H
Если ты потратишь тыщи времени, чтобы это всё реализовать и отладить в своём говнодсл, а потом ещё подробно это задокументировать, чтобы кроме тебя кто-то ещё мог это поддерживать, напишешь плагин для нескольких редакторов, которые нормально подсвечивают твоё поделие, сделаешь форматтер, добавишь плагины для системы код-ревью, и встроишь это всё в билд-систему. И в итоге всё равно получишь убогое подмножество коммон лиспа.
ОК, проведи четкую границу между кодогенерацией и DSL.
Ragel - DSL?
Copilot - DSL?
re2c - DSL?
>Юзеры FFTW же не пердолятся с ocaml, а пользуются удобным API для нормального языка.
В самом FFTW есть специальный domain-specific language для генерации эффективных алгоритмов БПФ
http://www.fftw.org/fftw-paper-ieee.pdf#section.4
> A. Representation of problems in FFTW
> DFT problems in FFTW are expressed in terms of structures
> called I/O tensors, which in turn are described in terms of
> ancillary structures called I/O dimensions. (I/O tensors are
> unrelated to the tensor-product notation of SPIRAL.) In this
> section, we define these terms precisely.
Кодогенерация не торчит наружу и не видна юзеру. DSL — предназначен для юзеров.
Copilot - да. Все парсер-генераторы и т.д. — да. FFTW — нет.
> Т.е. ты считаешь что парсер-генераторы нинужны,
Я говорил нечто противоположное, см. "хорошие примеры:"
> и лучше дрочиться в крестах с boost.spirit каким-то
Я говорил нечто противоположное, см. "отвратные примеры".
> надо всякие там конечные автоматы пердолить ручками через goto?
Я ещё не настолько поехал.
Нет, у меня перед глазами стояли отвратительные примеры вроде уёбищных ansible playbooks, где люди сделали "декларативный" DSL, а потом поверх него наговнякали императивных конструкций. Или vimscript, собравшего всё самое лучшее от перла и шелла. Т.е. все примеры, где прикладники подходили к дизайну языка с точки зрения узкой задачи и потом понимали, что неплохо бы иметь нормальный язык, но было уже поздно.
Таких примеров, когда за создание языка берутся какие-то заедушные анскиллябры - их естественно дохрена. Но это не проблема самого подхода, это проблема тех самых анскиллябр заедушных.
Вот в том же Javascript например есть куча всяких языков-которые-в-JS-компилируются, ну там CoffeeScript, TypeScript, ClojureScript, Dart (можно эту срань долго перечислять) и люди этим успешно пользуются и не плюются, в отличии от говна типа vimscript
Потому что он в JavaScript компилируется?
А С++ компилируется в LLVM, а C# в MSIL, это всё тоже DSLи?
Ну дык, Dart вполне можно рассматривать как DSL (по аналогии с Copilot), законом не запрещено.
У Dart есть своя domain specific область применения - написание веб-приложений. Никто например не будет использовать Dart там, где лучше подойдет какой-нибудь FORTRAN (сложные математические расчеты)
2) А С++ почему нельзя рассматривать как DSL тогда?
Говнокресты как раз хотят сделать универсальным языком общего назначения, добавляя в его стандарт всякую парашу, но получается говно
В таком случае PHP например или Swift это тоже DSLи
Напомнило parser:
"Parser же простыми средствами решает сложные задачи, что позволяет простым смертным создавать и поддерживать сложные динамические сайты без больших затрат времени."
Зыришь внутрь, а там
" ^reflection:create[ $.class[имя класса] $.constructor[имя конструктора] $.arguments[хеш аргументов] ]"
https://www.parser.ru/
Ну про gradle, chief и puppet я уже грил
http://ant-contrib.sourceforge.net/tasks/tasks/if.html
<if>
<equals arg1="${foo}" arg2="bar" />
<then>
<echo message="The value of property foo is bar" />
</then>
<else>
<echo message="The value of property foo is not bar" />
</else>
</if>
Как мне кажется, применимо к любому языку. Сколько водки ни покупай -- всё равно докупать придётся.
Нужно иметь автоматические трансляторы из старых языков в новые (и может быть, обратно), тогда можно всякий раз, когда упёрлись в стенку, создавать абсолютно новый язык с учётом ошибок старого и транслятор.
я лично не люблю подобную парашу, хоть и жить без неё сложно.
Каждый автор подобных тулзов придумывает свой синтаксис и семантику, код выглядит примерно как типичный ПХП веб-сайт, где смешались пхп, хтмл и жс. И в итоге приходится смотреть рулоны генерированной параши и пытаться понять, почему у тебя юникод не работает.
Далее, эта парашу сложно склеивать: если у тебя есть лексер на re2c и ты в нём хочешь запилить rygel-стейтмашины, тебе придётся вынести всё это в отдельный модуль.
Подобная проблема, впрочем, есть и всякой макросни: два набора лисповых макро-дсл зачастую трудно друг с другом подружить.
У мокро-монад такой проблемы обычно нет, ибо из них можно собрать стек. Это больно и грустно, но реализуемо.
> FFTW
Это вообще тут не в тему. Кодогенерация тут не экспозится, это часть реализации.
В заключение, все примеры, которые ты привёл, применяются к чётко поставленной, по сути математической задаче. Типичный проект из нескольких разработчиков и дедлайном не может позволить себе тратить годы на разработку такой петушни, да и задача обычно стоит совсем не чёткая, обсракции будут меняться несколько раз в процессе реализации проекта. В таких условиях у крестношаблонов явное преимущество.
А легко ли подружить (скомбинировать) две плюсовые шаблонные_библиотеки_с_метапрограммирова нием?
> В таких условиях у крестношаблонов явное преимущество.
В чем?
Ох, хорошо было бы, если бы создателей первого крестокомпилятора cfront так наказали
Забавно что от регулярок ни у кого не подгорает, а от рулесетов которые суть те же самые регулярки (язык для описания конечного автомата для разобра регулярных грамматик (кажется тип 3 Хомского)) у всех горит
В нулевые был популярен миф о том, что любой Вася может взять в руки палку и на коленке собрать удобный высокоуровневый язык, заточенный под решение задач его пользователей.
И пользователи сразу сами смогут писать на таком языке, который как-бы и ЯП, но в терминах бизнеса, и потому он прост и понятен.
Потом оказалось что духовно богатые языки типа руби и груви отлично подходят для написания DSLей потому что там скобочки можно не писать, и если последний аргумент это лямбда/блок то его можно записать особым синтаксисом итд.
Так родились chef, puppet, cocoa pods, gradle, и охулион еще всего. Потом стало понятно что никто кроме экспертов по языку из которого сделан DSL эту поделку не понимает, потому что для всех остальных она выглядит как наколенное месиво, и максимум что могут сделать другие это скопировать из мануала нужную строчку и надеяться что заработает.
В настоящее время вроде бы люди перестали делать DSL на каждый чих.
Теперь модно изобретать по декларативному языку в день.
XML уже не модно, но и JSON не модно. Надо или YAML ли TOML (есть такой язык!), завтра наверное еще один придумают.
> DSL можно сделать ретаргетируемым, т.е. генерить например не только под C++, но и под Java
Вот и решение проблемы. Трансляция из новых хороших языков в C++. Тогда можно спокойно пересаживаться на новое и хорошее.
JavaScript вонял больше C++, из-за чего более охотно собрались и наплодили 100500 реально использующихся языков, компилирующихся в JS.
Мне кажется что генерировать C++ смысла нет: лучше уж сразу генерировать код под LLVM, например. Или C--.
C JS просто не было выбора, бо браузер.
С другой стороны соцсети же генерят код из пыха, правда я не знаю генерят ли они сишечку или плюсы
Для какой-нибудь шаблонной питушни наверно есть смысл. Иначе придётся пердолиться и либо специально компилировать библиотеки вроде STL для каких-то особо вычисленных типов, либо писать вместо них что-то другое.
А если максимальной совместимостью с C++ не будет, такие языки не будут нужны (когда можно сходить напитон).
> C JS просто не было выбора
Не было выбора, но всё же нашли возможность не писать на JS. С C++ выбор есть, но на C++ пишут 🙂
Ну ок, допустим что Rust(правда я его толком не знаю, только доки читал. Но на мой взгляд это уже на много порядков лучше крестов).
Допустим что добрый волшебник Джей123123 наколдовал особое заклинание, которое в один миг превратило бы все исходники на C++ (за исключением исходников самих крестокомпиляторов - их оставим так как есть) в исходники на Rust, стерев при этом крестопарашные оригиналы, и перепрошил бы своей магией мозги всех людей, которые знают C++, чтобы они знали вместо этого Rust (за исключением всяких там Страуструпов и прочих стандартизаторов, и прочих наиболее фанатичных и упоротых поклонников - таково их наказание), то какие бы были у плюсов перспективы вытеснить Rust?
> Может потому, что никто ещё это нормально не реализовал? Какой конкретно язык ты предлагаешь?
Я думаю что такого языка еще нет, и его необходимо создать. Но вместо того, чтобы создавать новый язык, люди продолжают дрочить кресты и крестошаблонную магию, изобретать новые, еще более ебанутые стандарты для этих самых крестов. В общем, люди не идеалисты, люди - прагматики. Им вполне норм давиться этим дерьмом, тем более если за это платят. Добавят там в С++20 еще какой-то пизданутой дрисни - они только обрадуются и похлопают в ладоши. И это программисты?
Это самый интересный вопрос, который когда-либо поднимался на ГК.
Что такой compose в плюсах нафиг не усрался. Чего мне с ним делать? Можно подумать, в библиотеке много функций высшего порядка, куда эти композиции совать можно.
Ты хочешь сказать "к стандартной библиотеке говнокрестов такое неприменимо, и поэтому это ненужно", я правильно понимаю? А что мешает написать более нормальную библиотеку, где такой compose был бы уместен, и чтоб на нем было всё построено, а обычную стандартную либу говноплюсов выкинуть нахер?
И вообще, мой вопрос заключался не в том, нужен ли в плюсах compose и сочетается ли он с стандартной библиотекой плюсов. Мой вопрос заключался в том, "нормально ли вообще, что такая банальщина в плюсах реализуется через такую ебанутую жопу?"
Ну она хоть как-то реализуется. При этом нормально будет работать value-семантика и память будет вовремя освобождаться, даже если ты копируешь объекты в замыкания.
В сраной сишке ты это вообще никак не сделаешь.
Что значит "нет замыканий"? Передавай в функцию структуру с контекстом, выделенную на куче, только не забывай всё это говно вовремя вилкой чистить.
Только compose для таких "замыканий" толком не напишешь, потому что нужно самому всё тоже самое чистить. В жопу такой композ.
Хорошие библиотеки в крестах писать сложно, зато потом ими удобно пользоваться.
Это не замыкание, а говно. Лучше бы вспомнил про GCC экстеншены https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html. Или про ту приколюху с препроцессором https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
Странно, обычно ты первый в очереди пердолится с такими вещами.
Тем не менее, именно так замыкания реализованы почти в любом высокоуровневом языке. И именно в таком виде это говно юзают почти все сишные либы, принимающие коллбеки.
Именно. Я писал крестовую обёртку над одной такой либой, libzookeeper.
Ох, как у меня пукан он неё горел. Сишники ну абсолютно не умеют в концепцию владения. Они эти коллбэки с одним и тем же контекстом вызывали по любому зуду левой пятки, приходилось путём проб и ошибок находить эвристику, когда контекст уже можно спокойно удалить.
Была мысль даже мини-сборщик мусора написать (трекать все указатели, которые я передаю в библиотеку и которые освобождаю в коллбэках, чтобы на закрытии сессии освобождать всё то, что ещё не освободилось), но так руки и не дошли.
А зачем ты меня спрашиваешь? Спроси у Саймона Марлоу. Видимо потому, что исследователи функциональных языков не очень дружат с C++. Сомневаюсь, что есть какая-то хоть сколько-нибудь веская причина.
А известно ли тебе, с каким нескрываемым презрением некоторые сишники смотрят на тонны шаблонопарашного крестового поноса, который не может понять никто, кроме авторов, высравших сие?
А известно ли тебе, с каким нескрываемым презрением я смотрю на мудаков, которые не могут осознать, что выделенный ресурс нужно вовремя освобождать, и проще всего, если за каждый ресурс отвечает определённый компонент в системе?
Плюсы хороши уже только тем, что прививают привычку следить, какой компонент за какие ресурсы отвечает. Даже если ты потом пишешь на C/Java/Haskell, рефлекс остаётся, и код получается проще и надёжнее.
Да я в общем-то ничего против RAII не имею. Например в том же Rust отказались от GC в пользу этого самого RAII и я считаю что это правильно (хотя с другой стороны, попробуйте написать xor-linked list без unsafe).
Проблема крестоговна совсем в другом
В "Forth" я могу просто скомпилировать новую подпрограмму.
Вот например
Сколько строчек шаблоноговна на это нужно?
Ебанашка.
Если у вас нет собаки, её не отравит сосед...
А то завсегда пальцы в дерьме...
Нисколько. Без интроспекции ты это нормально не сделаешь.
Проще заменить обычный struct на препроцессорную магию, которая тебе соответствующий код сгенерячит. У нас используется такая магия, кстати, она генерит данные для компайл-тайм интроспекции (на твоих нелюбимых шаблонах), ну и выхлоп в поток / сравнения генерить умеет как частный случай.
Заодно выводить будет всё, у чего есть стрелочки. А не только %d да %f.
Кому нужно "С++" когда можно жрать говно?
http://risovach.ru/upload/2013/12/generator/na-slovah-ty-ded-moroz_37259262_orig_.jpeg
https://life.ru/956780
https://bigpicture.ru/?p=988054
Говняный дракон. Сука, новый монстр для Героев! Тает от огня.
При этом наносит АОЕ урон окружающим.
https://www.livemaster.ru/item/3135445-podarki-k-prazdnikam-kofejnaya-zmeya
http://web.archive.org/web/20160116121438/www.livemaster.ru/item/3135445-podarki-k-prazdnikam-kofejnaya-zmeya
P.S. А вот и автор:
https://www.livemaster.ru/FormulaSveta
Надо мониторить. Вдруг ещё что-нибудь интересное появится.
Кому нужно жрать говно когда можно жрать говно?
FIXED FOR GREAT JUSTICE.
>> нормальных механизмов метапрограммирования
>> интроспекции
>> тьюринг-полные темплейты
В "PHP" ничего из этого нет. Именно поэтому...
Сис админа пытался вызвать демона через торренты, скачав образ дебияна.
https://sportmail.ru/news/football-foreign/35299034/
Что за ебучие люди, я хуею.
брат перлоеб?
Работает это так.
Каждая функция и оператор в пёрле обычно знает в каком контексте (скалярном або сиськовом) её вызвали, и вертает соответствующее значение. Например массив в скалярном контексте вертает кол-во своих элементов.
Обычно контекст для rvalue определяет lvalue, но гоатсе позволяет это дело зафорсить.
Перл охуенен, кто на нем не писал -- тот красоты не видал
Доставка по России. Анонимно.
wiistriker@gmail.com
45-летний житель австралийского города Перт Грэм Баркер и его коллекция пупочного пуха.