LINUX.ORG.RU

[соцопрос] Pure C

 


0

0

Я вот никогда не понимал природу яростных споров типа: C vs C++. С++ надмножество (почти) языка С. Мне всегда казалось, что С++ дальнейшее развитие обычного С. А значит лучше использовать С++ (за редким исключением), а С забыть, как анахронизм. Почему же до сих пор существуют адепты чистого С.

Хотел бы обратиться к тем, кто до сих пор пишет прикладной софт на С. Почему вы это делаете? Чем вам нравится С? Почему не нравится С++?

Убедительная просьба всем остальным воздержаться от комментариев. Все равно вы никому ничего не докажете. Зато топик превратится в срач. Данная тема для меня интересная. Но уж больно она «горячая».

>Хотел бы обратиться к тем, кто до сих пор пишет прикладной софт на С

Да

Почему вы это делаете? Чем вам нравится С? Почему не нравится С++?

На Си больше свободы. Например, захотел свою объектную систему - взял и сделал. И при этом имеющаяся не мешается (её просто нет).

yoghurt ★★★★★
()

С я знаю и понимаю лучше. Можете считать меня неосилятором.

Gvidon ★★★★
()

>Почему же до сих пор существуют адепты чистого С.

Ну как адептыж.. под контроллер С51 есть, считай тот же С, приходится писать.

Все равно вы никому ничего не докажете. Зато топик превратится в срач


Это неминуемо, сайчас прибегут питонцы и явийцы...

Zhbert ★★★★★
()

ниасилил срр и яву, прогаю исключительно на си. хотя гуй писать на си достаточно тяжко, да (гтк)

fads ★★
()

Объявляю очередной тур Специальной Олимпиады открытым!

PS У чистого Си чуть лучше с переносимостью. Достаточно почитать внимательно примечания к выпускам gcc: почти в каждой версии какой-нибудь кусочек ранее успешно компилировавшегося кода на С++ объявляется невалидным. Это не говоря об отличиях между g++ и другими плюсовыми компиляторами, особенно для говноembedded платформ.

Manhunt ★★★★★
()

>Мне всегда казалось, что С++ дальнейшее развитие обычного С.

Спорно. С одной стороны с+ это си с ООП, но уж больно много всего там накрутили.

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

anonymous
()

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

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

Linus Torvalds wrote

If you want a VCS that is written in C++, go play with Monotone. Really.
They use a «real database». They use «nice object-oriented libraries».
They use «nice C++ abstractions». And quite frankly, as a result of all
these design decisions that sound so appealing to some CS people, the end
result is a horrible and unmaintainable mess.

:)

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

Вот с этим соглашусь.

Очень часто кол-во используемых возможностей языка С++ пытаются свести к минимуму --- почти к С с элементарным ООП

namezys ★★★★
()

Прикольно, два топика одновременно про одно и тоже )
Хотя этот все таки больше подходит для раздела Development )

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

>Очень часто кол-во используемых возможностей языка С++ пытаются свести к минимуму

Они не пытаются, они просто не знают больше :)

yoghurt ★★★★★
()

С++ надмножество (почти) языка С

Хорошая шутка.

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

> Они не пытаются, они просто не знают больше :)

они даже не хотят учится

namezys ★★★★
()

уясни себе один факт: C++ - это язык, когда-то очень давно фокнутый с C. и всё!
когда-то давно можно было сказать, что он надмножество. сейчас - увы. это два разных языка с самого начала. и развивались по разным направлениям.

вот бывают программы-форки (CenterICQ и CenterIM, или &RQ и R&Q, например), такая же ситуация и с этими двумя языками.

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

xydo ★★
()

а С++ ненадмножество - это ваще другое по сравнению с Си программой

то что любят в Си - это та самая свобода
в той самой шутке про си http://forum.windowsfaq.ru/archive/index.php/t-51443.html

есть доля правды - и в Си++ можно скомпилировать for(;P(«\\n»),R-;P(«|»))for(e=C;e-;P(«_»+(*u++/8)%2))P(«| »+(*u/4)%2); но обычьно к такому неприбегают
а в Си порой приходиться прибегать и нектакому :)

ae1234 ★★
()

Плюсовый код недоступен для других языков, нет стандарта ABI. Для меня этого достаточно.

anonymous
()

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

ae1234 ★★
()

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

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

Этот разговор бессмыслен по своей природе.

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

> Банальный strcat

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

PS уже представил, как оно разлетается с лопастей вентилятора по стенам, потолку и случайным зрителям

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

>он настолько древний что немогет сделать элементарное - сложить 2 строки :)

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

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

вы убедились что флейп топики являютья флейм топиками ?
иль хотели тут найти гуру который бы вам открыл чтото сокровенное ?

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

а это уже функция либы

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

yoghurt ★★★★★
()

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

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

>вы убедились что флейп топики являютья флейм топиками ?

иль хотели тут найти гуру который бы вам открыл чтото сокровенное ?

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

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

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

ae1234 ★★
()

мне очень не нравится OOP модель. и да, я неосилятор: Pure C я знаю и понимаю, а вот приплюснутый в мой мозг не лезет.

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

Вот нахрена строки __складывать__? Строки __конкатенируются__. Конкатенация и сложение - совершенно разные операции. Хотя бы потому, что конкатенация не коммутативна. И в нормальных языках операции сложения чисел и конкатенации последовательностей представлены совершенно разными функциями/операторами.

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

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

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

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

То, что C++ - «развитие» Си это вообще бред.


А что это, если не развитие в определенном направлении? Syntax sugar для метапрограммирования, полиморфизма, инкапслуяции, размотки стека. Да одной только поддержки RAII достаточно, чтобы склониться к использованию C++ вместо чистого Си (ведь задолбаться можно писать компенсирующий код, когда требуется сделать 10 malloc вподряд, и корректно освободить память, если хотя бы один из них сфейлит).

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

> Конкатенация и сложение - совершенно разные операции. Хотя бы потому, что конкатенация не коммутативна.

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

Manhunt ★★★★★
()

C++ not C with classes

Почему же до сих пор существуют адепты чистого С.

Вот потому, что С++ - это другой ЯП. Поэтому plain C жил и будет жить. Конкурентов у него не наблюдается.

Мне всегда казалось, что С++ дальнейшее развитие обычного С

Извините, но Вам стоит серьезно изучить С++. Тогда перестанет казаться. А на вид да, все они c C-like синтаксисом, С#, Java, C++, ...

Skynin
()

В C++ очень много всего. Из элегантного C сделали эдакого монстра.

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

Именно по причине общей уродливости у C++ есть конкуренты (Object C, D, Go и множество малоизвестных).

Лично я считаю, что перед тем как делать C++ нужно было выкинуть совместимость с C. Потому что, например, нафига в C++ string.h или препроцессор?

А C до сих пор прекрасно решает многие задачи системного программирования. У языка очень просто «ядро»; и при знании железа C на приличном уровне осваивается очень быстро (в отличии от C++).

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

>А что это, если не развитие в определенном направлении?
В направлении в жопу только если.

Syntax sugar

Это в плюсах то sugar? Да плюсовкий синтаксис это же говно обдристанное, а не сахар.

для метапрограммирования

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

полиморфизма

Никудышный там полиморфизм. Кривовато реализованный ad-hoc, причем в двух разновидностях зачем-то, да и все.

инкапслуяции

Херовая в плюсах инкапсуляция, никакой почти нет. А та, что есть, легко и непринужденно абьюзится. Разумеется, если сокрытие данных в классах за инкапсуляцию не считать(потому что оно, особенно в плюсах, ею не является).

размотки стека

Исключения чтоле плюсовские? Да это такое говно, о котором лучше вообще не вспоминать.

RAII

RAII это кривое и неудобное говно, которое, опять же, легко абьюзится(деструкторы - тот еще сракотан). Лучше бы в исключениях finally сделали. Впрочем, учитывая степень несостыковки с другими фичами языка, лучше бы вообще ничего не делали. И оставили бы оное на реализацию операционной системе, как треды или сокеты, например. Вот на винде хорошо - есть SEH/VEH.

Скажи, сколько уже у тебя игнорастов?

7

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

>Конкатенация и сложение - совершенно разные операции.

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

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

Ох, лол. А что, сложение - обязательно коммутативно?

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

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

мне удобнее читать что-то типа str = concatenate( str1, str2)

чем str = str1 + str2

особенно, когда:

string val;
str val1;
str val2;

//some code

val1 = "";
val2 = "";

//big block of some code

val = val1 + val2;
не нужно помнить типы val,val1,val2 на протяжении всего кода

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

Ты наматываешь алгебраические понятия на строки. Нахрена?

чтобы не плодить сущностей - их и так дох~w много

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

> Это в плюсах то sugar? Да плюсовкий синтаксис это же говно обдристанное, а не сахар.

По сравнению с тем, что приходится для того же эффекта писать в pure C — это самый настоящий сахар.

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


Бгг, расскажи это пользователям boost.

Никудышный там полиморфизм. Кривовато реализованный ad-hoc, причем в двух разновидностях зачем-то, да и все.


И чем конкретно он плох?

Херовая в плюсах инкапсуляция, никакой почти нет. А та, что есть, легко и непринужденно абьюзится.


Вполне нормальная инкапсуляция, если руки из нужного места растут. А абъюзится абсолютно всё, включая активацию Виндовс7 Максимальная.

Исключения чтоле плюсовские? Да это такое говно, о котором лучше вообще не вспоминать.


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

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


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

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