LINUX.ORG.RU

Существует ли язык высокого уровня, который устойчиво быстрее C?

 ,


0

1

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

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

Так вот, возможно ли сделать такой язык? Если да, то в каком направлении копать?

А может уже существуют такие языки, просто из-за популярности C на них мало кто пишет, поскольку всплывают проблемы совместимости с существующей базой уже готового кода?

★★★★★

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

Вот ещё про строки красивый глюк:

Это не красивый глюк, а идиотский компилятор, который в 2016 году не понимает, что присвоение адреса константы указателю не на константу должно сопровождаться хотя бы предупреждением :-) А в (типа) типобезопасном цепепе, такая программа вообще не должна компилироваться :-) Но нет, предоставлена милая возможность отстреливать себе все возможные конечности :-) Бугага :-)

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

Ещё Haskell есть. Подстановка и специализация позволяют компилятору делать очень эффективные программы.

Да вроде ж не очень эффективные, судя по шутауту.

Какие ещё «из всех зол» неустранимы в Ада, но устранены в Rust?

Можно избавиться от висячих указателей. Впрочем, любой язык с подсчётом ссылок так может, так что я не прав. В Rust есть скорее частный случай, позволяющий расширить применимость быстрого выделения «со скоростью стека». В общем, похоже, с вопросом разобрались.

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

Это не красивый глюк, а идиотский компилятор

При чем тут компилятор? Это идиотский язык, который сохраняет совместимость с 70-ми.

А в (типа) типобезопасном цепепе, такая программа вообще не должна компилироваться :-) Но нет

Чо нет? Предупреждения для слабаков?

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

При чем тут компилятор? Это идиотский язык, который сохраняет совместимость с 70-ми.

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

Чо нет? Предупреждения для слабаков?

Если компилятор выдал предупреждения, но скомпилировал программу, которая потом вылетела в SIGSEGV, то какого тогда хрена дедушка Бьярн рассказывал, что в цепепе упор делается на технологию компиляции, которая отсеивает массу глупых ошибок? И после этого, когда константа без проблем присваивается указателю на не константу и программа обсирается, то кроме усмешки это ничего не вызывает :-) Бугага :-)

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

Да вроде ж не очень эффективные, судя по шутауту.

Специализацию в задачах шутаута почти негде применить, они слишком маленькие. И «позволяет компилятору» не значит, что компилятор (единственный существующий) это реально делает.

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

Сначала ты зарубишь на носу

Нет, сначала ты пройдешь в известном направлении.

компилятор - это именно та программа

... которая реализует язык, со всеми его странностями. Ты си защищаешь штоле, упоротый?

которая можешь оценивать приемлемость и потенциально опасные участки кода и предупреждать об их присутствии

А может не оценивать. Почитай, что такое компилятор.

упор делается на технологию компиляции, которая отсеивает массу глупых ошибок?

Потому что она отсеивает. Но только у тех кто умеет читать.

кроме усмешки это ничего не вызывает :-) Бугага :-)

«Сам шучу - сам смеюсь»? _Это_ у тебя получается.

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

... которая реализует язык, со всеми его странностями. Ты си защищаешь штоле, упоротый?
А может не оценивать. Почитай, что такое компилятор.

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

Потому что она отсеивает. Но только у тех кто умеет читать.

Иди, иди, ступай скорее :-)

«Сам шучу - сам смеюсь»? _Это_ у тебя получается.

Бугага :-)

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

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

Эти твои потуги не стоят ничего - я могу только констатировать факт пердежа в лужу, не более того.

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

Этот рантайм — стандартная библиотека Си.

Это стандартная библиотека, к самому языку не имеет никого отношения - это раз.

Ты же говорил, что тут опечатка:

опечаток, приводящих к синтаксически корректной неверной программе

Лужа.

Я же тебе уже написал: Text_IO.Get_Line гораздо безопасней, чем gets, scanf.

Уважаемый эксперт - scanf и Get_Line - никак не могут сравниваться, ибо обладают совершенно разным функционалом и используются совершенно для разных целей.

Не нравится gets() - юзай fgets(), либо что там ещё есть в этой помойке.

Но всё это не имеет значения - пока ты конкретно не скажешь чем оно безопасней.

Нормальные массивы не позволяют читать/писать за их пределами

Это как? Рантаймдерьмом что-ли? Ну дак это нифига не эвивалент и никого это волнует, ибо «нормальные массивы» - никак не конкурент «не нормальным» - вот когда будут, тогда ты это и напишешь.

а также не позволяют указателю случайно попасть в массив не того типа.

Чё?

Тоже никаких предупреждений при компиляции. А при запуске умирает :-)

Датычё:

warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
printf("%s", chomp("Test"));
^

На все касты конст в не конст - любая помойка даёт ворнинг.

Вот ещё про строки красивый глюк:

Уважаемая ламерюга, опять ты мне показываешь своё скудоумие. Причём тут строки и причём тут глюк? Ты опять спастил какую-то херню и ничего не в ней не понимая ретранслируешь её мне?

Это write на ro, ни глюки, ни строки ни любая другая помойка - тут не причём.

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

Ах, так это же Лисп. В отличии от унылых недоязыков, типа C, в которых даже такая тривиальная вещь, как JIT, с горем пополам и через анальное отверстие реализовано в GCC 5 как экспериментальная библиотечка, может выглядеть и как C, и как JavaScript, и даже как цепепе, если кому-то такой бред придёт в голову :-) Бугага :-)

Совсем что-ли дебил? Чем JIT для лиспа отличает JIT для цэ? Ничем.

с горем пополам и через анальное отверстие реализовано в GCC 5 как экспериментальная библиотечка

Тот JIT к цэ не имеет никакого отношения - он никому не нужен, ибо гцц - это конпелятор, а не JIT. И пилится он в нём форфан.

В том же tcc, да и в любых других джит-помойках для цэ - этот самый джит существует с тех времён, когда твой лисп валялся на помойке, как собственно ваяляется он и сейчас.

Отличается хотя бы тем, что в цепепе с его уродливым уродством уродств под названием «шаблоны» можно вывихнуть мозг

Как это мило, говорить с амёбой. Кукарекала про парсер, а теперь уже про уродство - ты уж определись, ламерюга.

Как я понял - с парсером ты обосрался?

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

а строчку во время компиляции так и не сгенерить

Это так же - проблема субъективно твоя.

Хотя бы тем отличается, что не надо надрачивать организацию хедеров и файлов реализаций

Этого не требуется.

не надо следовать ODR-правилу, чтобы программа компилировалась быстрее, а исходники бы соответствовали «правилам хорошего тона для задротов». :-) Ну что уж там говорить то :-)

Опять же - попытка как-то примазать какие-то левые требования к самому языку.

Уважаемая ламерюга, ты либо кукарекаешь про язык - либо не кукарекаешь вообще. Все твои потуги юлить меня волнуют мало.

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

Правила «хорошего тона» - это шизофрения ламерков и к языку не имеют никакого отношения. То же самое я могу кукарекать и про лисп.

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

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

Я приводил примеры тех ошибок, что на Аде синтаксически невозможны.

Запомни, амёба, раз и навсегда. Не имеет смысла сравнивать что-то( хотя твоё сравнение итак не имеет смысла, ибо своими «может», «возможно», «менее» - ты можешь только подтереться) по каким-то притериям юзабильности/эргономики, что не является эквивалентом с т.з. применения.

Т.е. нельзя сравнивать легковушку и автобус, кукарекая, что легковушкой проше управлять, она меньше/манёвренней и прочее. Точно так же, нельзя сравинать телегу и легковушку, кукарекая, что телега безопаснее, ибо 10км/ч - они не эквивалентны.

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

И тут наш никчёмыш начинает кукарекать - посмотрите, машины опасны - сколько людей гибнет. Нету педаль нажал - умер. Вай, вай, вай. А телега - телега она норм, можно заснуть за рулём - конь во сталб не въедет - всё круто.

Хочешь бомбить на телеге - бомби, нахрен ты припёрся сюда и несёшь херню?

Gcc — один из лучших компиляторов C и C++

ГГц всегда было насрать на твои ворнинги прочие проблемы ламерков. Для тебя, ламерка - есть шланг. Там ламерки уже учитываются и ворнинги сыпит на каждый чих.

но синтаксис (и семантика) самих языков делают программирование на них едва ли не более опасным, чем на ассемблере.

Тупорылая ты амёба. Ты кукарекаешь про рантайм поведение левой либы, которое ни к синтаксису, ни к семантики отношения не имеет.

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

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

Совсем что-ли дебил? Чем JIT для лиспа отличает JIT для цэ? Ничем.

Кто тут дебил всем ясно давно :-) Ну смотри, в Common Lisp, например, есть compile - функция, описанная в стандарте, с помощью которой можно легко компилировать любую лямбду без шевеления волос в заднице от ужаса :-) А что есть в стандартном Си? :-)

Тот JIT к цэ не имеет никакого отношения - он никому не нужен, ибо гцц - это конпелятор, а не JIT.

Тут «гцц - это конпелятор, а не JIT» :-)

В том же tcc, да и в любых других джит-помойках для цэ - этот самый джит существует с тех времён

Ну а тут уже «В том же tcc, да и в любых других джит-помойках для цэ - этот самый джит» :-) И ничего, что tcc - это то же «конпелятор» :-) Просто т.н. «эксперту по сишке» так удобнее подтасовывать фактики :-) Бугага :-)

И пилится он в нём форфан.

А докажешь, что он «пилится форфан»? :-)

Как это мило, говорить с амёбой. Кукарекала про парсер, а теперь уже про уродство - ты уж определись, ламерюга.

А по мне так гораздо милее разговаривать с клоуном :-)

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

Бла-бла-бла :-) Шаблоны цепепе - говнястое говно, потому что их скудненькие возможности - просто бледная серость на фоне возможностей макросов Common Lisp :-) Но кто же виноват, что бесплатные реализации Common Lisp пилятся сегодня маленькими количеством человечков, в то время, как компиляторы цепепе или цэ пилятся огромным числом людей? :-) Вот и приходится остальным бедолагам облизываться на возможности Лиспа, но писать на цепепе :-)

Правила «хорошего тона» - это шизофрения ламерков и к языку не имеют никакого отношения.

Иными словами, ты хочешь сказать, что известные во всём мире эксперты по цепепе, а так же сам его создатель, считают пользователей цепепе «ламерками», и пишут в своих книгах «шизофрению»? :-) Ведь существует большая куча книжонок про «стандарты программирования на цепепе», про «подводные камни, которых лучше избегать», про «паттерны», про то, как вывихнуть себе мозг шаблонами и бросить цепепе, перейдя на Ди :-) А ещё создатель языка и улыбчивый член комитета опубликовали целый свод правил того, как надо программировать на цепепе https://github.com/isocpp/CppCoreGuidelines :-) И всё это для ламерков? :-) Как же это всё мило :-) Бугага :-)

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

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

Кто тут дебил всем ясно давно :-) Ну смотри, в Common Lisp, например, есть compile - функция, описанная в стандарте, с помощью которой можно легко компилировать любую лямбду без шевеления волос в заднице от ужаса :-) А что есть в стандартном Си? :-)

В отличии от унылых недоязыков, типа C, в которых даже такая тривиальная вещь, как JIT, с горем пополам и через анальное отверстие реализовано в GCC 5 как экспериментальная библиотечка

Где тут кукарекал, что что-то должно быть на уровне языка? Тут ты признал что в си жит есть и ни про какие «стандартном си» не кукарекал.

Тут «гцц - это конпелятор, а не JIT» :-)

И, амёба. Он потому тут и конпелятор, что он и есть конпелятор. Что сказать-то хотел?

И ничего, что tcc - это то же «конпелятор»

Никого это не интересует - ты кукарекал, что:

реализовано в GCC 5

Тебя ткнули рожей в помойку, что был он задолго до гцц5. То, что жит как в libgccjit - это жит, а значит и жит в тцц так же.

А докажешь, что он «пилится форфан»? :-)

А докажешь, что не форфан?

Я-то докажу - вперёд, выкатывай его реальное применение, либо требование под которые он пилится.

А по мне так гораздо милее разговаривать с клоуном :-)

Собственно мразь опять зашкварилась и обделалась.

Бла-бла-бла :-) Шаблоны цепепе - говнястое говно, потому что их скудненькие возможности - просто бледная серость на фоне возможностей макросов Common Lisp :-)

Вперёд - выкатывай Common Lisp-мусор, который будет хоть как-то конкурент цэпэпэ-мусору.

Опять же - попытка съехать с темы. Ты там кукарекала, мразь, что:

чтобы программа компилировалась быстрее

Тебя обоссали - либо выкатывай возражения по теме, либо жри дерьмо дальше.

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

Но кто же виноват

Дак пили - вперёд. Твоя реализация не стоит ничего, а пилят её куда большее кол-во амёб, чем тот же гцц.

Как всегда съезжание с темы - никого неинтересуют твои отмазоны.

Иными словами

Опять же, мразь пытается юлить. Ты там кукарекала:

не надо следовать

Как-будто бы в крестах надо, т.е. кресты определяет какие-то критерии отбора кода. Это враньём - тебя смешали с дерьмом.

Либо ты приводишь какие-либо выкладки из стандарта, которые обязывают тебя следовать чему-то, либо срёшь себе на рыло.

Ведь существует большая куча книжонок

Никого не интересует твоя помойка. В целом я могу даже не отвечать на это - ты уже обделался. Зачем ты мне это пишешь? Либо выкатывай что-то официальное, либо сри себе на рожу.

А ещё создатель языка и улыбчивый член комитета опубликовали целый свод правил того, как надо программировать на цепепе https://github.com/isocpp/CppCoreGuidelines :-) И всё это для ламерков? :-) Как же это всё мило :-) Бугага :-)

Не правил, а рекомендаций. Никакого отношения к цэпэпэ они не имеют. Ведь это правила от этой мрази, а не официальные.

А требования от мрази - никого не интересуют. Либо выкатывай оффициальные требования стандарта, либо - жри дерьмо.

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

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

:-)

Где тут кукарекал, что что-то должно быть на уровне языка? Тут ты признал что в си жит есть и ни про какие «стандартном си» не кукарекал.

Так в уродливом Си жит есть, но сказано же было, «через анальное отверстие» :-) А вот в великом и могучем Лиспе - через стандартненькую функцию compile :-) Ведь в стандартненьком Си жита нет :-) Да и откуда ему там быть? :-)

И, амёба. Он потому тут и конпелятор, что он и есть конпелятор. Что сказать-то хотел?

Такой умненький критик, а такой не внимательный :-)

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

Это жалкая потуга уровня детсада утвердиться скверненькими выраженицами на фоне сверстников:-) Под Витальку косить не выйдэ :-)

Дак пили - вперёд. Твоя реализация не стоит ничего, а пилят её куда большее кол-во амёб, чем тот же гцц.

Ахаха :-)

Как-будто бы в крестах надо, т.е. кресты определяет какие-то критерии отбора кода. Это враньём - тебя смешали с дерьмом.

Не определяет :-)

Либо ты приводишь какие-либо выкладки из стандарта, которые обязывают тебя следовать чему-то, либо срёшь себе на рыло.

Уважаемый неуважаемый :-) Стандарт предназначен для разработчиков компиляторов. Так что правил кодирования на языке, в нём описанном, не может по определению :-) Для этого существуют книжонки и руководства тех, кто разрабатывал язык. Это ведь они знают лучше всех, как лучше пользоваться своим поделием. Следовательно, и «правила хорошего тона» задают эти персонажи :-)

Никого не интересует твоя помойка. В целом я могу даже не отвечать на это - ты уже обделался. Зачем ты мне это пишешь? Либо выкатывай что-то официальное, либо сри себе на рожу.

Так я про официальные книжки говорю :-) Так что дерябни фужерчик ещё :-)

Не правил, а рекомендаций. Никакого отношения к цэпэпэ они не имеют. Ведь это правила от этой мрази, а не официальные.

Эй, алё, глаза разуй :-) Написано английским языком в заголовке: «C++ Core Guidelines» :-) Далее можно прочитать: «Such rules affect application architecture and library design. Following the rules will lead to code that is statically type safe, has no resource leaks, and catches many more programming logic errors than is common in code today.» :-) «Rule» по-английски - «правило» :-) Может быть фужерчик? :-)

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

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

Может, но не обязана как раз из-за отсутствия требования в языке (стандарте).

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

Может, но не обязана как раз из-за отсутствия требования в языке (стандарте).

Ты выдрал фразу из контекста и добавил несущественный комментарий, который уводит дискуссию в сторону :-) Зачем? :-) А речь то шла о том, что чем качественней компилятор, тем качественней процесс компиляции, что даст шанс выловить больше ошибок :-) Речь шла о том, что дело не в языке, а в компиляторе :-)

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

Так в уродливом Си жит есть, но сказано же было, «через анальное отверстие»
А что есть в стандартном Си?

Ты уже определись - есть ли он в си, либо его нет.

:-) А вот в великом и могучем Лиспе - через стандартненькую функцию compile

В лиспе нет никаких «стандартненьких функций» амёба опять юлит и «заслуги» диалектов приписывает лиспу, а ласпа диалектам.

В конечно итоге - к чему мы пришли. Ты обосрался во всём и си есть нормальный жит, сильнее любого лиспа, ибо гцц сильнее - запиленый через нестандартнуй функцию - в этом всё отличие?

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

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

Ведь в стандартненьком Си

Зачем ему там быть?

Такой умненький критик, а такой не внимательный :-)

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

о жалкая

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

Утверждаюсь я полным и тотальным множинием любого твоего высера на ноль. Мне абсолютно не важно - правильный он или нет - балаболка должна быть смешана с дерьмом.

Ахаха :-)

Твой недолисп - это уровень гцц уровня 1.0, только под текущие реалии и с тонной дерьмого рантайма - который итак срёт по тонне в год любая макака.

Сами же кишки гцц и актуальные таргеты пилят так же человек 20 как и у твой помойки. Да даже до уровня тцц это дерьмо не доросло.

Уважаемый неуважаемый :-) Стандарт предназначен для разработчиков компиляторов.

Ахринеть, как закукарекал. Смешно, посмеялся.

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

Так что правил

Тебя не просят правил - тебя просят статус.

Для этого существуют книжонки и руководства тех, кто разрабатывал язык.

Тупая свинья, не разрабатывал, а стандартизировал, тупая ты мразь. К самому языку и к разработке они не имеют отношения.

Они же пишут стандарт для конпеляторов - как они могут писать о том, как писать на этом языке, если на нём не пишут?

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

Может амёба из мбмв расскажет мне как мерить линейкой или какой инструмент мне использовать? Задача мёбы писать макулатуру и не вякать.

Это ведь они

Нет, поделие это не их. Правила хорошего тона - не правила, а частная рекомендация. Правило - это рекомендация, нотариально заверенная.

Так я про официальные книжки

Можно мне пункт стандарта, который описывает список «официальных книжек» и предписываем им следовать? Или ты опять сбрехал?

«C++ Core Guidelines»

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

«Rule»

Нет, амёба. Правило не имеет силы без его официального статуса, без статуса правило - есть рекомендация, причём частная.

Тем более там написано, что правило там не в контексте С++, а в контексте написание определённого кода с определёнными требованиями. Там же не написано, что «правила для написания на С++» - там написано, что «правила для написания хороших и пацанских правграмм».

Уже давно пора понять, что не дано. Не можешь ты поймать меня - сколько бы ты не пердел, как бы ты себя не вёл. Кого бы ты из себя не строил - всегда будет обсёр. Тужся лучше.

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

он абстрагирует линейный однопоточный PDP-11 с локальной памятью

что ты имеешь ввиду под этим выражением?

«линейный» - а что, память НЕ линейная? ОС предоставляет промежутки доступной для использования памяти, менеджер памяти её логически склеивает в 1 кусок, так или иначе она линейна и только линейна?
Или под словом «линейный» ты имел ввиду «последовательный доступ»?

однопоточный

#include <pthread.h>

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

Какой тогда взять язык?
Если взять С++, то, по словам Страуструпа из его интервью, он (язык) забирает на себя многие рутины, которые на Си ДЕЙСТВИТЕЛЬНО утомляет делать руками. Ну или привет копипасте кода, которая приводит к трудноуловимым ошибкам. А ООП там прикручено чтобы не плодить велосипеды на Си с указателями на функции внутри структур с данными.

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

А речь то шла о том, что чем качественней компилятор, тем качественней процесс компиляции, что даст шанс выловить больше ошибок :-)

Нет амёба. Конпелятор не значит ничего. Никакие ошибки выловить в реальном мире невозможно по определению и это никому не нужно.

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

Речь шла о том, что дело не в языке, а в компиляторе :-)

Ведь измерить соответствие у фигур правильной/не правильной формы - это так одинаково и дело совсем не в правильности.

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

Нет головы и голова не болит. В целом любая обезьяна, которая кукарекать про «небезопасность» С++ - кукарекает про небезопасность Си - это уже определяет её тотальную некомпетентность.

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

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

Тебя не просят правил - тебя просят статус.

Слив засчитан :-)

Тупая свинья, не разрабатывал, а стандартизировал, тупая ты мразь.

Слив засчитан :-)

Они же пишут стандарт для конпеляторов - как они могут писать о том, как писать на этом языке, если на нём не пишут?

Ну как, пальчиками по клавишам :-)

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

Так и стандартом такого выродка, как цепепе можно тоже неплохо подтираться :-) Небось, 1300 страниц на долго хватит :-) Только дорого - больше 200 у.е. :-) Бугага :-)

Может амёба из мбмв расскажет мне как мерить линейкой или какой инструмент мне использовать?

Так спроси у амёбы, но сначала дерябни фужерчик :-)

Задача мёбы писать макулатуру и не вякать.

Тебе виднее :-)

Можно мне пункт стандарта, который описывает список «официальных книжек» и предписываем им следовать? Или ты опять сбрехал?

Так под официальными книжками подразумеваются издания с присвоенным ISBN :-) Ты разве не знал? Попался :-)

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

Бугага :-) Так твой язык, на котором ты строчишь никчёмные комменты тоже можно интерпретировать как угодно :-) И ржать ещё :-)

Тем более там написано, что правило там не в контексте С++, а в контексте написание определённого кода с определёнными требованиями. Там же не написано, что «правила для написания на С++» - там написано, что «правила для написания хороших и пацанских правграмм».

Да ты ещё и читать не умеешь :-) Ах да, ты же английский интерпретируешь вольно, поэтому 1-е предложение правил «The C++ Core Guidelines are a collaborative effort led by Bjarne Stroustrup, much like the C++ language itself.» означают не то, что означают :-) Слив засчитан :-)

Уже давно пора понять, что не дано. Не можешь ты поймать меня - сколько бы ты не пердел, как бы ты себя не вёл. Кого бы ты из себя не строил - всегда будет обсёр. Тужся лучше.

Засчитано :-)

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

что ты имеешь ввиду под этим выражением?

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

а что, память НЕ линейная?

Я говорил о локальной памяти, читай внимательнее.

#include <pthread.h>

pthread предоставляет только ограниченные возможности работы с нитями ОС.

Какой тогда взять язык?

Такой, который решит перечисленные проблемы. Пока такого нету. Может Rust когда-нибудь дорастет.

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

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

Естественно, такую «модель вычислений как в современных процессорах» можно себе позволить в асме. Си (впрочем, как и другие языки) достаточно абстрагируют чтобы не вникать очень глубоко. Не вижу проблемы.

Я говорил о локальной памяти, читай внимательнее.

А что за «локальная память»?

pthread предоставляет только ограниченные возможности работы с нитями ОС

Можно узнать о том, чего не хватает pthread для собственной полноценности?

Спрашиваю всё это не ради «дискутирую потому что я тролль и могу». Я в последнее время достаточно плотно программирую всякие поделки на Си (этот язык выучить просто, а вот писать на нём - искусство). Успел много раз наступить на грабли типа

realloc(): invalid next size: 0x000000000255a030

и

malloc.c:2372: sysmalloc: Assertion `(old_top ... 0)' failed.

...не говоря уже о сегфолтах
Но я не жалуюсь. Ни на язык (мне-то он нравится), ни на сложности. На ошибках учатся.

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

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

Естественно, такую «модель вычислений как в современных процессорах» можно себе позволить в асме. Си (впрочем, как и другие языки) достаточно абстрагируют чтобы не вникать очень глубоко. Не вижу проблемы.

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

А что за «локальная память»?

Та, что напрямую и полностью доступна процессору. В отличии от, например, NUMA.

Можно узнать о том, чего не хватает pthread для собственной полноценности?

Системные нити — не единственная модель параллельных вычислений. Есть еще зеленые нити, есть суперскалярность, есть векторизация. Си как язык не предоставляет абстракций для использования этих средств; а так же способа создания таких абстракций (кроме корявого препроцессора). Поэтому приходится надеятся на умный компилятор, который с каждым годом становится все сложнее (потому что ему приходится угадывать оптимизации там, где более продвинутый низкоуровневый язык мог бы указать их явно).

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

Системные нити — не единственная модель параллельных вычислений. Есть еще зеленые нити, есть суперскалярность, есть векторизация. Си как язык не предоставляет абстракций для использования этих средств; а так же способа создания таких абстракций (кроме корявого препроцессора).

Шозабред. Абстракции созданы и используются.

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

Если ты о intrinsics, то с ними код превращается в кашу. Как раз потому, что семантика языка С не расчитана на обработку массивов данных, а сложное метапрограммирование невозможно.

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

Если ты о intrinsics

Об intrinsics, модели памяти, API для разных видов нитей. Понятно, что они не безопасные и не самые красивые, но они есть и используются.

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

Да, я неправильно выразился. Имплементации этих вещей обычно существуют в расширений компилятора, но:

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

Мой поинт в том, что для замены С нужен низкоуровневый язык с хорошей расширяемостью метапрограммированием. Я все еще надеюсь на Rust.

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

Я все еще надеюсь на Rust.

К тому что ты описал - раст не имеет никакого отношения.

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

Уважаемая ламерюга, неужели тебе, некомпетентной обосанной мрази кто-то давал право оценивать что есть в сишке, а чего нет.

Ничего не используется. Ничего не создано - только помойка.

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

Уважаемая ламерюга, неужели тебе, некомпетентной обосанной мрази кто-то давал право оценивать

Я взял его сам. Можешь его отнять? Нет? Тогда ПНХ, беспомощный мусор.

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

Об intrinsics

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

Это абсолютно бесполезное дерьмо. В представление гцц-помойки он шедулит под первопень, ну отсилы под кору2 в кавычках, потенциально.

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

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

модели памяти

Посмеялся.

API для разных видов нитей

Никому не нужна твоя помойка-апи, которая мимикрует одно под другое. Да и их нету.Да и это левое, убогое дермище.

Сишка - это язык не для юзанья api, а для его написания, если говорить об api. Всё это делается через анальное отверстие.

Понятно, что они не безопасные

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

и не самые красивые

Нету.

используются.

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

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

Я взял его сам. Можешь его отнять? Нет? Тогда ПНХ, беспомощный мусор.

Уже отнял. Сам ты можешь только насрать себе на рожу, убогую. Ещё ты можешь курлыкать и делать вид, что ты не беспомощная мразь и пытаться мимикрировать под меня - авось как-то получится не обделаться. Уже сам факт этого о много говорит.

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

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

Если что-то на миллион строк кода, то тут нужно уже смотреть.

ядро ОС например :-)

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

Да иди уже, недоразумение.

Кукареку.

Чтож ты такой питух.

/me обнял и погладил тайлгуннера, мой милый бородатый мужик ^_^

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

десятки твоих зашкваров валяются на лоре,

Ржачненькое чтиво, кстати.

а сотни выпилены.

Можно ссылочек на ржачь? Нет ничего прикольнее чем обсирающийся tailgunner.

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

Я взял его сам.

Право публично обосраться у тебя есть. Право сказать что-то, над чем не будет ржать весь ЛОР, ты потерял еще очень давно.

anonymous
()

Так вот, возможно ли сделать такой язык? Если да, то в каком направлении копать?

Конечно можно. 1) Устроиться м.н.с-ом в ИСП РАН, 2) написать кандидатскую, 3) найти коммерческий проект по созданию супер-компилятора, 4) работать в этом направлении до конца жизни.

Вы пытаетесь найти ящик Пандоры? Я встречал таких людей, они очень быстро делали из своего продукта closed source, и сливались какой-нибудь корпорации/крупному заказчику. Будь то социалочки, или какие-нибудь инструментальные средства для Augmented reality, или самопальные ОС.

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

Конечно существует, и это ассемблер.

+1

pacify ★★★★★
()
Ответ на: Summary от Xenius

про оптимизации и скорости

Сравнивал чистый С и фортран, с точки зрения оптимизации и скорости выполнения - примерно равны (ничтожно мало преимущество одного языка над другим в зависимости от версий компиляторов). Идеальной замены С нет в тех проектах где он должен использоваться. Об этом тут что-то такое говорилось, в контексте явы, но ява не то (хотя и годна местами). Хорошая замена для С это С++.

Не профе в этих ваших ЦЕ и ЦЕПЕПЕ, но пишу на них временами. В плюсах есть множество всяких удобных фишек, без потери преимуществ в скорости (нью, делиты, ссылки, умные указатели и прочие радости этих ваших плюсиков). Годный-быстрый код можно написать на чём угодно - зависит от цели же. (ТОЧКА). Другого не может и быть (капча 100 как-бы намекает).

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

Идеальной замены С нет в тех проектах где он должен использоваться.
Хорошая замена для С это С++.

Assertion failed :-)

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

Самая главная «фишка» в цепепе - это деструкторы. Всё остальное - неудобоносимый балласт, который приходится тащить на плечах в угоду соответствия «стандартам кодирования на цепепе» :-) Как таковых радостей и плюшек там очень мало. Ну, разве что, регулярные выражения ECMAScript имеются из коробки :-) Практически любой код на цепепе всё равно выглядит как код на C. Только C, как язык, гораздо меньше, и в этом его неоспоримое преимущество над тонной других монстроидальностей, в числе которых и пресловутый цепепе :-)

anonymous
()

Очевидный С++

С++, как минимум, не может медленнее С, если приоритетна задача максимальной оптимизации. Просто потому, что С — подмножество (с крайне незначительными оговорками) С++. Однако, в С++ сделано несколько шагов в отношении выноса вычислений из рантайма в компилтайм. И там где С-шник вынужден будет мучать процессор, плюсовик просто использует шаблоны или constexpr.

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

Значит, можно смело утверждать, что на тех платформах, на которых есть С++, С как прикладной язык не нужен.

Однако, у С есть существенное преимущество перед любым (почти) другим языком: С существенно проще. Поэтому, компиляторы с С получили распростанение в разных микроконтроллерах. На этом поле с ним тяжело тягаться, в силу практического отсутствия альтернатив.

next_time ★★★★★
()
Ответ на: Очевидный С++ от next_time

там где С-шник вынужден будет мучать процессор, плюсовик просто использует шаблоны или constexpr

Тащемта сишник может запилить скрипт-генератор.

anonymous
()
Ответ на: Очевидный С++ от next_time

Алсо:

Исключения, в теории, позволяют намекнуть компилятору, какая ветка кода будет редко выполняться и таким образом получить дополнительную оптимизацию, которой С-шник не получит

man likely/unlikely

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

скрипт-

это, строго говоря, уже будет не совсем С

next_time ★★★★★
()
Ответ на: Очевидный С++ от next_time

С++, как минимум, не может медленнее С

А по-русски можно? :-)

Однако, в С++ сделано несколько шагов в отношении выноса вычислений из рантайма в компилтайм. И там где С-шник вынужден будет мучать процессор, плюсовик просто использует шаблоны или constexpr.

Ох ёпт :-) Откуда вылез то? :-)

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

Неадекватная особенность языка, от которой шарахаются все разработчики ядер и рантаймов, не говоря уже даже о разработчиках Qt :-)

Значит, можно смело утверждать, что на тех платформах, на которых есть С++, С как прикладной язык не нужен.

Это тому, кто знает цепепе, но не знает Си. А тот, кто умеет пользоваться Си, тому цепепе, как бы, до лампочки :-) И как раз таки для прикладных задач, а не для «маразматически-обобщённых», где месяцами надо «активно искать общность», чтобы высрать пару десятков шаблонов с классами :-)

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

А по-русски можно? :-)

а зачем?

Ох ёпт :-) Откуда вылез то? :-)
Неадекватная особенность языка, от которой шарахаются все

то есть, по существу возразить нечего, ок

Это тому, кто знает цепепе, но не знает Си.

невозможно, т.к. С - подмножество С++

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

а зачем?

Вот видишь, можешь, если хочешь, или если припечёт :-)

то есть, по существу возразить нечего, ок

А чему возражать, если и так понятно, что во время компиляции в цепепе ничего толкового сделать нельзя :-) Давай, сгенерируй с помощью constexpr или шаблонов строчку во время компиляции :-) Расскажи тут, как в цепепе-14, в котором «много сделано для компайл-тайма», тот самый шаблон basic_regex компилирует машкод для регулярок :-) В общем, давай, покажи, как крут цепепе и как много в нём сделано для метапрограммирования :-) И когда ты сам не сможешь ничего тут показать, тогда ты выкатишь ссылку на чьё-то монстроидальное, нечитаемое уродливое поделие, которое ни один адекватный использовать не будет :-) И даже ты (ведь ты адекватный?) :-)

невозможно, т.к. С - подмножество С++

Ясное дело :-) Ведь те, кто знает только цепепе, на цепепе только и пишут и ни на что другое не способны, и ни как всерьёз восприниматься не могут :-)

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