Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен ли С++ 
:(
    Опции темы
mes
Дата 19.9.2009, 22:21 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



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






--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 19.9.2009, 22:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



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

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

вобщем в С++, путем написания сложного библиотечного кода небольшого размера, можно достичь последующего простого и удобного использования этого кода.
PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 22:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: -1
Всего: 13



Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
C++ > C  (больше)

Это ты прав (если не считать совсем незначительные исключения из правил).

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
потому что С++ во многом включает в себя С

Да, это так.

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
я не знаю зачем вообще нужен С если есть С++

Я уже приводил аналогию. C - это сверло, C++ - это сверло с дилдо на конце.

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
на С++ удобнее писать код, чем в С, в языке больше встроенных средств

На C# ещё больше встроенных средств. Там целый фреймворк на все случаи жизни.

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
на С++ безопаснее писать код, чем в С

На C# ещё безопаснее писать код. Там, если что, среда по рукам даст.

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
в отдельных случаях код на С++ лаконичнее кода на С, но не наоборот.

F# уж куда лаконичнее.

Цитата(GoldFinch @  19.9.2009,  22:13 Найти цитируемый пост)
в С++ есть многое из того, что есть в языках более высокого уровня, при этом С++ сохраняет свою низкоуровневость.

Вот! Вот! Нафиг оно нужно?



--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Fatkh
Дата 19.9.2009, 22:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 5.9.2009

Репутация: нет
Всего: 1



Цитата(GoldFinch @  19.9.2009,  20:13 Найти цитируемый пост)
C++ > C  (больше)

потому что С++ во многом включает в себя С (что есть плохо, дурное наследие)
я не знаю зачем вообще нужен С если есть С++

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


1. Включает не во всем.
2. По поводу встроенных средств. Во-первых - умирает переносимость компилятора. Во-вторых - чем больше встроенных средств - тем больше ошибок в компиляторе (баги фиксятся, но их больше при болшей сложности компилятора). К слову, еще недавно (как сейчас - не знаю) никто не гарантировал потокобезопасность STL.
3. Безопасность выше - бред. Часто видел баги в прогах на С? А на С++? Любой баг проги на С, написанный хоть сколько-нибудь умным человеком, легко ловится. А вот ошибки на плюсах - ловятся с огромным трудом (очень часто). (Не надо все сваливать на мою криворукость. Примеров - тьма) К тому же заботливо встроенные Страуструпом ловушки типа конструкторов по умолчанию не все избегают. Некторые и попадаются.
4. Лаконичность - отнюдь. Если писать на плюсах, как на С - да. Но так писать на плюсах - глупо и бессмысленно. А шаблон отнюдь не лаконичней двух функций.
5. И в случаях, когда это что-то высокоуровневое нужно применять, лучше оценить еще раз задачу и написать прогу на (питоне, шарпе, ...) Так как проще и безопаснее.
PM MAIL Jabber   Вверх
NightmareZ
Дата 19.9.2009, 22:28 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: -1
Всего: 13



Цитата(GoldFinch @  19.9.2009,  22:22 Найти цитируемый пост)
простой пример преимущества С++ на С - это RAII вместо пар функций захвата ресурса и его освобождения, инициализируется соответствующий объект, освобождение производится автоматически.

Простой пример преимущества C# над C++ - не нужно никакого RAII. А в редких случаях есть using и IDisposable.

Цитата(GoldFinch @  19.9.2009,  22:22 Найти цитируемый пост)
другой пример - это обобщенное программирование. оно позволяет не копировать вручную код для похожих типов, а писать обобщенный код.

C# и это умеет.
А, например, Lisp уделывает в этом плане C++ за обе щёки.

Цитата(GoldFinch @  19.9.2009,  22:22 Найти цитируемый пост)
в серьезных библиотеках обобщенный код может "сам себя" оптимизировать, генерируя подходящие реализации в зависимости от обрабатываемых типов и различных параметров.

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

Цитата(GoldFinch @  19.9.2009,  22:22 Найти цитируемый пост)
на С та же эффективность достигается ручным копированием тысяч строк кода. вобщем в С++, путем написания сложного библиотечного кода небольшого размера, можно достичь последующего простого и удобного использования этого кода.

В C это и не нужно. Просто не нужно и всё.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Fatkh
Дата 19.9.2009, 22:33 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 5.9.2009

Репутация: нет
Всего: 1



Цитата(mes @  19.9.2009,  20:21 Найти цитируемый пост)
но если человеку не нужно ничего кроме молотка и отвертки, его не убедишь, что навороченные инструментальные средства могут приносить пользу - они для него просто лишние,

Просто гений. Такое оригинальное сравнение. Только есть инструменты в 10 раз меньше, во много раз проще для обучения - (Python, #, ...) А иногда нужен и молоток - да, он не может работать кувалдой (С++). А оно надо? Эта кувалда только учит бить. Иногда ей учат работать как современным инструментом (хм... Александреску?), только это все можно сделать еще проще.

Цитата(GoldFinch @  19.9.2009,  20:22 Найти цитируемый пост)
на С та же эффективность достигается ручным копированием тысяч строк кода. 

Если приходится так делать - вы не умеете программировать на С. Про такое копирование почему то пишут только программисты С++. Потому что нормальный человек так на С не пишет. Может, просто вы не умеете проектировать?
PM MAIL Jabber   Вверх
Anikmar
Дата 19.9.2009, 22:37 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 59



Цитата(mes @  19.9.2009,  22:21 Найти цитируемый пост)
но если человеку не нужно ничего кроме молотка и отвертки, его не убедишь, что навороченные инструментальные средства могут приносить пользу - они для него просто лишние
 Присоединяюсь

Если человек, который называет серыми мышками приверенженцев С++ в качестве примера, называет это:
Цитата(NightmareZ @  19.9.2009,  22:23 Найти цитируемый пост)
На C# ещё больше встроенных средств. Там целый фреймворк на все случаи жизни.

А также это:
Цитата(NightmareZ @  19.9.2009,  22:23 Найти цитируемый пост)
Вот! Вот! Нафиг оно нужно?

А также это:
Цитата(Fatkh @  19.9.2009,  22:24 Найти цитируемый пост)
5. И в случаях, когда это что-то высокоуровневое нужно применять, лучше оценить еще раз задачу и написать прогу на (питоне, шарпе, ...) Так как проще и безопаснее. 

О чем может идти спор. Вот откуда берутся безумные продукты, которые жрут немеряно памяти, работают как черепахи, занимают по 300 метров на диске. 

Цитата(Fatkh @  19.9.2009,  22:24 Найти цитируемый пост)
 А шаблон отнюдь не лаконичней двух функций.

Если шаблон считать аналогом 2-х функций - это просто незнанием вопроса пахнет.

PM MAIL ICQ   Вверх
Fatkh
Дата 19.9.2009, 22:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 5.9.2009

Репутация: нет
Всего: 1



Цитата(Anikmar @  19.9.2009,  20:37 Найти цитируемый пост)
Если шаблон считать аналогом 2-х функций - это просто незнанием вопроса пахнет.

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

Цитата(Anikmar @  19.9.2009,  20:37 Найти цитируемый пост)
О чем может идти спор. Вот откуда берутся безумные продукты, которые жрут немеряно памяти, работают как черепахи, занимают по 300 метров на диске. 

А пример? Я таких не знаю. (Приложения на Java в пример не приводить)


PM MAIL Jabber   Вверх
andrew_121
Дата 19.9.2009, 22:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



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

Это сообщение отредактировал(а) andrew_121 - 19.9.2009, 22:52


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GoldFinch
Дата 19.9.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



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

Допустим надо писать код для извлечения данных из двоичного буфера, их изменения, и обратной записи буфер
На С это будет выглядеть так
Код

struct Foo { int x; char* s; wchar_t* ws; double y; }

.............

Foo foo;
unsigned char* p = buf;
foo.x=*(int*)p; p+=sizeof(int);
foo.s=(char*)p; p+=strlen(foo.s)+1;
foo.ws=(wchar_t*)p; p+=(strlen(foo.ws)+1)*2;
foo.y=*(double*)p; p+=sizeof(double);

..........................

unsigned char* p = buf;
*(int*)p=foo.x;  p+=sizeof(int);
strcpy(p, foo.s); p+=strlen(foo.s)+1;
strcpy(p, foo.ws); p+=(strlen(foo.ws)+1)*2;
*(double*)p=foo.y; p+=sizeof(double);


на С++ это будет выглядеть так
Код

struct Foo { int x; char* s; wchar_t* ws; double y; }

template<class Archive> void serialize(Foo& foo, Archive& ar){ ar & foo.x & foo.s & foo.ws & foo.y ;}
.............

IOArchive ar(buf);
Foo foo; ar>>foo;

.............

ar<<foo;



Если бы в С++ была интроспекция, позволяющая перечислить поля структур (как в js),
serialize() был бы не нужен.
PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: -1
Всего: 13



Цитата(GoldFinch @  19.9.2009,  22:58 Найти цитируемый пост)
Если бы в С++ была интроспекция, позволяющая перечислить поля структур (как в js)

Оппаньки, тут тебе поможет C#!  smile 


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
GoldFinch
Дата 19.9.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



но вообще, я возлагаю большие надежды на D
вот разгребу то что не дописано на С++ - попробую изучить D

Добавлено через 7 минут и 8 секунд
NightmareZ, да, отдельные части программы хорошо было бы написать на ***.
Но, либо всю программу - на С++,
либо часть на асме, часть на С++ (на С смысла писать нет), часть на скриптовых языках.

Первый вариант проще, чем стыковать нестыкуемое.

PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 23:15 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: -1
Всего: 13



Цитата(GoldFinch @  19.9.2009,  23:04 Найти цитируемый пост)
Но, либо всю программу - на С++,либо часть на асме, часть на С++ (на С смысла писать нет), часть на скриптовых языках.


Как тебе такой вариант: ядро пишем на лиспе, а ту часть, которую ты хотел на скриптовых языках, пишем на DSL, написанном на лиспе?  smile 

Это сообщение отредактировал(а) NightmareZ - 19.9.2009, 23:16


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Fatkh
Дата 19.9.2009, 23:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 5.9.2009

Репутация: нет
Всего: 1



Цитата(GoldFinch @  19.9.2009,  21:04 Найти цитируемый пост)
но вообще, я возлагаю большие надежды на D
вот разгребу то что не дописано на С++ - попробую изучить D

Любому языку для развития нужны деньги и реклама. У разрабов D их негде взять. И рекламы также нет.


Цитата(GoldFinch @  19.9.2009,  21:04 Найти цитируемый пост)
Но, либо всю программу - на С++,
либо часть на асме, часть на С++ (на С смысла писать нет), часть на скриптовых языках.

На асме писать нужно либо жесткую математику, либо работу с процем. И ничуть не проще написать серезный крупный проект на С++, чем на , к примеру, Питоне, а нужные места оптимизировать на С. Это огромный плюс к скорости разработки и безопасности кода.
PM MAIL Jabber   Вверх
GoldFinch
Дата 19.9.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



NightmareZ, а асм-вставки в лиспе как? а производительность как? а fastcall лисп поддерживает? чтоб аргументы в  eax, edx, ecx?


Fatkh, D вроде бы достаточно развит, чтобы на нем можно было писать код

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

Разработка (написание+отладка) модулей на С для питона это быстро? не верю.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.