LINUX.ORG.RU

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

> быстрый C КОМПИЛЯТОР есть - tcc. собираются им программы нормально и быстро

Во первых не все (смотрел в феврале)

>но c++ там нет.

А во вторых мне компилятор с чистого C не нужен. Много сейчас программ на чистом C?

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

> А оно и так однозначно и очевидно, если не использовать запрещенные конструкции.

Самому не смешно? Уже само существование запрешённых конструкций говорит о непродуманности языка. И о его непригодности к ШИРОКОМУ использованию массами.

> Или ты из той разновидности луддитов, которые ругают молоток за то, что им можно попасть по пальцам, а ружье за возможность выстрелить в ногу?

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

> Если хочешь пользоваться инструментом, будь добр прочитать инструкцию. И _следовать_ ей. А по дурости можно и йцк сломать.

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

> Вместо "сложно" ты хотел написать "невозможно"? Да, сейчас модно ругать С за наличие адресной арифметики, за неявное преобразование типов и т.д.

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

> Но С -- это всего-навсего "универсальный макро-ассемблер", один из самых низкоуровневых языков программирования высокого уровня. ;) И он уже не раз доказал эффективность в этом качестве.

Против этого я ничего не имею. И ничего не имею против переполнения при некорректном использовании типа и пр. Но это - вещи предсказуемые, если знать особенность архитектуры (размер int и пр.). А вот "c=c++" - это откровенный произвол.

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

Я в винде использую именно delphi. Компилирует, зараза, быстро, приложения выходят шустрые. И за ошибки по рукам больно бьёт. Для сравнительно небольших программ типа мелких утилиток, само собой :)

> Нет. Это позор для кодера. Клеймо профнепригодности для писателя "анекдотов на С" вида 'i=i++'.

Был бы продуманный язык - не было бы этих досадных исключений :) Хотя я согласен, что c=c++ - редкостный дебилизм и лично я бы до такого не додумался.

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

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

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

>ШИРОКОМУ использованию массами

"Широкое использование языка массами" - это из области сексуальных фантазий, что ли?

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

p.s. Кстати можно подумать, легко объяснить неофиту в Delphi.win32, что экземпляр объекта суть указатель.

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

> Самому не смешно?

Только от твоих постов.

> непригодности к ШИРОКОМУ использованию массами

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

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

Для этого необходимо, чтобы конструкция вида 'i=i++' имела смысл. А так, 'shit in - shit out'.

> Меня интересует детерминированность поведения

Вот тебе пример детерминированного поведения:

int i;
for (i = 0; i++;) break;
printf("%d\n", i);

Скажи, какое значение _обязан_ печатать этот код?

> А вот "c=c++" - это откровенный произвол

Полностью согласен: откровенный произвол кодера-недоучки, который просит компилятор присвоить переменной два разных значения _одновременно_.

> Я в винде использую именно delphi

Object Pascal намного ближе к C, чем к творению Вирта.

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

А что, нежелание идиотов думать -- это для профессионала повод отказаться от гибкого и эффективного инструмента? Нафиг-нафиг, я лучше буду продолжать носить револьвер с УСМ двойного действия.

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

Пожалуй, я даже соглашусь с некоторыми аргументами. C - это еще тот подарочек... :)

WFrag ★★★★
()
Ответ на: комментарий от baka-kun

хотелось бы отметить как ловко некие несознательные личности упростили проблему с c=c++ до i=i++

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

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

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

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

dilmah ★★★★★
()
Ответ на: комментарий от baka-kun

> Вот тебе пример детерминированного поведения: int i; for (i = 0; i++;) break; printf("%d\n", i);

Тут два варианта тебе на выбор - либо ты только что дал мне ещё один пример бредовости и непродуманности языка C, либо ты сейчас сам ответишь на свой вопрос, предварительно решив, какое значение должно возвращать lvalue "i++".

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

> Полностью согласен: откровенный произвол кодера-недоучки, который просит компилятор присвоить переменной два разных значения _одновременно_.

Одновременно? А я не знал, что ты такой чайник. Или ламер? Инкремент и присвоение должны происходить в ЧЁТКО ОПРЕДЕЛЁННОЙ последовательности. Если же она не определена стандартом языка, то язык - сляпанное на коленке ДЕРЬМО, и не более :)

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

> Object Pascal намного ближе к C, чем к творению Вирта.

Именно, батенька! Object Pascal - это почти C++, только без идиотизма и лучше продуманный. Меньше простора для полёта фантазии, но, как показывает обилие дыр в софте на C/C++, фантазия получается, как правило, больная. Так зачем она тогда нужна?

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

> А что, нежелание идиотов думать -- это для профессионала повод отказаться от гибкого и эффективного инструмента? Нафиг-нафиг, я лучше буду продолжать носить револьвер с УСМ двойного действия.

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

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

> И продумать машинно-независимый язык который позволяет генерировать оптимальный код тоже не очень просто. И тут undefined behaviour просто необходимая штука -- например ты говоришь в стандарте что-то должно вызываться только один раз. Если ты напишешь что если оно вызывается второй раз то будет какое-то детерминированное поведение, то компилятор уже обязан затрачивать на это какой-то оверхед. А если ты просто говоришь -- это UB, то у компилятора развязаны руки.

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

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

Ни какой он не "почти C++". Как только в любом из OP/Java/C# появятся такие же конструкторы и деструкторы, как в С++, им можно будет спокойно пользоваться, без всякого фанатизма. Но до тех пор все они "намного ближе к C".

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