- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Top 5 most loved languages:
Rust: 86.1%
TypeScript: 67.1%
Python: 66.7%
Kotlin: 62.9%
Go: 62.3%
Top 5 most dreaded languages:
VBA: 80.4%
Objective-C: 76.6%
Perl: 71.4%
Assembly: 70.6%
C: 66.9%
Top 5 most wanted languages:
Python: 30.0%
JavaScript: 18.5%
Go: 17.9%
TypeScript: 17.0%
Rust: 14.6%
3.14159265 18.09.2020 02:07 # +1
А в антирейтинге нормальные пацанские языки: VB, Пёрл, Асм, Сишка.
Зачем? Зачем?
bormand 18.09.2020 15:12 # 0
VBA же, а не VB.
MAPTbIwKA 18.09.2020 15:13 # 0
bormand 18.09.2020 15:15 # 0
А на VBA только троянов внутри документов опердень внутри экселек.
MAPTbIwKA 18.09.2020 15:17 # +1
Или там как питон и питон в lldb или гимпе или куда его там заембедили
Кстати, видел полезное использование макроса в ворде в одной газете в прошлом веке.
Там текст форматировался в размер гранки, которую потом отдавали в типографию вроде
3.14159265 18.09.2020 15:41 # 0
Только apiшки разные. Так это один язык.
Vb очень сильно отличается от VB.net, VBScript или QBasic. Там действительно пропасть.
3.14159265 18.09.2020 02:12 # 0
Но ведь реакт и *уй — говнище.
АнгулярЖс самый лучший клиентский фрейворк. На нём даже нгк написан.
bootcamp_dropout 18.09.2020 09:13 # +2
3.14159265 18.09.2020 02:15 # 0
oaoaoammm 18.09.2020 04:42 # +4
Зачем уважающему себя программисту активно сидеть на сайте с вопросами, ответами и _рейтингом_? Лично я там зарегался только когда не мог что-то нагуглить, поэтому хотел задать новый вопрос. Но удобный поиск по уже заданным вопросам избавил меня от этой необходимости, с тех самых пор в свой аккаунт я уже не заходил )))
В итоге, что нам показывает эта статистика? Не мнение, может быть, 2% нормальных программистов, не знающих про говнокод, а потому срущих на стаке, а мнение 98% ламерков, прошедших курсы HTML/PHP/JS и не осиливших что-либо сложнее скриптушни или языка "который как сишка тока безопасный даже думоть не надо!"
gost 18.09.2020 06:34 # 0
Доброе утро, oaoaoammm.
oaoaoammm 18.09.2020 06:36 # 0
gost 18.09.2020 06:41 # +3
Поэтому, если беглый гуглинг вопроса не дал результатов, то на «SO», скорее всего, на него тем более никто ответить не сможет.
Desktop 18.09.2020 10:52 # 0
у меня не очень много вопросов на so, но почти на все из них есть ответы и ответы вполне себе адекватные.
если на so нет твоего вопроса, то как на нём появится ответ на твой вопрос? :-)
defecate-plusplus 18.09.2020 10:55 # 0
то ли дело qaru.site
Desktop 18.09.2020 10:58 # 0
вы вам перезвоним
bootcamp_dropout 18.09.2020 14:54 # 0
3.14159265 18.09.2020 12:29 # +3
SO лишь срез всего айти. Думаю дело в общем обанскиливании профессии.
В которую народ активно ломится, не потому что любит программировать. А просто за баблом.
Я сделал забавное наблюдение, зарплаты в «most dreaded» сильно ниже средних цифр, а «most loved» сильно выше.
https://insights.stackoverflow.com/survey/2020#work-salary-and-experience-by-language
Может дело и вовсе не в языках, а народ просто жаждет денег?
bootcamp_dropout 18.09.2020 14:59 # 0
Люди любят деньги и комфорт работы
3.14159265 18.09.2020 15:43 # +2
Ещё вчера люди учились на экономистов, юристов или барменов и смотрели на кодеров как на задротов и недолюдей.
А сегодня только услышав, сколько вечнозелёных получает «Колька, Иркин брат», бегут в погромисты.
На волне «войти в айти», они дружно рассказывают о своих мечтах быть «айтишником», как они любят кодинг.
И как им мама в детстве на ночь читала Кнута. И какая заебатая штука ТайпСкрипт, а Rust вообще чудо.
MAPTbIwKA 18.09.2020 15:45 # 0
3.14159265 18.09.2020 15:46 # 0
Надо было чего попроще. Типа html.
bootcamp_dropout 18.09.2020 22:15 # 0
guest8 18.09.2020 22:18 # −999
bootcamp_dropout 18.09.2020 22:24 # 0
guest8 18.09.2020 22:27 # −999
TOPT 18.09.2020 06:53 # 0
rotoeb 18.09.2020 12:37 # 0
3.14159265 18.09.2020 12:40 # +1
PHP: 62.7%
Но я был искренне удивлён, когда увидел, что народ больше страшится Ассемблера и Сишки, чем «PHP».
Izumka 18.09.2020 12:55 # 0
guest8 18.09.2020 13:16 # −999
Izumka 18.09.2020 13:21 # 0
3.14159265 18.09.2020 14:47 # 0
bormand 18.09.2020 14:48 # +1
Izumka 18.09.2020 22:25 # 0
«За баранкой был под мухой...»
MAPTbIwKA 18.09.2020 15:06 # 0
ты просто сказку не знгаешь
guest8 18.09.2020 15:33 # −999
3.14159265 18.09.2020 12:39 # 0
https://www.joelonsoftware.com/2001/12/11/back-to-basics/
MAPTbIwKA 18.09.2020 15:04 # +1
3.14159265 18.09.2020 15:38 # 0
MAPTbIwKA 18.09.2020 15:41 # 0
не vb, но vbs
VBScript is the dinkiest language on earth and ASP programming consists of learning about 5 classes, only two of which you use very often. And only now do I finally feel like I know the best way to architect an ASP/VBScript applicatio
https://englishplusplus.jcj.uj.edu.pl/texts/lord-palmerston-programming/fulltext/index.html
риальне питух
3.14159265 18.09.2020 15:50 # +1
Я немного пробовал это учить. Просто отвратительная, ублюдочная копия Ecma (ещё того, куцего, времён IE4-5).
Спольски понять можно. VBA в Экселе получился лютой годнотой. На тот момент технология просто революционная.
Но VBA для браузера, тут уж извините.
Это выкидывая за скобки немаловажный момент, что его поддерживал только IE, во времена своей славы.
rotoeb 18.09.2020 16:11 # 0
guest8 18.09.2020 16:15 # −999
3.14159265 18.09.2020 16:17 # +1
Бейсик изначально ведь и позиционировался как простая скриптуха для быстрого прототипирования.
С этой точки зрения JS и Питон — эволюционировавший на следующую ступень Бейсик.
А разработчики «TypeScript» этого так и не поняли, сотворив мерзкую, осклизлую, болотную недожабу для браузеров.
Desktop 18.09.2020 16:21 # 0
- а как надо было?
3.14159265 18.09.2020 16:25 # 0
Изначальный ЖС был гораздо ближе к идеалу. Туда бы хороший type inference прикрутить и тупизацию.
Я уже много раз про это писал.
Идеальный язык где ты пишешь.
a=1
А все ненужная питушня доопределяется сама
const a:int=1;
guest8 18.09.2020 16:28 # −999
3.14159265 18.09.2020 16:33 # 0
Изначальный ЖС был функционален.
А прототипуха, это мелочь, без неё можно было и обойтись.
rotoeb 18.09.2020 16:30 # −1
Кстати, для "JS"-дебилов: имейте в виду, что для превращения числа-строки в целое число необязательно использовать "parseInt" - можно просто умножить строку с числом на 1.
bootcamp_dropout 18.09.2020 21:34 # 0
guest8 18.09.2020 16:30 # −999
3.14159265 18.09.2020 16:32 # 0
И тогда заставлять явно писать мудификатор.
Ситуация довольно редкая, потому от этого только польза.
MAPTbIwKA 18.09.2020 16:33 # 0
> выдавать ошибку при shadow.
ну, такое
3.14159265 18.09.2020 16:34 # 0
А тогда классическое:
var a=1
Смысл в том чтоб const был по умолчанию.
guest8 18.09.2020 16:41 # −999
3.14159265 18.09.2020 17:00 # 0
Это не то. Хуйня.
Неявный const очень сильно всё упрощает, и избавляет от целых КЛАССОВ ошибок.
Типа переопределения ниже по функции и захватов в лямбдах.
А классическое == убивается на корню:
Компилятор это отловит, т.к. это переприсваивание константы.
rotoeb 18.09.2020 17:03 # 0
if (x=2){ //тут ошибка, хотели x==2
Компилятор это отловит, т.к. это переприсваивание константы."
Если компилятор и так "понимает", что имелось в виду, почему бы ему сразу на лету не переделать некорректный код и не выполнить то, что подразумевал пользователь?
guest8 18.09.2020 21:43 # −999
guest8 18.09.2020 21:42 # −999
Support 30.06.2022 03:22 # 0
Везет же некоторым...
3.14159265 30.06.2022 01:02 # 0
> ну, такое
https://govnokod.ru/28254
Desktop 18.09.2020 16:33 # 0
если потеребонькать ширину таблички по нажатию на кнопаньку, то да
если SPA во все поля с файербейзами и рагулярами, то жс вообще ни о чём
MAPTbIwKA 18.09.2020 16:34 # 0
3.14159265 18.09.2020 16:37 # 0
Минимум всякого синтаксичесого хлама private, public, protected. Без наследования.
Desktop 18.09.2020 16:40 # 0
rotoeb 18.09.2020 16:41 # 0
3.14159265 18.09.2020 16:42 # 0
Вся приватность как в сишке (кишки не видны через h-файлы интерфейс модуля) или как в жс, локальные переменные прячутся в замыкании.
guest8 18.09.2020 16:43 # −999
rotoeb 18.09.2020 16:44 # 0
3.14159265 18.09.2020 16:45 # 0
Именно.
guest8 18.09.2020 16:46 # −999
Desktop 18.09.2020 16:44 # 0
это такое буэ, что страшно сказать
> или как в жс
this is undefined
guest8 18.09.2020 16:47 # −999
rotoeb 18.09.2020 16:48 # 0
В "Word"-е.
guest8 18.09.2020 16:49 # −999
bormand 18.09.2020 16:50 # 0
З.Ы. Это было бы смешно, если бы авторы некоторых либ реально так не делали.
Desktop 18.09.2020 16:48 # 0
сгенерь документацию из исходников
а вообще отойдите от меня, мужчина, от Вас сильно пахнет нафталином
guest8 18.09.2020 16:50 # −999
Desktop 18.09.2020 16:52 # 0
- откуда я знаю, как это делается в языке, на котором ты пишешь? погугли
guest8 18.09.2020 16:53 # −999
rotoeb 18.09.2020 16:54 # 0
В моём языке я просто посылаю нахуй ООП с его классами и интерфейсами, пишу нормальный процедурный код и теку.
Desktop 18.09.2020 16:55 # 0
у тебя документация делается путём создания интерфейсов?
guest8 18.09.2020 16:56 # −999
Desktop 18.09.2020 16:58 # 0
начешуя мне копаться в твоих сырцах, чтобы про апи почитать
rotoeb 18.09.2020 16:53 # 0
Можно назвать эти классы случайными наборами букв и цифр. Если, конечно, без классов вообще никак - ну любишь ты БДСМ.
Desktop 18.09.2020 16:53 # 0
- не понял, в твоём языке модификаторы public и private означают что-то более другое?
guest8 18.09.2020 16:55 # −999
Desktop 18.09.2020 16:58 # +1
и ты его ещё форсишь после этого?)
rotoeb 18.09.2020 16:59 # 0
3.14159265 18.09.2020 17:04 # 0
>это такое буэ, что страшно сказать
Возможно открою тайну.
Но интерфейсы есть в КАЖДОМ современном промышленном языке: C++, C#, Java, TypeScript, Python, Go, Rust (trait) итд.
Desktop 18.09.2020 17:06 # 0
не считая крестов
3.14159265 18.09.2020 17:07 # 0
Desktop 18.09.2020 17:08 # 0
я беру питон
пишу одно файло
импорчу его и теку
сишка не осилила многопроходный компилятор, теперь до сих пор жрёт говно. это подаётся как невиданное достижение. ну обалдеть)
rotoeb 18.09.2020 17:09 # 0
пишу одно файло
импорчу его и теку
Та же хуйня с "PHP".
3.14159265 18.09.2020 17:10 # 0
Я беру сишку. Пишу int main() и теку.
Desktop 18.09.2020 17:12 # 0
defecate-plusplus 18.09.2020 17:16 # 0
guest8 18.09.2020 17:08 # −999
Desktop 18.09.2020 17:13 # 0
MAPTbIwKA 18.09.2020 17:14 # 0
Я написал реализацию, тыркнул кнопкой, и попросил вынести ее декларацию в .h файл
Desktop 18.09.2020 17:16 # 0
это ещё более-менее
а в жабе это зачем руками делать?
MAPTbIwKA 18.09.2020 17:19 # +2
а если в IDE, то оно сгенерит его.
В общем смысл в том, что
ничем не хуже
но первое все ругают, а второе нет
почаму?
3.14159265 18.09.2020 17:21 # 0
В public interface Petushok {
Буковок больше.
Им за буковки платят.
Интерфейсы есть не только в ЙАЖЕ, а вообще везде.
Desktop 18.09.2020 17:36 # 0
rotoeb 18.09.2020 17:36 # 0
guest8 18.09.2020 17:37 # −999
Desktop 18.09.2020 17:38 # 0
и в го не надо
и в питоне не надо
и даже в великом и ужасном лишпе - нет, не надо
у вас молоко убежало
rotoeb 18.09.2020 17:39 # 0
guest8 18.09.2020 17:40 # −999
bormand 18.09.2020 17:41 # 0
Форварды к объективному си поди?
guest8 18.09.2020 17:44 # −999
Desktop 18.09.2020 17:53 # 0
bormand 18.09.2020 17:53 # 0
Чтобы можно было его юзать из объективной сишки?
3.14159265 18.09.2020 17:56 # +2
А потом вылазят .h-файлы, llvm, биндинги сишные, вотэтовотвсё.
Сидят на полностью ворованной инфраструктуре да и покрякивают.
Desktop 18.09.2020 18:01 # 0
- я не рефлексирую по этому поводу)
Desktop 18.09.2020 18:07 # 0
просто разделение на .h и .с это, на мой взгляд, рудимент, а вы ещё это в 2020-ом году предлагаете в качестве "инновации" добавить в js
3.14159265 18.09.2020 19:01 # 0
Может показаться что это «троллинг». Однако здесь абсолютно серьёзно.
Есть модуль isTen.
Внутри него объявлены всякие foo, bar.
Мы хотим чтобы они не торчали наружу, засирая глобальную видимость.
Наружу торчит только функция isTen.
Добиться этого можно разными способами. private/public один из вариантов. Как я уже отметил далеко не наилучший.
nodejs module.exports по духу как тот же extern, позволяет «увидеть» функцию или константу из других модулей. Да, там ещё есть поправки на линковку, но в целом.
Desktop 18.09.2020 19:04 # 0
> nodejs module.exports
- это ж оно и есть?
3.14159265 19.09.2020 00:08 # +1
Поздравляю! Мы изобрели h-файл!
Чем не явный список экспорта?
guest8 19.09.2020 00:17 # −999
bootcamp_dropout 19.09.2020 00:22 # 0
Businesses and organizations
TSD Desalination, an Israeli start-up
Texas School for the Deaf, U.S.
Transylvanian Society of Dracula
Turin School of Development, Italy
University of Wales Trinity Saint David, a university in the U.K.
TSD - Tunisian Software Development, Tunis , a Waste management IT consulting company
Government
Technical Services Division, another term for the U.S. CIA's Office of Technical Service
Treatment, Storage, and Disposal Facility; see HAZWOPER
Treasury Solicitor's Department, U.K.
Trilateral Security Dialogue, part of the Quadrilateral Security Dialogue
Science and medicine
Target-to-skin distance, a measurement in external beam radiotherapy
Tay–Sachs disease, a genetic disorder, fatal in its most common variant
Temperature-dependent sex determination
Thermionic specific detector, another term for nitrogen–phosphorus detector
Total sleep deprivation, a parameter in sleep and memory studies
Desktop 18.09.2020 18:00 # 0
если у тебя есть ещё обжсишные или сишные инклуды, которые ты хочешь сделать публичными, ты их в этот хедер добавляешь
я не знаю, даёт ли он что-то для чистого свифта, по крайней мере, нигде не встречал упоминаний. думаю, это ради консистентности
Desktop 18.09.2020 18:16 # 0
хедеры
на случай, если кто-то приебётся, что там импорты, а не инклуды
Desktop 18.09.2020 18:20 # 0
я чот думал, что их надо в обязательном порядке помечать как @objc, но это только для рантайма
ну и свифтовые типы должны быть представимы в objc
Desktop 18.09.2020 17:50 # 0
в свифте как минимум есть llvm'ный modulemap
только руками его никто не трогает почти никогда за исключением редких случаев
guest8 18.09.2020 21:11 # −999
guest8 18.09.2020 21:30 # −999
Desktop 19.09.2020 02:02 # 0
Про modulemap для затравки
https://stackoverflow.com/questions/47036023/what-is-export-in-module-modulemap-file-inside-each-framework
https://clang.llvm.org/docs/Modules.html#export-declaration
MAKAKA 19.09.2020 02:06 # 0
а как он выглядет?
а, ок
Desktop 19.09.2020 02:07 # 0
А это как раз modulemap
Это разные вещи
MAKAKA 19.09.2020 02:11 # 0
Desktop 19.09.2020 02:14 # 0
modulemap генерируется автоматом при сборке. Но можно и руками, емнип
В тонкой настройке экспорта я честно не силён, надо вникать в доку по llvm.
Но там много можно разного делать, например, создавать модули из голых сишных исходников
MAKAKA 19.09.2020 02:26 # 0
И клиент потом компилируется против этого .h файла.
gost 19.09.2020 12:53 # 0
guest8 19.09.2020 12:54 # −999
bootcamp_dropout 19.09.2020 13:03 # 0
Desktop 19.09.2020 14:50 # 0
Кстати, что за браузер?
gost 19.09.2020 14:53 # 0
Desktop 19.09.2020 21:56 # 0
gost 19.09.2020 21:57 # +1
3.14159265 18.09.2020 17:50 # 0
Звучит очень смешно, т.к. в го приципиально отказались от ооп, однако зачем-то завезли:
Видимо, потому что «не надо».
Desktop 18.09.2020 17:54 # 0
3.14159265 18.09.2020 18:47 # 0
Разделение реализации и API достаточно очевидная концепция.
Особенно в контексте обсуждения модификаторов public/private.
МАКАКА даже пример дал:
https://govnokod.ru/26961#comment576261
Desktop 18.09.2020 18:51 # 0
я ж никогда не поверю, что ты не знаешь разницы между interface в %LANGNAME% и хедерами в сишке.
ты троллируешь
но я не ведусь(
3.14159265 18.09.2020 19:06 # 0
Речь не о разнице. А о схожести.
h-файлы немного по-уебански сделаны, через из-за чего пришлось выдумывать precompiled headers и прочую питушню.
Но их суть отделить API от его реализации.
>ты троллируешь
Даже gcc пишут что это интерфейсы.
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
Desktop 18.09.2020 19:08 # 0
только ж они всё-таки про разное
наличие interface в Go не заставляет язык иметь ещё и интерфейсные файлы отдельно
3.14159265 18.09.2020 19:10 # 0
Так в Сишке тоже можно объявлять в одном файле сигнатуры функций и чуть ниже писать их реализацию.
А в явах/шарпах тоже принято писать интерфейсы в отдельных файлах.
На самом деле это логично.
И на практике во всех RPC типа WSDL, SOAP принято поставлять стабы в отдельных файлах.
Которые по сути те же интерфейсы.
Desktop 18.09.2020 19:12 # 0
в Си тебе нужно иметь хедер для своей библиотеки. и при этом писать его руками.
в других языках* эти хедеры даже если и есть, то пишутся машиной и людьми обычно не редактируются
вон Макака говорит, что какая-то сишная ИДЕ тоже умеет сигнатуры в хедер копировать. это прогресс.
а то, что таким образом в сишке достигается инкапсуляция, так это чудесно и я про это знаю. только других способов-то там по идее и нет :-)
* не считая ожидаемо C++ и совершенно внезапно Лажи, ну и обжси до кучи
3.14159265 18.09.2020 19:14 # 0
А в WSDL для библиотеки нужны стабы. В чём отличие-то?
>и при этом писать его руками
Не обязательно.
Вообще не вижу корреляции между функцией IDE сгенерить h-файл и возможностями языка.
Desktop 18.09.2020 19:17 # 0
а так отличие в том, что ты свои дефиниции мейнтейнишь в одном файле, а не в двух
3.14159265 18.09.2020 19:19 # 0
А разве в свифте когда объявили protocol, его не нужно мейтенить в двух местах (объявлении и реализации)?
Desktop 18.09.2020 19:29 # 0
если ты говоришь про имплементацию протокола, так это уже совсем другая сущность. её может и не быть в данном конкретном модуле.
3.14159265 18.09.2020 19:33 # 0
Поменяли протокол — нужно поменять реализацию, верно?
Desktop 18.09.2020 19:41 # 0
вот тебе пример на C++, как я его понимаю (если в чём проебу, старшие товарищи поправят)
у тебя есть абстрактный класс
он описан в .h файле
.cpp файла у него ведь нету, верно? (ну даже если есть, то только лучше для моего примера)
есть наследник абстрактного класса.
у него есть и .h, и .cpp
то есть это три файла
в Свифте протокол в одном файле и реализация в другом файле
это два файла
выигрыш в полтора раза
масштабируй даже на небольшой проект на ~1000 файлов, нифига себе экономия энтропии
а кто там что потом меняет и рефакторит, это вообще к теме разговора не относится
defecate-plusplus 18.09.2020 19:44 # +1
Desktop 18.09.2020 20:02 # 0
rotoeb 18.09.2020 20:06 # 0
https://php.ru/
defecate-plusplus 18.09.2020 20:07 # +1
когда ставишь компилять, сражаешься на мечах на стульях в коридоре
всё равно всё в шаблонах через шаблоны
/green
Desktop 18.09.2020 20:13 # 0
то тогда конечно меняем в браузерах js на C++
bormand 18.09.2020 20:12 # 0
Desktop 18.09.2020 20:17 # 0
если захочется конструктор там позвать
bormand 18.09.2020 20:43 # 0
Когда в хедере у тебя ХуёМоё с единственным полем - указателем на ХуёМоёИмпл. А ХуёМоёИмпл лежит в цппшнике вместе с реализацией методов ХуёМоё.
Ну и твой вариант с тремя файлами тоже часто встречается.
В крестах дохуя вариантов отстрелить себе ногу так то.
guest8 18.09.2020 20:45 # −999
bormand 18.09.2020 20:47 # +1
Стабильное ABI. Методы не виртуальные, на их порядок и количество насрать. А все кишки спрятаны в реализации и их можно менять как хочешь без переконпеляции клиента.
Qt это юзает, к примеру.
defecate-plusplus 18.09.2020 20:55 # +1
нет ничего идеального
guest8 18.09.2020 20:57 # −999
defecate-plusplus 18.09.2020 21:04 # +1
ты свой ХуёМоё экспортировал в длл
в приложении клиента импортируешь ХуёМоёЛиб.длл, но компилятор клиента также должен знать как минимум о размере объекта ХуёМоё, чтобы выделить ему, например, 56 байт на стеке (для этого вместе с длл ты поставляешь и хедер), скомпилил, собрал, молодец
теперь ты решил, что в ХуёМоё надо хранить на одно приватное поле больше - int dick_length_;
пересобрал ХуёМоё.длл - всё, клиент пошёл по пизде, его теперь тоже надо пересобирать
guest8 18.09.2020 21:11 # −999
defecate-plusplus 18.09.2020 21:16 # 0
ABI
> укококозатель
https://en.cppreference.com/w/cpp/language/pimpl
господи, даже на дцпреференс статью сделали для тебя, что за анскильность задавать такие вопросы в интернете
guest8 18.09.2020 21:22 # −999
guest8 18.09.2020 21:24 # −999
guest8 18.09.2020 21:30 # −999
defecate-plusplus 18.09.2020 22:07 # 0
bormand 18.09.2020 21:16 # 0
2) Там указатель, в этом и минус подхода. Но в случае с интерфейсом и фабрикой он тоже будет.
Если ты хочешь максимум пирфоманса, ты вынужден светить кишками наружу.
guest8 18.09.2020 21:21 # −999
bormand 18.09.2020 21:22 # 0
Либо просто привык после какого-нибудь Qt.
guest8 18.09.2020 21:24 # −999
3.14159265 19.09.2020 00:20 # 0
> теперь ты решил, что в ХуёМоё надо хранить на одно приватное поле больше - int dick_length_;
Какая кресто-инкапсуляция )))
Абасракция потекла по штанине.
bormand 18.09.2020 21:04 # 0
Удобство в том, что у этой хренотени крайне стабильное ABI. Ты в любой момент можешь выпустить новую версию либы с новыми фишками или полностью перехуячить реализацию. И старые клиенты будут совместимы с этой дллкой.
Кстати, в ХуёМоёИмпл методы совсем не обязательны. Можешь юзать его в методах ХуёМоё просто как структуру.
guest8 18.09.2020 21:36 # −999
bormand 18.09.2020 21:40 # 0
Pimpl не настолько гибкий в плане поштучной подмены компонентов. Да и "импл" часто просто структура без методов.
guest8 18.09.2020 21:46 # −999
3.14159265 19.09.2020 01:03 # 0
>Добавленрие поля хз, но вроде тоже
Там в каком-то смысле ещё хуже.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html
The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an InvalidClassException. A serializable class can declare its own serialVersionUID explicitly by declaring a field named serialVersionUID that must be static, final, and of type long.
However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the private modifier where possible, since such declarations apply only to the immediately declaring class serialVersionUID fields are not useful as inherited members.
guest8 19.09.2020 01:05 # −999
3.14159265 19.09.2020 01:12 # 0
В плане ABI проблем конечно меньше. Но при использовании RPC-технологий (а это в ынтырпрайзе частый гость) они как бы возвращаются вместе с сериализацией.
3.14159265 19.09.2020 01:31 # 0
В Йажа всё-таки есть более-менее рабочая инкапсуляция. И сериализационных и ABI-проблем меньше.
То есть безболезненно добавить приватное поле пожалуй можно, только осторожно и c transient.
Но «перегенерить стабы и скелетоны» когда-то давно было довольно частой ситуацией во времена корбы и рми. Даже при неизменном классе, а например при обновлении версии jvm с 4ой на 5ю.
3.14159265 19.09.2020 00:18 # 0
Это же кресты ебаные. В них нет никакой логики.
СиПлюсТруп вдобавок к имеющемуся в сишке механизму инкапсуляции (headers) сделал ещё один (классы с приватными полями).
Где можно «прятать» поля.
Механизм ожидаемо оказался полным говном, т.к. приватные поля хоть и не видны, но влияют на размер структуры.
И к тому же в их содержимое всегда можно посмотреть скастив структуру в массив.
То есть поставленные цели не достигнуты: ни сокрытия, ни абстрагирования достигнуть не удалось.
guest8 19.09.2020 00:22 # −999
guest8 19.09.2020 00:22 # −999
guest8 19.09.2020 00:23 # −999
guest8 19.09.2020 00:24 # −999
guest8 19.09.2020 00:26 # −999
guest8 19.09.2020 00:28 # −999
bormand 19.09.2020 00:30 # 0
Либо у тебя структура в паблике и часть ABI, либо ты её прячешь но начинаешь дрочить кучу.
Либо ты делаешь ёбаный хак с резервированием места - для клиента поля не видны, только char buf[N].
guest8 19.09.2020 00:33 # −999
bormand 19.09.2020 00:35 # 0
Если ты все методы сделаешь виртуальными, а поля клиенту не покажешь - всё будет как в жабе.
Если ты поля клиенту покажешь, даже приватные - они станут частью ABI, клиентов придётся пересобирать, зато работать будет быстрее и аллокатор можно не дрочить.
Просто жаба тебе выбора не даёт, вот там это и выглядит "естественно".
guest8 19.09.2020 00:37 # −999
3.14159265 19.09.2020 00:44 # 0
>Интерфейс класса не изменится.
Ахаха. Наивный. Почитай про java serialVersionUID.
>Но в ООП совершенно естественно добавить приватное поле.
Именно поэтому я против «ООП».
Они не сделали инкапсуляцию данных или абстракцию, скрывающую детали реализации от пользователя API.
Они просто сделали говно на котором писать нельзя.
И в этом и заключается фокус.
Но далее говноооп нам экспортирует публичные методы интерфейса на которых мы уже и пытаемся что-то сваять.
Очевидно, что сваять ничего нельзя - поэтому отовсюду торчат фасады, обёрточки, pimpl-указатели.
3.14159265 19.09.2020 00:53 # 0
Это вообще стандартная практика.
Ещё один паттерн, сделать енум с ид параметров и хуйнуть flexible array member.
guest8 19.09.2020 00:30 # −999
guest8 19.09.2020 00:32 # −999
guest8 19.09.2020 00:42 # −999
guest8 19.09.2020 00:44 # −999
guest8 19.09.2020 00:45 # −999
guest8 19.09.2020 00:59 # −999
3.14159265 19.09.2020 00:55 # 0
Если ты анскильный птушный лох, то безусловно.
Потому я уже устал вам объяснять, что массив — единственная нужная структура данных.
И чем вы быстрее это поймёте, тем будет лучше.
В Сишке пацаны используют flexible array member. Пока ооптухи делают поля приватными и рвут стек.
3.14159265 19.09.2020 00:12 # 0
То есть С+Труп сделал свою реализацию сишных хедеров через public/private.
И свою реализацию линковки, через виртуальные функции.
Но этот подход соснул хуйца и мы возвращаемся к .h и extern "C".
Ахахаха.
guest8 19.09.2020 00:15 # −999
defecate-plusplus 18.09.2020 20:20 # 0
но можно фабрику абстрактных синглтонов написать, конечно)
(но это и будет та самая единица компиляции, которой надо форвард-декларацию на конкретный ХуёМоё иметь)
можно сделать IoC, чтобы ХуёМоё сам себя зарегистрировал в каком-то реестре, как плагины делают, а потом абстрактная фабрика хуяк хуяк - нашла во мху енота и отдала
на что только люди не пойдут, лишь бы не использовать шаблоны через шаблоны!
bormand 18.09.2020 20:28 # 0
This.
Но можно и просто фабричную функцию рядом с интерфейсом оставить, если это что-то внутреннее. Кишки с полями в хедер не торчат - и ладно.
guest8 18.09.2020 21:19 # −999
defecate-plusplus 18.09.2020 21:23 # 0
что за предрассудки
кресты не сишка, лучше иметь инлайн, где он нужен, чем течь от джампов
guest8 18.09.2020 21:27 # −999
bormand 18.09.2020 21:30 # 0
Можно юзать несколько прекомпайлед хедеров, по одному на подсистему например. Тогда не всё, а только десяток-другой файлов.
guest8 18.09.2020 21:31 # −999
bormand 18.09.2020 21:34 # 0
Потом, конечно, ты будешь ждать пока соберутся остальные. Но они не всегда нужны.
guest8 18.09.2020 21:39 # −999
bormand 18.09.2020 21:44 # 0
Поэтому что-то у тебя будет на инлайнах и инклудах, чтобы работало побыстрее. Что-то будет на интерфейсах или пимпл чтобы изоляция получше и конпеляция побыстрее.
guest8 18.09.2020 21:48 # −999
bormand 18.09.2020 21:56 # 0
guest8 18.09.2020 22:16 # −999
Desktop 18.09.2020 22:06 # 0
https://govnokod.ru/26961#comment576217
guest8 18.09.2020 22:15 # −999
Desktop 18.09.2020 21:35 # 0
с этим говном мамонта сталкиваюсь по большим праздникам (хотя тут уместнее антоним)
думаю, что это технически должно быть возможно, ведь в общем приватные методы класса в обжективе так и пишут: делают экстеншн в .m файле и текут
пиздец конечно там атмосфера
3.14159265 18.09.2020 19:27 # 0
>а вы ещё это в 2020-ом году предлагаете в качестве "инновации"
Да, в Сишке есть киллер-фича: линкер. А ЖСах и Йажах его нет.
Спольски писал про это.
https://www.joelonsoftware.com/2004/01/28/please-sir-may-i-have-a-linker/
Вместо линкера в мире лалок принято ебошить: http://c.d.n/pitux.latest.js. А потом эпично ломаться, когда latest меняет api.
Те что похитрее используют уёб-пак. Но до уровня Сишка-с-линкером по-прежнему не дотягивают, отдавая мегабайты ненужной хуйни. Это я не упоминаю -flto
Вот эту стадию скриптухи почему-то так и не освоили.
>Then, it removes any library functions that your program does not use.
Именно поэтому я за импорт Сишных концептов и технологий будущего во все новомодные языки.
Desktop 18.09.2020 19:32 # 0
3.14159265 18.09.2020 19:38 # 0
Но меня и правда бесит отсуствие линкера. И как результат многие мегабайты жс-кода, кучи фрейморков ради одной кнопочки или автокомплита.
guest8 18.09.2020 21:29 # −999
3.14159265 19.09.2020 00:25 # 0
Я знаю:
>>Те что похитрее используют уёб-пак.
Только он не умеет того, что умеет сишный линкер.
А именно выбрасывать из фреймворков неиспользуемые функции.
guest8 19.09.2020 00:26 # −999
defecate-plusplus 18.09.2020 19:59 # +1
это был вынужденный костыль, чтобы не инклюдить тела функций в каждую единицу компиляции, чтобы потом линекер охуел и сказал "я два раза два раза не повторяю", но и хоть как-то компилятору намекнуть, что это имя функции всем известно, и принимает она вот такие аргументы (первый компиляторам было даже похуй че она там принимает, известна, и на том спасибо, а если неизвестна - то ворнинг, пусть линекер разбирается)
среди практически современников ранней сишки уже были виртовские языки (мудула?), которые как раз и должны были уже отделить мух от котлет, но VHS победил Betamax, а питушки продолжают кипятить и в 2020 году
rotoeb 18.09.2020 17:57 # 0
Я было повёлся на это, а в итоге это оказалось той же хуетой.
bormand 18.09.2020 17:21 # 0
Вообще кошернее наоборот. Ты пишешь интерфейс, а IDE генерит заглушки для реализации.
MAPTbIwKA 18.09.2020 17:22 # 0
но обычно же не так
обычно ты пишешь реализацю, и в процессе рождается понимание, как из нее абстракцию сделать
или нет?
ты ты сначала пишешь интерфейс и тест, а потом код?
bormand 18.09.2020 17:23 # 0
MAPTbIwKA 18.09.2020 17:25 # 0
* делает хоть как-то
* делаем на это тест
* переписываем по уму
guest8 18.09.2020 17:28 # −999
rotoeb 18.09.2020 17:29 # 0
У меня та же хуйня со всеми остальными языками.
guest8 18.09.2020 17:29 # −999
Desktop 18.09.2020 17:36 # 0
guest8 18.09.2020 17:37 # −999
guest8 18.09.2020 16:42 # −999
3.14159265 18.09.2020 16:43 # 0
В сишке тоже структы по умолчанию закрытые, а методы финальные )))
guest8 18.09.2020 16:45 # −999
Desktop 18.09.2020 16:45 # 0
- очередная хипстерская мода. "мы настолько анскильные, что боимся отсабкласситься, кабы чего не вышло"
guest8 18.09.2020 16:48 # −999
Desktop 18.09.2020 16:50 # 0
А потому что только Программист знает, что валидно, а что нет.
Он царь и бог, а не житель анально огороженной крепости с надсмотрщиком как в джава
guest8 18.09.2020 16:52 # −999
Desktop 18.09.2020 16:56 # 0
guest8 18.09.2020 17:02 # −999
Desktop 18.09.2020 17:04 # 0
даже в шарпе есть интернал
не говоря уже про более новые языки
guest8 18.09.2020 17:06 # −999
3.14159265 18.09.2020 17:03 # 0
Наследование создаёт больше проблем, чем решает.
Desktop 18.09.2020 17:05 # 0
а про то, что макака в двух разных местах проповедует абсолютно противоположные вещи)
я за явное лучше неявного
лучше написать final, когда ты понимаешь, что он тебе реально нужен, чем сидеть тупить помнить, а какой же мудификатор здесь по умолчанию
но авторам котлина виднее, конечно
guest8 18.09.2020 17:07 # −999
Desktop 18.09.2020 17:10 # 0
я ж не написал, что final нужен всем в 99% случаев
он может быть нужен
и потом разработка это не только либы
я пишу конечное приложение и буду постоянно биться лбом о мудрость авторов котлина?
guest8 18.09.2020 17:12 # −999
Desktop 18.09.2020 17:15 # 0
если я пишу приложуху, то какая хер разница, опен у меня там или жопен
> потому что наследование в 99% случаев не нужно
- попробуй пописать на UIKit совсем без наследования
guest8 18.09.2020 17:03 # −999
MAPTbIwKA 18.09.2020 16:24 # 0
если выбирать между JS и TS то выбор вроде бы очевиден:) Так что они всё таки сделали лучше.
Другой вопрос, что всю скриптопарашу надо обоссать и сжечь нахуй уже давно, и заменить ее нормальными современными языками с нормальной стат типизацией, с выводом типов, кококок-вариантностью нормальной (а не анальной, как жобе) с сахаром итд
rotoeb 18.09.2020 16:46 # 0
Нахуй нужно всё это говно?
MAPTbIwKA 18.09.2020 15:05 # 0
Эти языки сейчас в тренде, потому и вот
CHayT 18.09.2020 16:13 # 0
bormand 18.09.2020 16:13 # 0
guest8 18.09.2020 22:25 # −999
defecate-plusplus 18.09.2020 22:28 # 0
В хроме флаги есть, проверь
guest8 18.09.2020 22:30 # −999
bormand 18.09.2020 22:32 # 0
guest8 18.09.2020 22:34 # −999
defecate-plusplus 18.09.2020 22:37 # 0
guest8 18.09.2020 22:40 # −999
bormand 18.09.2020 22:40 # 0
guest8 18.09.2020 22:43 # −999
bormand 18.09.2020 22:47 # 0
guest8 18.09.2020 22:49 # −999
bormand 18.09.2020 22:52 # 0
guest8 18.09.2020 22:56 # −999
bormand 18.09.2020 22:50 # 0
На графике видно конкретно, что video decode работает.
guest8 18.09.2020 22:51 # −999
bormand 18.09.2020 22:58 # 0
Видимо просто отношение busy/total по времени. А то, что видюха на расслабоне крутится на низкой частоте не учли.
guest8 18.09.2020 23:04 # −999
bormand 18.09.2020 23:09 # 0
В прыщах в настройках нвидии те же 30% и 500-600МГц.
bormand 18.09.2020 23:13 # 0
Кстати спасибо за идею. Надо во что-нибудь поиграть перед сном, а то отопление ещё не дали.
guest8 18.09.2020 23:15 # −999
bormand 18.09.2020 23:22 # 0
Я просто в 3дмарке стресс-тест гонял когда охлаждение системника проверял. 200+ ватт он с неё вполне выжимает.
guest8 18.09.2020 23:23 # −999
bormand 18.09.2020 23:28 # 0
На самом деле, интересно было бы нейросетки на ней погонять. Тензорфлоу вроде умеет юзать тензорные ядра.
guest8 18.09.2020 23:31 # −999
Izumka 18.09.2020 23:33 # 0
Приведи реальный пример.
guest8 18.09.2020 23:35 # −999
bormand 18.09.2020 23:39 # 0
guest8 18.09.2020 23:44 # −999
bormand 18.09.2020 23:45 # 0
guest8 18.09.2020 23:47 # −999
bormand 18.09.2020 23:50 # 0
guest8 18.09.2020 23:55 # −999
bormand 19.09.2020 00:01 # 0
На 5ГГц получилось только 6 гипертредов из 12 запустить без троттлинга.
Резать жалко, вот соберусь новый покупать - тогда можно попробовать по приколу.
guest8 19.09.2020 00:04 # −999
bormand 19.09.2020 00:06 # 0
На последних поколениях вроде опять металл начали заливать.
guest8 19.09.2020 00:14 # −999
bormand 19.09.2020 00:18 # 0
guest8 19.09.2020 00:19 # −999
CHayT 18.09.2020 23:55 # 0
guest8 18.09.2020 22:51 # −999
guest8 18.09.2020 22:51 # −999
guest8 19.09.2020 14:41 # −999
defecate-plusplus 18.09.2020 22:43 # 0
Ну и вдруг у тебя не на декодирование, а тупо на обслуживание приемки мпег чанков с сервера.
Ещё надо разобраться какой кодек пришел (профиль и тд)
bormand 18.09.2020 22:47 # 0
А вот всякие косинусные преобразования и все что дальше скорее всего уже видюха.
guest8 18.09.2020 23:33 # −999
bormand 19.09.2020 00:03 # 0
guest8 19.09.2020 00:11 # −999
bormand 19.09.2020 00:20 # 0
Навскидку, в своей памяти ему удобнее будет декодить. А потом скопировать. Она всё-таки поближе, чем память видюхи.
А так то и проц видюхе и видюха процу могут в память срать.
guest8 18.09.2020 22:47 # −999
3.14159265 19.09.2020 01:58 # 0
intel_gpu_top
bormand 18.09.2020 22:37 # 0
Так что если играть в распоследние игры или считать что-то на видюхе не собираешься - впизду её.
guest8 18.09.2020 22:38 # −999
3.14159265 19.09.2020 01:57 # 0
DXVA2
guest8 19.09.2020 14:01 # −999
bormand 19.09.2020 14:09 # 0
guest8 19.09.2020 14:19 # −999
bormand 19.09.2020 14:44 # 0
Оно оптимизируется, конечно, если матан вспомнить. Но все равно вычислений дохуя.
Кобенирование кусков картинок и мыльный фильтр полегче будут.
defecate-plusplus 19.09.2020 14:56 # +1
MAKAKA 19.09.2020 15:04 # 0
играй в VA VA (до)
Izumka 18.09.2020 22:36 # 0
guest8 18.09.2020 22:40 # −999
3.14159265 19.09.2020 02:06 # 0
Вот если загрузка CPU не упадёт, то уже нужно пердолиться.
3.14159265 19.09.2020 02:00 # 0
d++ дело говорит. Зависит от формата же. Ютуб совсем недавно AV1 выкатил в прод.
И с сервера уже может AV1 приходить, без спроса. И ни одна видяха его пока не умеет декодить.
И VP9 кстати тоже, если комп старше 5 лет.
guest8 19.09.2020 09:56 # −999
Pig 18.09.2020 23:38 # 0
guest8 18.09.2020 23:39 # −999
guest8 18.09.2020 23:41 # −999
guest8 18.09.2020 23:45 # −999
guest8 18.09.2020 23:48 # −999
bormand 19.09.2020 00:57 # 0
guest8 19.09.2020 01:02 # −999
bootcamp_dropout 19.09.2020 01:07 # 0
надо прогу которая из коментов в говнокоде делает посты
guest8 19.09.2020 01:08 # −999
guest8 18.09.2020 23:47 # −999
3.14159265 19.09.2020 00:27 # 0
Кстати в ФФ наконец-то завели libva для X11. Вот только недавно. 2k20.
guest8 19.09.2020 00:30 # −999
bormand 19.09.2020 00:33 # 0
Там есть такой замечательный примитив как загрузка прямоугольника из буфера.
guest8 19.09.2020 00:34 # −999
bormand 19.09.2020 00:43 # 0
Через текстуру в OpenGL можно ещё выводить.
Х.з., может ещё какой-то способ есть, о котором я не знаю.
З.Ы. Но эти преобразования очень криво работают. По сути только RGB, BGR, RGBA и ABGR. Остальное у меня не получалось запустить, цветовые маски игнорятся.
3.14159265 19.09.2020 01:00 # 0
VA-API video decode/encode interface is platform and window system independent but is primarily targeted at Direct Rendering Infrastructure (DRI) in X Window System on Unix-like operating systems
The main motivation for VA-API is to enable hardware-accelerated video decode at various entry-points (VLD, IDCT, motion compensation, deblocking) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, H.265/HEVC, and VC-1/WMV3).
Myxa 19.09.2020 18:37 # 0