LINUX.ORG.RU

4 вопроса про C++ UB

 


2

3

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

1. вот тут говорят что в С++ некое UB. если стандарт не определяет поведение для какого-то случая, то он явно это делает? т.е. там сказано типа «when X then Y must happens, in any other case - UB»? или же UB — это просто всё то, что не покрыто стандартом («а вот об этом там ничего не сказано»)?

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

3. что сам стандарт говорит о компилиуемости кода с неопределенным поведением? предписывает ли стандарт компилятору (претендующему на полное соответствие стандарту) отвергать код, последствия которого (даже если они имеют строго очерченные рамки) не определены стандартом?

4. возможно ли теоретически построить такой компилятор, который бы допускал инструкции с UB, но гарантировал бы отсутствие вреда от них через пресечение использования их результатов. пример: в точке A вы пишете конструкцию с у которой часть эффекта определена, а часть - UB, и всё работает нормально. но где-то далее вы добавили код (точка B) для определения результата которого необходимо использовать ранее полученный эффект из A (который UB). и вот уже такую компилятор отвергает сразу (либо останавливает ее в рантайме). ведутся ли такие разработки?

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

Ах да, почему нет смысла заниматься. Я уже ответил на этот вопрос.

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

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

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

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

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

Но нет же. «недоязычок, который, кроме набора базовых api, ничего дать не может - проще» - это остаётся. Проще и быстрее писать «командные скрипты» на баше, чем на плюсах. И конфиг для make проще писать на make-овом «базовом api», чем на крестах и даже на баше. И кроме разве что так любимого тобой хеловорда нет и не будет ни одной серьёзной программы, где систему сборки и «командный интерфейс» выкинут и перепишут на крестах.

Или у тебя свой сакральный смысл спрятан в словах «Вся разница между башем и С++ теряется»?

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

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

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

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

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

Тебе это сложно понять, но ты постарайся.

А читая аргументы уровня:

выкинут и перепишут на крестах.

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

И выкинули именно потому, что недоязычок для описания конфигурация - никому не упёрся. Всем нужна логика, но т.к. колхозники не могут в кресты, а являются запартной школотой, которая кроме пистона ничего не видела - рождаются всякие уроды. Смысла в сущестовании которых нет.

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

Слишком сложно объяснить что-то колхозникам, которые ничего не понимают и не пытаются понять.

Я вот здесь что-то слишком сложное спросил:

у тебя свой сакральный смысл спрятан в словах «Вся разница между башем и С++ теряется»?

Может всё-ж снизойдёшь и объяснишь свои слова «простым смертным»?

она итак на крестах.

Я с этим спорил?

рождаются всякие уроды. Смысла в сущестовании которых нет.

А на чём описывать «логику сборки»? И командную скриптуху?

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

UB не определяется статически в 100% случаях, так что ubsan, дизасм, молитва и пост

И динамически не определяется в 100% случаев, так что только молитва и пост.

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

видит педали, воспринимая их за то, чем едет машина

Другими словами - педали не нужны. Так?

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

Лол :-) Ну опиши эти правила на тех же крестах :-) Осилишь ли :-?

make итак уже повыпиливали

Откуда его повыпиливали?

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

Я с этим спорил?

Да, вот тут:

выкинут и перепишут на крестах.

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

Может всё-ж снизойдёшь и объяснишь свои слова «простым смертным»?

Тебе уже объяснили, но тут проблема не в этом. Проблема в том, что ты пытаешься спорить, ничего при этом за собой не имея.

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

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

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

А на чём описывать «логику сборки»? И командную скриптуху?

Ладно, давай попроще. Ты не особо способный.

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

Именно так и появился тот же жсон, когда структуры начали описывать объектами уровня языка. А жсон - это банальный сишный список инициализации из 80-90 годов.

Точно так же описывается любой правило из make, точно так же описывается любой интерфейс.

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

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

Другими словами - педали не нужны. Так?

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

Лол :-) Ну опиши эти правила на тех же крестах :-) Осилишь ли :-?

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

Откуда его повыпиливали?

Отовсюду. Как минимум с появления autotools. Никто в крестовом мире правила сборки на make не пишет. Есть camke, либо свои кастыли. И почти каждый из этих кастылей является пародией на ЯП, а не на язык описания конфигурации.

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

Какие правила. Выкатывай. Выкатываешь правильно, определяешь его семантику

Встроенные правила GNU make

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

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

Отлично! И где этот «рай на земле», где правила сборки и «командная скриптота» пишется (и модифицируется и отлаживается) на плюсах так-же просто и легко, как на мэйке, баше и им подобных? Где пример доказательства твоих слов?

Я вижу лишь подтверждение обратного: как только какие-то действия можно формализовать - сразу пишется инструмент (да, скорее всего на си или плюсах), который помогает некоторое ограниченное множество действий делать с помощью некоекого api: те-же make, bash и еще вагон утилит.

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

Отлично! И где этот «рай на земле», где правила сборки и «командная скриптота» пишется (и модифицируется и отлаживается) на плюсах так-же просто и легко, как на мэйке, баше и им подобных?

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

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

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

Не используется вменяемый язык для скриптухи только по той причине, что его колхозники не осилят.

Где пример доказательства твоих слов?

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

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

Я вижу лишь подтверждение обратного: как только какие-то действия можно формализовать - сразу пишется инструмент (да, скорее всего на си или плюсах), который помогает некоторое ограниченное множество действий делать с помощью некоекого api: те-же make, bash и еще вагон утилит.

Колхозник, ты уже обедался 10раз и обделываешься ещё раз. Языки описания действия сдохли, как сдох make. bash не язык описания действий, а cli никакого отношения к башу не имеет.

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

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

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

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

Как всегда. Пришел - перданул и обделался.

Встроенные правила GNU make

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

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

Я дал тебе конкретные правила. Не надо шланговать. Полное описание можешь посмотреть в info make и make -p. Если что-то непонял - спроси, я объясню, как должно быть)

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

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

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

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

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

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

Раз пошло такое дело. Я явно переоцениваю ваши умственные способности, поэтому давай объясню максимально просто.

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

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

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

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

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

Показываешь правило, даёшь описание семантики

Все условия были выполнены. Если нет - скажи, что именно неясно :-) Счётчик твоих сливов уже близок к переполнению.

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

Почему? Ты привёл тезис - тебе и доказывать.

Как только я перестану тебе позволять - ты заткнёшься и выплишься отсюда слёту и нахрен

Вот это тоже неплохо бы подтвердить чем-либо :-)

Обрати внимание: первый «тезис» самый главный :-) Лол :-)

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

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

В этом нет необходимости. Я тебе уже показал такой пример

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

Судя по тому, что регулярно сливается - самый настоящий)

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

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

совсем убогий

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

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

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

Ложь - именно мне ни кто и ничего не приводил. Ты меня с кем-то путаешь.

Никто твоём «легко и просто» мэйке не пишет

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

это ты должен опровергать мои слова

ну так нет массового применения крестов вместо баша, систем сборок и т.п.

Языки описания действия сдохли, как сдох make.

ну тогда и gcc сдох

bash не язык описания действий

а что он тогда? И где можно посмотреть его замену прогами на крестах?

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

Зачем ты пытаешься мне доказывать таблицу умножения? И кто с этим спорит? Да, реализовать можно. Но вместо этого все пользуются чем угодно, только не крестами, даже в сугубо крестовых проектах. Ты один д'Артаньян?

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

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

Угу, а ещё вода мокрая и небо голубое.

Ты считаешь, что интерфейс из какого-то недоязычка нельзя представить в рамках крестов?

Нет, я считаю, что ты конченный дебил, который делает самые невероятные выводы из самых простых слов, при этом не в силах объяснить свои собственные высеры.

По теме - я не считаю что «что интерфейс из какого-то недоязычка нельзя представить в рамках крестов» и не давал ни единого повода так думать. Но ты всё равно пытаешься на меня повесить всех собак.

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

В некоторых случаях всё же определется(динамически):

int i(...);
if (i != std:numeric_limits<int>::max()) ++i;
else ...; //UB on increment

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

Ты один д'Артаньян?

Да он вообще ничего не делает, кроме срачей на LOR-е.

Попросите у него хоть какой-нибудь код показать, посмотрите, что будет.

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

И ошибка тут в том, что это api зашито в язык и выглядит как язык

И это в ряде случаев бывает удобно.

Возьмём helloworld на bash'е:

echo Hello, World.

А теперь то же самое на си:

#include <stdio.h>

int main()
{
  printf("Hello, World.");
  return 0;
}

Сколько лишних букв и других ненужных значков! Зачем мне для однострочника включать какой-то stdio.h? Но без него будет предупреждение. А какой смысл в слове «main» и в фигурных скобочках после него? А зачем мне возвращать 0, который я потом не читаю?

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

А если мне надо будет ввести переменную в скрипт? На баше я напишу:

for i in *
  do
    echo $i
  done

А на си мне мало того, что придётся реализовывать велосипед foreach для списка файлов (в плюсах foreach есть, но содержимое каталога в виде списка к нему всё равно придётся прикручивать), так ещё и переменную i зачем-то описывать. Обязательное описание переменных и типизация — дело полезное, но не для однострочников.

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

кресты язык. Они не ограничены неким набором базовых интерфейсов.

Весь вопрос в том, нужны ли мне те или иные возможности для конкретной задачи. Да, make написан на си, и на нём же можно написать ещё один make для собственных нужд. Но зачем мне писать make, если он уже написан и работает?

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

aureliano15 ★★
()
Ответ на: комментарий от aureliano15
return 0;

Ненужная строчка в программе на С.

Для честности, нужно либо убрать return 0 из программы на С, либо добавить exit 0 в скрипт.

Честный однострочник на Posix Shell выглядит так:

#!/bin/sh
echo Hello, World.
exit 0

А если мы хотим писать как можно меньше, и не важно насколько плохо, то вариант на С:

int main(){ puts("Hello, World");}

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000
return 0;

Ненужная строчка в программе на С.

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

Честный однострочник на Posix Shell выглядит так:

#!/bin/sh
echo Hello, World.
exit 0

Вот exit 0 на bash'е точно не нужен, если он не используется в дальнейшем. Да и если используется, тоже не особо нужен, т. к. кодом возврата при отсутствии exit будет код последней команды, в нашем случае echo, т. е. тот же 0.

Указывать же оболочку нужно только если скрипт вызывается как исполняемая программа ./script. Если же его вызывать bash ./script, то 1-ая строчка тоже не нужна.

int main(){ puts("Hello, World");}

Ну и налеплены ли фигурные скобки в одну строку или находятся на разных строках, тоже не принципиально. Всё равно они никуда не деваются, как и определение main().

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

Но есть такие задачи, для которых нужен именно си, причём зачастую даже без плюсов. И вот его-то компиляторщики и стандартизаторщики пытаются превратить в новую яву, только гораздо более опасную и сложную и, боюсь, менее эффективную. А зачем нам 2-ая ява, да ещё и заведомо худшая, чем та, которая уже есть?

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

С другой стороны, я понимаю и мотивировку разработчиков компиляторов: системного кода среди всего сишного кода на типичном десктопе/сервере — несколько процентов, и такое свойство по настоящему нужно всего лишь нескольким процентам системного кода (не рассматривая особые случаи вроде микроконтроллеров, rtos и чего-то подобного). Фраза «мы выкатили PGO, собрали с ним хром и он стал работать на 15% шустрее» добавляет компилятору больше популярности, чем «мы решили не переставлять инструкции, и теперь 10 программистов ядра могут переписать 1000 строк ассемблера в 100 строк на си».

Отчасти проблему решают компиляторозависимые вещи: какие-то нестандартные гарантии, флаги/прагмы/атрибуты, интрисинки. Иногда сотрудничество получается забавным, как у GCC и ядра Linux: никто, кроме ядра, не пользуется большинством этих фич, а ядро ничем, кроме GCC, не компилируется (хотя, если верить LWN, гуглоинженеры после трех лет пиления Clang и ядра смогли их слегка подружить для андроида).

Так что, в целом, мой вывод не изменяется: наличие сомнительных оптимизаций скорее помогает большинству софта на си/си++, а те, кому отсутствие этих оптимизаций важно, умеют их отключать или делать ассемблерные вставки. Но наличие современного компилятора си «без сюрпризов» (типа tcc) не мешает, а помогает.

А про раст я скорее неудачно пошутил.

Да, ты спросишь, что это я всё про Windows и про Windows на Linux-форуме? Ну извини, в то время был виндузятником, поэтому про Линукс тех времён мне вспомнить нечего. Но уверен, если бы было чего, то и там дела в плане потребления ресурсов обстояли не хуже, а возможно лучше, чем в Windows.

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

Ну нельзя сравнивать браузер из 90-х с современным браузером. Максимум - с wordpad.exe из windows xp (по модулю того, что он мигание не поддерживает), который ресурсов потребляет не сильно больше. С 3D Studio я, к сожалению, никогда не сталкивался, но мне кажется, что функционал программы вырос пропорционально потреблению ресурсов. То же самое и с операционными системами и графическими средами: i3wm, который я зачем-то себе поставил на работе, более-менее соответствующий функционалу рабочей среды windows xp, жрёт мегабайт 20, а KDE и explorer.exe обросли огромным количеством приятных глазу фишечек и берут положенные 15% памяти компьютера. Поэтому, на мой взгляд, к десктопному софту надо относиться так же, как к игорям: разработчик всегда постарается взять все доступные ресурсы, чтобы порадовать пользователя (или заставить его купить новую версию).

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

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

В скобках я привёл дословные цитаты того, что и где ты сделал. Давай разберём этот пост подробно.

Уважаемый колхозник, я не читаю дерьмо и меня оно не волнует. Мнение домохозяек о том, что мне нужно, либо не нужно читать - меня не волнуют. Есть что возразить по существу - возражай, а ахинею мне не неси. Подобное будешь вещать соседям по парте.
Это всё было разобрано мною, колхозник. Если ты думаешь, что ты своими двумя извилинами меня сможешь поймать, дёргая фразы - это не так. И я тебе не трепло, которое не может показать где и как. Я тебе покажу и популярно объясню.
Но, специально для идиотов я написал дополнение, в котором присёк подобные потуги, а именно:
Что мы тут видим? Колхозник пытается закидать меня базвордами, которые он где-то слышал, но нихрена о них не знает. Это типичное для колхозников поведение.

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

Что мы тут видим, тут балабол пытается врать, приписывая мне «компилятор должен генерировать код соответствующий каждой языковой конструкции», пытаясь опровергать мои слова тем, что компилятор на самом деле их меняет. И должен менять.
Т.е. я говорил о том, что не должен меняться результат, а трепло говорит о чём? «не оставляющей ни одной инструкции».
Дак мало того, трепло до сих пор не может осознать, что на уровне языка никаких инструкций нет и говорить и них попросту не имеет смысла.

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

Во-первых lto никакого отношения к оптимизации вообще не имеет. Колхозник опять всё перепутал. Из этого следует очень простой вывод - колхозник пастил рандомные базворды.
Как именно и в чём PGO и AA меня должны опровергнуть? Что из это следует?

Смешно: макрооптимизация «никакого отношения к оптимизации вообще не имеет». Если в твоём мире это так, то я понимаю, откуда взялось «компиляторы не делают макрооптимизаций». LTO, PGO и TBAA — это примеры оптимизаций, приводящих к значительному приросту производительности, при этом не являющихся «свёрткой констант и инлайнингу» (напоминаю, то, что в кавычках — это твоя дословная цитата).

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

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

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

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

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

А теперь то же самое на си:

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

В твоём примере языком является #include, объявление функции и вызов функции. Всё остальное - не язык.

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

echo Hello, World.

Тут ты пытаешься юлить в сторону «строковые литералы не в скобках», но это не имеет смысла - это даёт больше проблем. Удачи написать var = 1, либо echo var; Колхоз-доллар непроста так взялся.

{

Идиотские скобочки, которые являются твоей проблемой, а не проблемой С/С++.

return 0;

Ненужность.

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

do
    echo $i
  done

И вот тут пациент поплыл. Он ныл про скобочки, но при это как-то быстро и слёту заигнорил ущербанские do;done и кастыли в однострочнике. Что же ты, вещая об однострочнике выклал многострочник? Ну дак напиши мне цикл в строку.

В крестах это будет так:

for(auto i: readdir(".")) print(i);

Ты не путай своими представлений с реальностью.

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

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

Весь вопрос в том, нужны ли мне те или иные возможности для конкретной задачи. Да, make написан на си, и на нём же можно написать ещё один make для собственных нужд. Но зачем мне писать make, если он уже написан и работает?

Твоя аргументация верх идиотизма. Тебе 10лет и твоя аргументация заканчивается на «зачем?». Тебя не спрашиваю «зачем», тебе говорят совершенно о другом. Мы говорим о возможности интегрировать в кресты тот же интерфейс, что и в том же баше. Прекращай использовать эти глупые потуги уровня колхоза - говори в рамках определённого контекста, а не съезжай на хрен пойми что.

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

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

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

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

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

Ложь - именно мне ни кто и ничего не приводил. Ты меня с кем-то путаешь.

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

ручками - возможно и нет, его часто генерят из других систем сборок.

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

Но в любом случае make-файлы ручками пишут чаще, чем сборку или работу с утилитами командной строки на крестах и шарпах вместе взятых

Школота за партой - да. Реально - нет. Слив на то, что ты жрёшь дерьмо чаще, чем нормальную еду - не делает дерьмо едой, а нормальную еду дерьмом. Это лишь твои проблемы. Почему у вас всех логика застыла в развитии на уровне детского садика/начальной школы?

ну тогда и gcc сдох

Тогда ты идиот, хорошо? Ведь по твоей логике я могу кидать рандомные фразы, добавляя к ним «Ну тогда».

а что он тогда?

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

Ведь я тебе всё объяснил, но ты опять выдернул фразу и начал нести ахинею. Язык описания действий( в контексте баша - это cli), как и описание правил в make - не являются языками. Именно тем bash и отличается от голого cli, что cli не предполагает реализации какой-то логики.

Именно этим ЯП и отличается от языков описания данных, языков разметки, просто каких-то языкоподобных интрфейсов, коими являются cli, как и интерпретаторы неязыков.

И где можно посмотреть его замену прогами на крестах?

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

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

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

Зачем ты пытаешься мне доказывать таблицу умножения? И кто с этим спорит?

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

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

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

Тебе уже сказали, что из того факта, что «все» жрут дерьмо - никак и ничего не следует. Это никого не волнует. Жрёшь дерьмо - жри, сказать-то что хотел? Опять ничего?

Ты один д'Артаньян?

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

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

Ладно, ты пытаешься тратить моё время - хорошо. Я буду чуть серьёзнее. Начнём. Ты мне ответишь за все свои обсёры, вернее не ответишь. Я не буду их игнорировать - начнём с первого:

Другими словами - педали не нужны. Так?

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

Отвечай, тепло.

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

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

Ну нельзя сравнивать браузер из 90-х с современным браузером.

Почему нельзя? Как в 90-е мне нужно было зайти на информационную страничку или на форум, так и сейчас. Что такого мне предоставляют современные браузеры и веб-2, что не предоставляли браузеры тех времён с вебом-1? Ну шифрованный https с тех пор появился, что, безусловно, приятно. Но неужели шифрование заставляет браузеры потреблять памяти в 1000 раз больше?! Вместо 4 - 16 Мб — 4 - 16 Гб? А что ещё? Всплывающая видеореклама? Но она мне не нужна. Ява-скрипты, помогающие эффективно следить за мной, пожирая ресурсы моей же машины? Они мне ещё больше не нужны. Какие-то мудрёные стили, умеющие бегать туда-сюда по странице, но зачастую реализованные так криво, что какая-то фигня закрывает полезную информацию, так что приходится просто копировать всё в буфер обмена, а потом вставлять в текстовом редакторе и читать там? Тем более не нужно. В сухом остатке действительно полезных фич раз-два и обчёлся, а всё остальное в лучшем случае — бесполезно, а в худшем — вредно.

Аналогично и с остальным. В автокаде как чертили чертежи, так и чертят. В 3D-Studio как создавали 3D-сцены с анимацией или без, так и создают. И тогда они были не менее реалистичными, чем сейчас. Ну может появилась за это время пара фич, не высосанных из пальца. В то время, по-моему, не было теней. Надеюсь, что за 25 лет они появились. Но неужели эти тени потребляют в 1000 раз больше ресурсов?

А DE. Ну как щёлкали мышкой по значкам в 90-ые годы, чтобы их открыть той или иной программой, так и щёлкают. Что такое умеют сегодняшние DE, чего не умели в 90-е, и что действительно стоит в 1000 раз больших затрат? Полупрозрачность настраивать? А зачем она нужна? Только мешает. Но даже если кому-то это и нравится, то не в 1000 же раз больше за неё платить!

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

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

Лишнее в цитате я зачеркнул. Разработчик действительно пытается навязать пользователю всё новые и новые ненужности, заставляя его покупать всё более и более мощную технику, после приобретения которой необходимо обновить ПО, поддерживающее эту технику, в которое, в свою очередь, включены новые ненужные «фичи». Поэтому реально работа не ускоряется, и приходится покупать ещё более новую технику. И так до бесконечности. Идеальная пирамида. Бендер с его четырёхстами способами сравнительно честного отъёма денег отдыхает. Причём даже люди, понимающие, что их разводят, вынуждены во всём этом участвовать, хоть и не так активно, как остальные. Потому что старое ПО может не открыть новые форматы, на которые перешло большинство пользователей. А в Интернете с отключённым ява-скриптом пол Сети вообще не работает.

Помимо этого, между разными разработчиками существует конкуренция. Но она заточена не на качество конечного продукта, а на скорость выхода мало-мальски работоспособного релиза. Потому что кто первый встал, того и тапки. Ты можешь год оттачивать свою программу, но если кто-то запилит совершенно неэффективный код на питоне сходного назначения за месяц, то им и будут пользоваться. И когда через год ты выйдешь со своим продуктом, в 1000 раз более эффективным и в 10 раз менее глючным, тебе скажут: но ведь он не совместим на 100% с существующим говнокодом, к тому же к говнокоду мы уже привыкли, а проблема неэффективности компенсируется покупкой новой техники, что получится дешевле, чем платить тебе в 12 раз больше за тщательно вылизанный в течение года софт. На рынке бесплатного свободного ПО тоже есть своя конкуренция. Волонтёры предпочитают участвовать в слепленных на скорую руку проектах, которые хавает пипл. Соответственно, проекты, заточенные на малое потребление ресурсов и производительность, почти не развиваются. Что толку, что существует RT-Linux, если под него вообще нет никаких драйверов? Ну или почти нет. Кому нужна минималистичная KolibriOS, если объём ПО под неё стремится к 0?

В результате мы имеем целый стек протоколов, один хуже другого. Компиляторщики лепят говнокомпиляторы. Создатели библиотек на скорую руку лепят к ним библиотеки, жрущие памяти в сотни раз больше необходимого. Разрабы прикладного ПО, используя эти плохие компиляторы и плохие библиотеки, на скорую руку мастерят свои поделия, на всякий случай выделяя в 10 раз больше памяти, чем надо, чтоб где-то что-то не переполнилось. Ну и всякие ненужные проверки добавляют, — вместо встроенного типа int конструируют класс Int, проверяющий перед каждой операцией возможность переполнения и т. д. И мы имеем то, что имеем.

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

Продолжение следует...

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

Окончание:

С другой стороны, я понимаю и мотивировку разработчиков компиляторов: системного кода среди всего сишного кода на типичном десктопе/сервере — несколько процентов, и такое свойство по настоящему нужно всего лишь нескольким процентам системного кода (не рассматривая особые случаи вроде микроконтроллеров, rtos и чего-то подобного). Фраза «мы выкатили PGO, собрали с ним хром и он стал работать на 15% шустрее» добавляет компилятору больше популярности, чем «мы решили не переставлять инструкции, и теперь 10 программистов ядра могут переписать 1000 строк ассемблера в 100 строк на си».

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

Когда-то считалось, что лучшим оптимизатором является сам программист. Сейчас это не так. Что оптимизирует clang? Заменяет цикл

for(i=0; i<1000; ++i) a[i]=0;
на вызов
memset(a, 0, 1000);
Причём заменяет он почему-то только цикл, заполняющий массив 0. Точно такой же цикл, заполняющий этот массив 1, так и останется циклом, не превратившись в memest(a, 1, 1000). Но почему этого не может сделать программист? Зато на замену вызова функции memset одной ассемблерной инструкцией, чего программист действительно не может сделать, не прибегая к встроенному ассемблеру, у создателей оптимизатора clang мозгов уже не хватило. Если раньше небольшие функции рекомендовали объявлять с ключевым словом inline прямо в хидере, то теперь это уже не нужно, потому что слово это, как и его отсутствие, является не более чем пожеланием программиста, которое компилятор как правило успешно игнорирует, сам решая, где делать вставки, а где вызовы. Всё заточено на то, чтоб программисты вообще перестали думать. И всех это устраивает. Но из-за ненужных оптимизаций циклов в memset, компиляторы всё больше усложняются. Они уже не могут просто перевести операторы программы в машинные инструкции. Им надо догадаться, когда можно заменить говно-цикл на memset за горе-программиста, а когда — нет. И любой нетривиальный код может запутать такой заточенный на говнокод оптимизатор. Соответственно, любой нетривиальный код объявляется UB или вообще запрещается. Типа компилятор лучше знает, что вам надо. Одновременно придумываются всё новые и новые инструкции и ключевые слова для компилятора, подсказывающие ему, где вызвать memset, вместо того, чтоб переложить эту работу на программиста. Эти ключевые слова сильно усложняют язык и делают исходный код совершенно нечитабельным для человека. А программисты вынуждены их штудировать с каждым выходом очередного стандарта, вместо того, чтоб изучать алгоритмы.

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

Тоже верно. Разработчики ядра Linux плюются от UB strict aliasing, но вынуждены с этим мириться и использовать опцию "-fno-strict-aliasing". См. об этом письма Линуса Торвальдса в рассылке разработчиков ядра от 2003 и 2009 годов.

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

Вот тебе я тебе сказал - твои действия?

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

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

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

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

Неудобной? Обосновывай, пока ты нихрена, кроме «все не могут ошибаться» не предоставил.

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

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

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

И ты ни единой ссылкой это не опровергнишь.

Я и не должен это опровергать - это твоя шизофрения, которая ко мне не имеет никакого отношения.

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

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

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

Опровергать должен ты, а не я. Именно ты, трепло, утверждаешь и определяешь НАЛИЧИЕ РАЗНИЦЫ, и именно ТЫ и должен ЭТУ РАЗНИЦУ ПОКАЗАТЬ. Я этого делать НЕ ДОЛЖЕН. Ты это способен, трепло, осознать? Похоже что нет.

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

Причём заменяет он почему-то только цикл, заполняющий массив 0.

Иди дальше - это вообще не оптимизация, ведь она memset() точно так же написан как for(i=0; i<1000; ++i) a=с;, а значит оптимизация просто не имеет смысла.

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

В си inline функция ВСЕГДА inline.

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

Типичный тому пример - icc. Интел научил компилятор заменять код колхозников вида for(i) for(j) на нормальный, а вот на большее интела не хватило. И в гцц кодоген под интел намного лучше, нежели в icc.

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

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

Ухожу от темы - где и в чём.

Постоянно уводишь тему с «башем для его задач пользоваться удобнее» на «раз можно на баше - можно и на крестах». Это каким дебилом надо быть?

Никакой отладки никакой крестовый код не требует.

Ты не сможешь это доказать от слова никак.

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

Да назови «экспертов» как хочешь - не в названии дело. А в том, что просто нет обратных примеров, подтверждающих твои слова. Выходит - ты один д'Артаньян.

Это именно ты ссылаешься на большинство.

«Все» и «ну хоть кто-нибудь» - слегка разные понятия.

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

Ты это увидел в моих словах? У тебя крайняя степень дислексии. Но это объясняет твою крайнюю оторванность от реальности и полную неспособнасть к нормальному общению. Ну да ладно, я отвлёкся...

где я говорил о том, что ему нужно писать на крестах, что всем нужно писать на крестах?

ты опять соскакиваешь. К тебе был один единственный вопрос:

куда из фразы «Вся разница между башем и С++ теряется» потерялось удобство, лёгкость и простота использования баша для решения его задач, по сравнению с решением тех же самых задач на крестах? И если ты не это имел в виду, то что именно? Всего лишь «раз можно написать на баше, то тем более можно написать и на крестах»? Или что?

Именно ты утверждаешь и определяешь НАЛИЧИЕ РАЗНИЦЫ, и именно ТЫ и должен ЭТУ РАЗНИЦУ ПОКАЗАТЬ.

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

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

Кстати, ну и чтоб два раза не вставать, поясню пацанам почему это трепло - трепло.

Данная табуретка пытается вещать о том, что оно меня спросило о:

Вся разница между башем и С++ теряется

В каком контексте это было сказано?

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

Т.е. я заранее вывел из контексте все потуги про «сложно», «нет готовых реализация», «никто не пишет» и прочую ахинею, которую это трепло пытается вещать.

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

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

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

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

Т.е. я заранее вывел из контексте все потуги про «сложно», «нет готовых реализация», «никто не пишет» и прочую ахинею, которую это трепло пытается вещать.

И в результате ты вывел абсолютную банальщину «на крестах можно написать всё, что можно написать на баше»?

Меня просто удивило, что ты с таким апломбом вещаешь «таблицу умножения». Вот я и усомнился в прочитанном (понятом) и попросил уточнений. Тут то всё и началось...

Но в таком случае у меня вопросов больше нет. Да, 2*2=4, кто же с этим спорит...

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

Тогда смотрим ширше, я бы сказал, ширее:

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

Слив засчитан

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

Снова засчитан

Как только я перестану тебе позволять - ты заткнёшься и выплишься отсюда слёту и нахрен

И ещё раз засчитан

Другими словами - педали не нужны. Так?

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

Calm down, я всего лишь уточнял твоё отношение к предмету разговора. Ответа, кстати, не последовало

Я буду чуть серьёзнее

Лол :-) Неплохое начинание :-) Но признаков этого пока не видно :-) Лол :-)

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

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

И в результате ты вывел абсолютную банальщину «на крестах можно написать всё, что можно написать на баше»?

Неверно.

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

Банальный пример:

for i in *
  do
    echo $i
  done

Что мы тут видим? Ущербанский синтаксис раз, но это следствие того, что баш - это мусор, а не язык. Сейчас мы не рассматриваем синтаксис.

Мы имеем тут два основных интерфейса - первый - это «*», который предоставляет тебе в список вложенных файлов относительно pwd-контекста, а второе cli( т.е. операторы ввиде команда аргументы(через пробел)).

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

Таким образом, данный интерфейс состоит из некой сущности, которая возвращает «список файлов». Представляется она банальным вызовом функции, либо кейвордом(его эмуляцией).

Далее, cli вообще разбирать не имеет смысла, ведь это полный семантический аналог вызова функции. Удобство полностью идентичное.

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

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

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

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

И не пытайся юлить, кукарекая про «то же самое можно» - нет, можно не то же самое. А то же самое «как минимум так же», хотя на самом деле даже лучше.

Но это лучше будет только в контексте тех, кто может. А т.к. почти никто не может, то никому из тех - лучше не будет.

Но из этого ничего не следует, в рамках объективной реальности - их «не будет» ничего не значит.

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

Другими словами - педали не нужны. Так?

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

Отвечай, тепло. Повторю.

Calm down, я всего лишь уточнял твоё отношение к предмету разговора. Ответа, кстати, не последовало

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

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

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

Неверно

Лол :-) Ты мне про мои мысли будешь рассказывать :-? Пруфы давай :-) Лол :-)

Ты можешь нести ахинею только потому, что здесь нет никаких рефери

Ещё один момент для твоего слива. А посему - пруф есть ли?

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

Лол :-) Ты мне про мои мысли будешь рассказывать :-? Пруфы давай :-) Лол :-)

Я дал, трепло. Выкатывай основания для подобных выводов. Нету оснований - ты написал бред. Всё просто.

Другими словами - педали не нужны. Так?

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

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

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

Я дал

Где именно? Совет: приведи свою цитату, ссылки на твои посты с простынями не нужны

Выкатывай основания

Чем именно не устроил предложенный мною вариант? Из этого:

Неверно

понять можно не только лишь всё :-)

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

Действительно, пора прекращать

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

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

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

Другими словами - педали не нужны. Так?

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

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

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