LINUX.ORG.RU
ФорумTalks

С++ 2018

 , ,


1

5

Не буду особо подводить итоги года, подведу лучше итоги C++ за 20 лет.

С тех пор как вышел стандарт C++98, утекло довольно много воды, поменялись мейнстримовые операционные системы, браузеры, базы данных, принципы и методы разработки ПО, и вообще, кто бы мог подумать что Microsoft станет одним из главных контрибьюторов в Open Source.

C++ все так же остается разрастающимся монструозным говном, однако в 98 году, у него была действительно важная область применения - системный софт для десктопных операционных систем. Сейчас область применения C++ - разве что поддержка всех тех сраных легаси систем, которые на нем когда-либо были, по недоразумению, написаны. Ну и конечно, социальные пособия умственно отсталым «программистам», которые не способны понять простой факт, что не все является гвоздем если у тебя в руках молоток, а переусложненное монструозное говно, представляющее из себя набор исключительно идиотских архитектурных недоразумений и просто случайных ляпов, не имеет смысла применять хоть где-то кроме как для перемножения матриц на стеке(уау, как круто перегрузили оператор сложения!) и то, если ваш проект не выходит за рамки «Мама, смотри, я написал треугольник на DirectX!».

В связи с этим вопрос - когда уже закопают труп?

Перемещено jollheef из development

★★

Ответ на: комментарий от lovesan

Как-то слишком хорошо, чтобы быть правдой. 15 лет лабали чисто под винду, и тут бац - всё заработало на лине. Так не бывает.

Речь, конечно же, не про JSON парсеры и подобного рода либы.

RazrFalcon ★★★★★
()
Ответ на: комментарий от lovesan

Уже переводят.

Но будет Windows-only конечно.

facepalm.jpg

Просто для протокола: тебя просили указать библиотеки, которые работают на линуксе и маке.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Ты маленько пропустил огромный промежуток развития дотнета. Но да, действительно работает. Действительно всё кроме GUI. Действительно 80% библиотек давно портировали под .Net Standard.

На линуксе .Net Core работает абсолютно круто, мы его пихаем в докер и деплоим. Проблем вообще никаких.

lovesan ★★
() автор топика
Ответ на: комментарий от tailgunner

На маке тоже всё работает, что и на .Net Standard

Но WPF и некоторые еще другие вещи типа AD - технологии чисто физически виндовые, ждать их на других системах смысла нет. Ну клиент к AD/LDAP куда не шло, но остальное... Ты же не будешь жаловаться дескать на винде нет LXC? Вот то то и оно. Хотя MS на самом деле старается с этой своей WSL, и чую недалек тот день когда они и контейнеры в интерфейс ядра запилят

lovesan ★★
() автор топика
Ответ на: комментарий от tailgunner

Это тендер, заточенный под конкретного поставщика? :)

Справедливые требования для встраиваемых систем с несколько более повышенными требованиями и более длинной историей, чем смартфоны. Не писать же теперь всем на Гугло-Джаве и Свифте (и только под Андроид и иОС), только потому что у всех есть смартфоны?

seiken ★★★★★
()
Ответ на: комментарий от lovesan

На маке тоже всё работает, что и на .Net Standard

Ты вообще помнишь, что пишешь, или совсем плох стал?

lovesan> .Net Standard же - это стандарт на базовую функциональность

lovesan> А сейчас так переведут WPF и Windows.Forms под него так всё

И при этом:

lovesan> будет Windows-only конечно

.NET и его фанбой как они есть.

tailgunner ★★★★★
()
Ответ на: комментарий от seiken

Справедливые требования для встраиваемых систем с несколько более повышенными требованиями и более длинной историей, чем смартфоны.

Требования справедливые, конечно. Только рынок специфический (и узкий).

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от lovesan

На линуксе .Net Core работает абсолютно круто

Но это очень молодая технология. Сколько ей, пару лет?

Если энтерпрайзу нужен быстрый код - только C++. Ничего не поменялось.

RazrFalcon ★★★★★
()
Ответ на: комментарий от tailgunner

Требования справедливые, конечно. Только рынок специфический (и узкий).

но тогда ТС логично было бы вместо простыни детсадовских наездов спросить нас: «почему у меня попаболь от того, что не все пишут на моём любимом языке X?».

seiken ★★★★★
()
Ответ на: комментарий от tailgunner

Еще раз. WPF и Windows.Forms это чисто виндовоспецифический гуй, дико завязанный на виндовое нутро, а именно на GDI и DirectX.

С чего ты хочешь чтобы оно работало везде вот так и забесплатно вам досталось?

Нет, не будет вам WPF, если конечно вот после релиза под MIT какой-нибудь сумрачный гений не возьмется его портировать, что конечно может быть, но это задача не на один год... Я бы не взялся. Слишком много в виндовой инфраструктуре основанной на DX уж четко связано и слаженно, итд, и имеет интероп друг с другом... в отличие от даже... ну мака

А все остальное - абсолютно портируемо. Вся база дотнет кор - кроссплатформенна, включая BCL, и остальное. А дальше вопрос библиотек, считай оберток над всем этим делом. И MS постарались сделать так, чтобы вот это кроссплатформенное ядро вынести в .Net Standard. И он охватывает 99% всего говна, начиная с StringBuilder и заканчивая интеропом с сишным кодом(System.Runtime.InteropServices итд).

lovesan ★★
() автор топика
Ответ на: комментарий от tailgunner

Т.е. если совсем грубо.

Вот у тебя есть функция в некоей сишной либе PerfectGui.dll, называется MakeMeFeelFuckingGood

Странно да, на прыщах ее нет?

Вот весь WPF в этих функциях.

Сначала реализуйте вот все это. Рантайм DX/D2D/DWrite и интероп между ними, или аналоги, а потом заикайтесь о WPF

lovesan ★★
() автор топика
Ответ на: комментарий от RazrFalcon

Ну как молодая. Уже версия 2.2 вон.

Код, еще раз - там быстрый.

.Net Core бьет по производительности и сам классический .Net Framework, и даже java -server

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Еще раз. WPF и Windows.Forms это чисто виндовоспецифический гуй, дико завязанный на виндовое нутро, а именно на GDI и DirectX.

Еще раз, последний: ты утверждал, что .Net Standard работает в т.ч. на Linux и Mac, но WPF и WInForms, которые (по твоим словам) скоро войдут в .Net Standard, будут Windows-only. Так что .Net Standard в целом будет Windows-only (а скорее всего, он и сейчас такой, а ты что-то путаешь или просто врешь).

Сначала реализуйте вот все это.

Да мне-то оно зачем? Всё это вендовое легаси - сношайся оно конем (или с теми, кому за это платят).

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 2)
Ответ на: комментарий от tailgunner

Ааааа, понял твою предъяву.

Нет, в .Net Standard как стандарт они не войдут. Они просто будут выпускаться как либа .Net Standard, с соответствующими типа ограничениями рантайма. Типа нет винды - не, проехали.

Собственно почему?

Попробую объяснить вкратце.

Вот .Net Standard содержит стандарт на Interop с сишным кодом. Помоему даже это включая что не надо указывать там расширение либы, дескать dll или so. Но. Либы которые абсолютно compatible с .Net Standard - они понимаешь, могут эти разные либы использовать, сишные, для разных платформ соответственно разные.

Вот рантайм WPF это такая вот сишная либа. Условно говоря это надстройка над D2D+D3D.

Тебе никто из линукса не помешает попытаться конечно поставить приложение .Net Core что имеет в зависимостях .Net Standard библиотеку WPF. Только вот при запуске оно сразу тебе скажет - нет у тебя там «d3d9.dll», всё, пока.

lovesan ★★
() автор топика
Ответ на: комментарий от RazrFalcon

Не знаю деталей, но производительность там мощнейшая. Сам убедился. Суть в чем, они прикололись в коре сделать такую вещь, чтобы код можно было компилить помоему только один раз, а не как раньше - захотел загрузил-выгрузил, и вообще полная динамика. Думаю с этим связано. Но не знаю точно

lovesan ★★
() автор топика

Какие gui кроссплатформенные (linux, win) проекты рекомендуешь поглядеть на github для оценки пора ли закапывать c++ (qt) ?

x905 ★★★★★
()
Ответ на: комментарий от x905

Слушай, не рекомендую кроссплатформенные GUI вообще. Забудь о них. UX там нулевой абсолютно.

GUI это меньшая часть работы в принципе, и делать ее надо всегда отдельно.

Просто сделай GUI в винде на WPF, на маке на Cocoa(или что там?), на Линуксе ну скажем на Qt.

Но кроссплатформенный GUI это миф. Дело в деталях. Нам виндовозам в основном похрен так то, но ты бы видел насколько задевает маководов любая мелочь которая не является частью UI-концепции Apple.

Так что нет, никакого кроссплатформенного UI невозможно, это миф.

lovesan ★★
() автор топика

С тех пор как вышел стандарт C++98

Кстати, а есть кто-нибудь, кто застал более старые плюсы? Это же вообще первый стандарт, который приняли. И как тогда было с совместимостью? Ну там, Borland, Microsoft, Wacom, gcc. Был вообще шанс пересобрать программу, сложнее hello world, без тонны #ifdef?

atrus ★★★★★
()
Ответ на: комментарий от lovesan

В плюсах всё же несколько проще работать с ассемблером, нежели из JVM, не находишь?

.NET в этом плане вроде чуть лучше, благодаря unsafe, хотя я с ним не работаю.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)

В геймдеве без него сложно - нет замены. Для того, чтобы получить замену нужно переписать игровые движки. Вот пишем мы на Unreal Engine 4 под VR. Какие у нас альтернативы? Только Unity и все. Все остальное с VR не дружит. А юнити имеет свои минусы перед Unreal. Поэтому слезать с C++ нет возможности.

Norgat ★★★★★
()
Ответ на: комментарий от atrus

Кстати, а есть кто-нибудь, кто застал более старые плюсы?

Я застал, но меня мало волновали не-Borland компиляторы. Хотя не припомню проблем со сборкой на Watcom и VisAge.

tailgunner ★★★★★
()
Ответ на: комментарий от hateyoufeel

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

Deleted
()
Ответ на: комментарий от lovesan

Так что нет, никакого кроссплатформенного UI невозможно, это миф

qt не видел и qbittorent как пример ?
так я понял ответа я не дождусь на проект github ?

x905 ★★★★★
()
Ответ на: комментарий от RazrFalcon

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

Вон, в онтопике трей выпиливают активно, в оффтопике трей вполне себе ещё используют.

Для фоновых приложений, запущенных пользователем - трей must have, но нет же, у нас always on пожиратель ресурсов должен быть.

Хотя тот же torrent клиент было бы неплохо выключать, или музыкальный плеер, чтобы не жрали.

Ресурсы не бесплатны.

Deleted
()
Ответ на: комментарий от Deleted

Юзаю трансмишен под линукс и под винду, все замечательно. У него правда свой гуй под мак, но разве обязательно всегда прогибаться под капризных эм.. пользователей мака?

goingUp ★★★★★
()
Ответ на: комментарий от Deleted

Утиный трей не нужен. Фоновое приложение может и без трея работать. Пытаешься его запустить ещё раз - оно и всплывает, настраивается.

Suigintou ★★★★★
()
Ответ на: комментарий от goingUp

Это называется «самоуважение», а не «капризы».

Хотя я и не являюсь пользователем яблока, но скажу так: жрать можно как свинья, всё подряд, а можно то, что хочешь. В твоих интересах потакать своим хотелкам. В таком случае можно использовать доступные способы воздействия (деньгами, имением мозгов разработчиков, своими руками и т.д.), чтобы получить желаемое (например, если приложение достаточно функциональное, но работать с ним неудобно, то неплохо бы морду приложению переделать).

К трансмишену вопросов не имею. Но, например, те же electron-based приложения сейчас огорчают в сочетании с гномом: например тот же скайп/дискорд/рокетчат хотелось бы по левой клавише мыши в трее разворачивать и использовать (т.е. в оперативной доступности), а по правой иметь возможность выключить через контекстное меню.

Теперь родной трей из гнома выпилили, TopIcons Plus работает только как правая кнопка мыши.

Хотя в остальном гном устраивает, но такие вот вещи весьма огорчают. Для того, чтобы открыть в скайп, я должен лезть в меню, вбивать начало sky… и открывать по иконке приложения или же открывать через контекстное меню и т.д.

Хотя раньше, если я хотел кому-то позвонить, я просто левой кнопкой разворачивал приложение и выбирал того, кому хочу звякнуть.

Deleted
()
Ответ на: комментарий от Suigintou

Повторюсь: раньше приложение работало и разворачивалось по одному клику в трее (оно имеет контекст, отдельный от текущей рабочей области, так как относится к связи, а не к контексту работы с кодом, к примеру).

Сейчас, либо его надо искать в меню (оно вышло из оперативного доступа), либо держать незакрываемым в том же контексте, что и рабочие документы.

По моему, уточками являются тут те, кому слишком сложно держать в голове более одного контекста работы.

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

Deleted
()
Последнее исправление: merhalak (всего исправлений: 2)
Ответ на: комментарий от Suigintou

И я бы ещё понял, если бы изменили в угоду дизайну так: приложения из трея являются обычными приложениями на панели задач, просто в закрытом состоянии они недоступны для переключения через Alt+Tab (т.е. не мешаются для работы), и видны на панели задач:

  • отдельно (хотя бы добавляются справа, а не слева);
  • только когда запущена «фоновая» часть задачи.
Deleted
()
Ответ на: комментарий от Deleted

Повторюсь: раньше приложение работало и разворачивалось по одному клику в трее

И закрывалось при завершении сеанса пользователя. Дали же им сервисы и демоны. Но нет, хотят жрать непонятно что. Для интерактивного софта - закрепленная кнопка на таскбаре.

Suigintou ★★★★★
()
Ответ на: комментарий от Suigintou

Закрываться оно должно тогда, когда запросит пользователь, а не тогда, когда завершается сеанс.

Я прекрасно понимаю, что лично я могу залезть в консоль и вырубить через systemctl, но вырубать какой-нибудь демон музыкального плеера или торрент трекера через консоль - это зашквар.

Deleted
()
Ответ на: комментарий от Suigintou

Пример получше: выключить к херам IM, из-за того, что режим «невидимости» или «вне сети» разработчиками не продуман (куда проще выключить тот же телеграм, нежели переводить в режим «disable notifications»), не находишь? Потому что если он включен - он виден в трее и ты знаешь, что ты на связи. Если он выключен - он выключен и тебя никто не беспокоит.

systemctl stop telegram.service
Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Фишка в том, что кросплатформенного GUI один хрен не существует. Везде есть какие-либо нюансы. С чем-либо один черт придется мириться.

Look’n’feel мы можем сделать кроссплатформенным (минимальное подмножество на пересечении возможностей). UX - нет. Одинаковым - да, кроссплатформенным - нет.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 2)
Ответ на: комментарий от Deleted

Давайте без громких фраз. Какие конкретно проблемый у Qt по вашему мнению?

А то я пишу кроссплатформенный GUI и никто не жалуется.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Лишь потому, что не жрали лучшего.

Не просто ведь так «лучшее - враг хорошего».

Понятное дело, если лучшего просто нет (экономически нецелесообразно), то жаловаться не будут, так как даже не представляют, что может быть лучше.

Deleted
()
Ответ на: комментарий от RazrFalcon

Как бы у тебя может быть часть GUI кроссплатформенна, часть нет (например, если ты умеешь интегрироваться с touchbar под маком).

Либо же ты пишешь только на подмножестве.

Deleted
()
Ответ на: комментарий от lovesan

На GC надейся, а сам не плошай. Да и не забывай о том, что каким бы «управляемым» язык ни был, в нем все равно есть «неуправляемые» ресурсы, за которыми надо следить (IDisposable). Так что никакой язык от кривых рук не застрахован. Вон, Java пилят два десятка лет, но никто не мешает программам на нём течь изо всех щелей.

Unicode4all ★★★★★
()
Ответ на: комментарий от RazrFalcon

Понятное дело, что кроссплатформенная часть - приличная часть кода. Хотя, если выкинуть модель, то зависит от приложения напрямую.

А по поводу масла: ты чай завариваешь в сахарнице или всё же в заварочном чайничке (если вообще не пакетиком)?

Сахарница - 95% по объему от заварочного чайничка (в одном наборе и т.д., но, думаю, аналогия понятна), однако оставшиеся 5% - это носик.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

FAR не портировали ещё, вроде.

Я про то, что ты поддерживаешь лишь то, что поддерживает твой тулкит, а не платформу в целом.

Заявлять, что мы такие-сякие-кроссплатформенные и при этом хер забить на chromebook с мультимедиа рядом/mac с touchbar и прочих «не таких, как все» можно, но разве кроссплатформенный софт не подразумевает интеграцию с целевой платформой?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.