Почему Си - хорошо, а Си++ - плохо

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Почему Си - хорошо, а Си++ - плохо

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:43

somewhere писал(а):Тем более, в прилжениях Windows, где 80% кода сводится к общению с функциями WinAPI
Если 0,08% кода сводится к вызову API, то без программы легко можно обойтись.

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:41

iprog писал(а):в язык введены неявные скрытые механизмы, которые не работают одинаково на разных платформах
. Наоборот, добавлена возможность исключения единственного неявного механизма, который был в голом c - соглашения о вызовах. На c++ соглашение о вызовах было ровно одно и потому оно было невявным. На c++ можно явно указать соглашение о вызовах для каждой функции.
iprog писал(а):портируемые программы писать невозможно
так вот почему они на нём пишутся. Это оказывается невозможно. Почему только они тогда на языке ассемблера не пишутся? Это ведь тоже не возможно.
iprog писал(а): и в то же время язык неудобен для высокоуровневого программирования, как и Си.
Как раз очень удобен.
iprog писал(а):Компиляторы Си++ намного сложнее, чем компилятор Си, и есть не везде.
Попробуйте найти компилятор голого c для спектрума, или для телефона. А c++ есть везде, где он нужен.
iprog писал(а):В основном Си++ используют, потому что под него написаны библиотеки классов (как правило привязанные к определённой платформе и операционной системе).
Опять ложь. Во-первых библиотеку классов c++ не возможно привязать к платформе. А во-вторых есть много софта на c++ на голом API.
iprog писал(а):Теряюсь в догадках, кому понадобилось раскручивать такое скотоложество (другого слова не подберу). Деньги в это вбуханы чудовищные - помню по той рекламной кампании, которая сопровождала продвижение Си++.
Ну как теряешься, когда тебе и понадобилось?

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:31

iprog писал(а): он прилепил дополнительные фичи (большей частью совершенно идиотские - вроде перегрузки стандартных операторов)
Ни одной идиотской фичи он не добавил. Наоборот, убрал идиотские фичи, например, монструозный ввод-вывод со строками форматирования. Сохранив переносимость и не навязав ни одной лишней операции. Даже конструктор может быть пустым, тогда при оптимизации кода он просто выбрасывается за ненадобностью. В результате процессор по-прежнему не делает ничего, что не было предусмотрено программой, просто часть исходного текста может быть инкапсулирована в членах. Ну а если тебе вдруг надо выполнить кучу дополнительных действий, то они прописываются один раз и потом многократно применяются. Про декомпозицию слышал?

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:25

iprog писал(а): И уже этот промежуточный Си-текст транслируется Си-компилятором в бинарный исполняемый файл.
А получить текст на промежуточном языке можно только компиляцией.

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:22

iprog писал(а):Изначально создатели языка Си и системы Unix предполагали, что возникнут другие языки, более удобные для программистов (каждый язык со своей специализацией). Для каждого такого языка, на Си будет написан транслятор (не компилятор), который транслирует исходник с этого языка опять же на Си, а не в исполняемый код.
Трансляторы бывают двух видов: компиляторы и интерпретаторы. Интерпретировать можно только в натив. Ни как не на c. Просто потому, что интерпретация - это трансляция в процессе исполнения, в куски исполняемого кода самого же транслятора.

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:21

iprog писал(а):Нет смысла придумывать что-то ещё.
Опять ложь.

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:20

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

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 04 апр 2017, 08:18

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

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 22 авг 2015, 20:21

Изначально создатели языка Си и системы Unix предполагали, что возникнут другие языки, более удобные для программистов (каждый язык со своей специализацией). Для каждого такого языка, на Си будет написан транслятор (не компилятор), который транслирует исходник с этого языка опять же на Си, а не в исполняемый код. И уже этот промежуточный Си-текст транслируется Си-компилятором в бинарный исполняемый файл. Такова была изначальная философия системы Unix: все программы портируемы и все языки надстраиваются над базовым языком Си.
Трансляция программы целиком до её исполнения называется компиляцией не зависимо от целевого языка, то есть от языка, на который транслятор переводит программу с другого языка. Интерпретацией называется пооператорная трансляция в процессе исполнения, поэтому при интерпретации целевой язык неизбежно непосрядственно исполняемый. Язык c таким не является. Значит интерпретировать на c нельзя. В натив процессора можно, а на c нельзя. При этом результат интерпретации ещё и не существует целиком и не существует в течении сколь нибудь продолжительного времени. Он фрагментарен и существует в процессе исполнения конкретного оператора. Так какой же вид трансляции имелся ввиду? Остаётся как раз компиляция. Но можно и наоборот с языка c скомпилировать на паскаль, было бы чем. Или на бейсик. Результат будет хуже исходной c-программы? Эйси. Но заниматься такими глупостями ни что принципиально не мешает, мешает лишь тот факт, что ни кто не стал тратить время на разработку такого компилятора. Но пока не стал. Есть принцип, а есть вопрос реализации. Принципиальная же возможность компилировать с обоих языков друг на друга говорит о том, что возможность компиляции в определённом направлении - ещё не признак уровня языка. Уровень определяется абстракцией, а не тем, что фактически нет компилятора с чужых опкодов на c, сразу сшивающего программу сразу с эмулятором другого процессора, для которого те опкоды - натив.

Re: Почему Си - хорошо, а Си++ - плохо

Сионист » 22 авг 2015, 20:10

Кстати, всякими там vcl, mfc и тому подобными не пользуюсь и пользоваться не собираюсь. Пишу на c++. Что я делаю не так? Или имеются ввиду стандартные классы вроде ofstream, ostream, wstringstrim? Ну та на c тоже есть функции ввода-вывода. Ради них стоит юзать язык? Не ради потоковых классов юзают c++, а сами потоковые классы юзают потому, что пишут на c++.

Вернуться к началу