LINUX.ORG.RU

Опубликованы C++ Core Guidelines

 ,


10

8

Бьерн Страуструп и Герб Саттер опубликовали в открытом доступе объемный документ, содержащий основные принципы разработки на современном С++. Авторы надеются, что следование данным принципам позволит разработчикам эффективно использовать язык и писать безопасный и поддерживаемый код.

C++ Core Guidelines: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/

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

Когда винтаж пытаются сделать модой — тоже кстати, вопрос: зойчем останавливаете прогресс?
Objective C, Modula-2, Oberon-2, Eiffel, Ada, Limbo, Alef, Newspeak, Ocaml и прочие.

Расскажи

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

Какой винтаж? Язык близкий к железу? Так надо начинать не с языка, а с железа, млять! Менять весь фундамент, потому что как бы очередной «убийца» не изгалялся, он будет сливать и сосать.

This. Сделайте сначала коммерчески успешную дисп-машину, а потом кукарекайте.

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

Концептуально правильно - это проверять лайфтаймы статически

В духе unikernel MirageOS? ну да, годно. Но есть ощущение что одно прекрасно выражается через другое: статика через динамику, вот реализовали же статические языки эльбруса поверх динамического автокода.

Такое заодно лайвкодинг и хотсваппинг позволяет реализовать, не напрягаясь.

Опять же, есть ощущение что корни у «динамической загрузки модулей» в оберонах из call-by-name из алгола. И сопустствующего полиморфизма, который Вирт просто не напрягался далее формализовать ибо минимализм и дисциплина + лайвкодинг (в отличие от ml, MirageOS и «модули как функторы» в MirageOS).

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

со статическими проверками у Эль-76 было просто никак, ф64 наше всё.

Эль же динамический, низкий уровень. На котором строился статический, высокий (все эти языки со взаимозаменяемыми библиотеками-компонентами друг для друга).

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

вот реализовали же статические языки эльбруса поверх динамического автокода.

Кому нужен твой эльбрус, чудак? Какая от него польза? Идите уже из этой темы все в пень, теоретики диванные.

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

Концептуально правильно - это проверять лайфтаймы статически

В духе unikernel MirageOS?

В духе Rust или Cyclone. Про лайфтаймы в Mirage не слышал.

Эль же динамический, низкий уровень. На котором строился статический, высокий

На ненадежном фундаменте ничего не выстроишь.

все эти языки со взаимозаменяемыми библиотеками-компонентами друг для друга

Взаимозаменяемость обеспечивалась ОСПО и стандартизированными *ФОК . Не понимаю, причем тут лайфтаймы.

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

Сделайте сначала коммерчески успешную дисп-машину,

не взлетит. Потому что миллионы мух и всё такое.

Вот например: ты бизнес, у тебя есть проблема. И открывается окно возможностей.

Ты можешь решить одну и ту же проблему тремя, как минимум способами:
а) техническим — «дали мяч, давай, хуячь». Используя то, что под рукой
б) социальным — найти технозадротов, которые будут использовать то, что под рукой, и не перебирать инструментами
в) научным — найти ботанов, которые придумают инструменты, более лучшие, чем.

или: использовать б) ремесленников, и «тех, кто знает». Будь это орки из вархаммера на красных агрегатах. Если продолжать в таком духе, то сам варп и демоны хаоса не разберутся, как оно у них далее работает.

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

Коммерчески успешная метамодель — это оксюморон.

Потому что «коммерчески» значит массово, а не потому что «успешная».

Тоффлер вон целую книжку про пределы адаптивности индивидумов напейсал, «шок будущего» называется. Не любит народ, когда его за уши в прогресс тянут — пинками в светлое будущее. Народ ещё не торт.

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

Ты погоди, он только, можно сказать, начался этот эльбрус. Далее оборонка, наука и взлетит так, что потом из «кремневой долины» приезжать на поклон будут.

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

Вот когда приедут, тогда и расскажешь. А пока никто не приехал и не собирается.

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

ОСПО и стандартизированными *ФОК . Не понимаю, причем тут лайфтаймы.

Я вот про эту книжку

и

5.3.3 Технологический инструментальный пакет (ТИП). Обзор ТИП-технологии.

Пусть тип пакета имеет вид: тип пак = структ ( об созд, оп ) Цитата: где созд будет обозначать процедуру, создающую объекты АТД и выдающую их в качестве значения, а оп – некоторую операцию обработки объекта АТД. Процедура генерации пакета может иметь вид: об генпак = проц( вж ) % вж – параметр, определяющий время жизни экземпляра пакета

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

в) всё то же самое, только уже метамодель, по которой модель, по которой ремесленники-техношоманы.
Коммерчески успешная метамодель — это оксюморон.

Забористая у вас трава, о как вас вштырило нехило.

Завязывайте срать в темы под кайфом, однако.

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

Про лайфтаймы в Mirage не слышал.

нет, не про лайфтаймы в Mirage. Про то, как там драйвера и протоколы сделаны (модули как функторы). Статически компилируемо.

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

Не любит народ, когда его за уши в прогресс тянут

У тебе ленинизм головного мозга. 99% прогресса в мире происходит из капиталистических стран, в которых этот прогресс двигают именно коммерческие компании. На счету одной только AT&T Bell Labs столько открытий, сколько у большинства советских НИИ никогда не было.

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

Кроме того, это язык с GC, об этом выше уже говорилось.

и что? Без замеров накладных расходов в конкретной системе миф о тормознутости GC это просто миф.

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

К сожалению, процедурный. Поэтому Modula-2 нужно противопоставлять C, а не C++.

не нужно. Полиморфизм модулей с успехом заменяет полиморфизм объектов.

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

Я вот про эту книжку

Я знаю. Но есть еще и такая: http://www.twirpx.com/file/456426/

Процедура генерации пакета может иметь вид: об генпак = проц( вж ) % вж – параметр, определяющий время жизни экземпляра пакета

Это имеет в лучшем случае отдаленное отношение к лайфтаймам как они понимаются Rust, Cyclone и (в будущем) Си++.

Про то, как там драйвера и протоколы сделаны (модули как функторы). Статически компилируемо.

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

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

прогресс двигают именно коммерческие компании.

Одно двигают, три хоронят. Это скорее прогрессоры из Стругацких, могильщики технологий — чем инженеры по развитию.

И из этих 3+1 выживает не самое технически грамотное — а самое социально доступное интеллектуальному большинству решение. Угадай, какое именно.

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

Что, сможешь назвать коммерчески успешные метамодели?

Здесь обсуждается C++ и написанные на 30-м году его жизни рекомендации о том, как программировать на C++ с минимальными шансами отстрелить себе ноги по самые яйца.

Сделайте доброе дело: не срите в эту тему своим бредом на счет хрен знает чего под названием «коммерчески успешная метамодель».

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

Валите отсюда со своим оффтопиком, придурки. Не засирайте тему.

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

Без замеров накладных расходов в конкретной системе миф о тормознутости GC это просто миф.

Замеры накладных расходов на GC уже неоднократно проводились и публиковались. Google вам в помощь.

Его можно не использовать, если он в языке есть, кстати.

Ппц, теоретик. Покажите мне язык, в котором есть GC, но которым не пользуются. И что при этом получается в коде.

Полиморфизм модулей с успехом заменяет полиморфизм объектов.

Мосье, наверное, поклонник Вирта и языков Modula-2 и Oberon-2?

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

это был процедурный язык, без поддержки ООП

Вы не понимаете ООП, как модель мышления (то есть, парадигму программирования). ООП это идеома, фразеологизмы — которые можно реализовать на любом языке из имеющегося в нём механизма полиморфизма.

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

Здесь обсуждается C++ и написанные на 30-м году его жизни рекомендации о том, как программировать на C++ с минимальными шансами отстрелить себе ноги по самые яйца.

Именно эту метамодель, парагидму, методику тебе и пытаются продать.

И как — коммерчески успешно?

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

как программировать на C++ с минимальными шансами отстрелить себе ноги по самые яйца.

Для этого можно взять более другой язык. Более годный, в плане площадок. С более годными изначально заложенными концепциями.

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

Вы не понимаете ООП

Аминь. Понимание, походу, лучше оставить анонимным экспертам, которые будут ваять объектные иерархии вручную на голом C через структуры и указатели на функции в них.

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

Так надо начинать не с языка, а с железа, млять! Менять весь фундамент, потому что как бы очередной «убийца» не изгалялся, он будет сливать и сосать

Так есть такие системы. «Коммерчески неуспешны», ибо миллионы мух и всё такое прочее.

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

Для этого можно взять более другой язык.

Выйдите из криокамеры. Практически везде, где так можно было сделать, уже давным давно сделали. C++ остался там, где либо огромный объем легаси кода (и нет ни одного языка, который бы значительно снизил стоимость перевода этого легаси на новую платформу), либо же альтернативы нет.

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

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

Так есть такие системы.

Типа эльбрус?

Миллионы мух в данном случае вот вообще не канает. Если появится что-то лучшее (во всех отношениях), то на него начнется спрос, на него и перейдут, пока этого нет. Есть академ.поделки для почессания своего чсв и пописáния диссеров.

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

Процедура генерации пакета может иметь вид: об генпак = проц( вж ) % вж – параметр, определяющий время жизни экземпляра пакета

Это имеет в лучшем случае отдаленное отношение к лайфтаймам как они понимаются Rust, Cyclone и (в будущем) Си++.

Это раннее было более расширенное понимание, чем сейчас в Rust/Cyclone/C++. На котором тоже строился полиморфизм компонент-модулей.

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

А вы? Что, уже продали? Тогда можно не отвечать.

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

Это имеет в лучшем случае отдаленное отношение к лайфтаймам как они понимаются Rust, Cyclone и (в будущем) Си++.

Это раннее было более расширенное понимание, чем сейчас в Rust/Cyclone/C++. На котором тоже строился полиморфизм компонент-модулей.

Это «более расширенное понимание» фейлится при возврате указателя на локальную переменную (да и вообще не проверяется статически, AFAIK). В результате его польза для безопасности программ сомнительна в лучшем случае.

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

Опять мимо. Эксперты не будут «ваять иерархии», на то они и эксперты. ООП — это не про иерархии. Это про полиморфизм.

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

C++ остался там, где либо огромный объем легаси кода

и миллионы мух, слетающиеся на «запахи кода» этого легаси

(и нет ни одного языка, который бы значительно снизил стоимость перевода этого легаси на новую платформу)

Таких не существует. Любая альтернатива уже снизила бы.

либо же альтернативы нет.

Альтернатива есть всегда. Вы просто слишком узко мыслите. В терминах движкостроения и закостеневшего легаси.

на каких языках вы предлагаете разрабатывать софт

на модульных.

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

при возврате указателя на локальную переменную (да и вообще не проверяется статически, AFAIK).

Пример? Если вернуть замыкание, например, или коллбек?

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

В чём и тезис, что ЖЦ в каком-то виде всё равно описывать надо.

Опять же, указатели — это дыра в абстракции. Ссылки без описания ЖЦ тоже не то. С ЖЦ получше.

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

Всё очевидно. Модули, ЖЦ, много кульных слов. Бездарная, ни на что не способная школота чешет языком по клаве.

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

при возврате указателя на локальную переменную (да и вообще не проверяется статически, AFAIK).

Пример?

Ы?

int *foo() { int i; return &i; }

В чём и тезис, что ЖЦ в каком-то виде всё равно описывать надо.

С этим никто не спорит. Но описывать ЖЦ научились только недавно, и приживется ли это на практике - время еще не показало.

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

на модульных

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

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

int *foo() { int i; return &i; }

На эльбрусе был Си. Вопрос в то, во что это там скомпилировалось бы, в какой динамический автокод и ТИПы.

Но описывать ЖЦ научились только недавно, приживется ли это на практике - время еще не показало.

тут получается, что в эльбрусах шли наоброт, с ЖЦ компонент, с полиморфизма динамики модулей — в статику поверх этого. В обратную сторону понятно что более трудоёмко, но тут как пример те же «модули как функторы» для драйверов в MirageOS: что-то выводится автоматически и не нужно описывать руками.

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

Не серебрянная, но для программистов на С++ это прям блин откровение что можно без костылей и сегфолтов инкрементально развивать систему, заменять модули, на живой системе. Странно, почему это так. Более другие программисты вот модульность понимают.

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

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

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

Не серебрянная, но для программистов на С++ это прям блин откровение

Это ты сам решил или тебе кто-то сказал? Может, ты уже закончишь нести «свет» и пойдешь писать что-нибудь стоящее на чем тебе нравится?

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

для драйверов в MirageOS

Обана! оно вышло. Что-то бросил года 3 назад за ней следить. И что реально работает? Хм, пора расчехлять книгу по окамлу...снова.

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

ну да, работает. Вот например про то драйвера как модули как функторы: презентация

Network Interfaces As We Learn Them
Interfaces as Module Types

чем-то эти ТИПы напоминает.

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

Но описывать ЖЦ научились только недавно, и приживется ли это на практике - время еще не показало.

ещё прикольная презентация: здесь

например отсюда и по стрелке вниз

Literate DevOps и предложение писать этот ЖЦ поддержки в стиле Reproducible Research/Literate Programming.

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

Он диванный троль и школота.

Скорее какой-то идиот, начитавшийся сказочек про эпическую силу Modula-2 и Oberon-а. Оберонщики — это своего рода секта, они ничего не воспринимают.

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