![]() |
|
Модераторы: LSD |
![]()
|
|
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
||||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Я полностью поддерживаю! Лишь добавлю, что C++ - это дрель с дилдо на конце.... теоретически применить можно, но место применения потом болеть будет. Вот ты мне скажи, для чего C++ нужен? -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
NightmareZ,
C++ для удобного высокопроизводительного системного программирования. Для случаев когда нужны легковесные структуры данных, нужно прямое взаимодействие с готовыми системами, в том числе с ОС, для случаев когда часть кода должна напрямую работать с памятью, когда где-то нужны асм вставки. |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
А теперь желательно предоставить пример, когда для эти целей не подойдет C. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
||||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Для этих целей очень даже подходит C. А где нужен C++? Добавлено через 2 минуты и 16 секунд Ты скажи разработчикам всяких *nix'ов, что они неудобный язык используют. А то они ж не знают до сих пор. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
||||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Глупый спор. Тем более, что вы знаете о чем речь и заниматься демагогией - только время тратить. Речь шла не о том, что С++ нужен, а о том, что нет вещей, которые можно написать на С и нельзя с тем же удобством написать на С++, а наоборот примеры привести можно. Практически любую задачу можно написать на любом языке. Вопрос затраченных рессурсов. Разработчики прекрасно осведомлены, я так предполагаю. Не следует забывать о больших наработках, написаных на С. Переписывать их на С++ тем более бесплатно не особо думаю хочется. Если воспользоваться вашей логикой - надо этим разработчикам рассказать о лиспе - наверное они о нем тоже ничего не слышали. Добавлено через 6 минут и 55 секунд
А кто говорил, что для решения абсолютно всех задач С++ дает преимущества? Тем более под "системным" программированием многие понимают совершенно разный круг задач. Разговор шел о языке в целом. С++ это развитие Си и предмет спора выглядит глупо. Надо переместить данную тему к религиозным войнам. |
||||
|
|||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Не-не-не, речь шла о том, что у C++ нет ниши. Низкоуровневое программирование покрывается чистым C; гуй - C#, Java, Delphi; веб - PHP, Java, C#, Perl, Python, Ruby и т.п.; Ещё не забываем про Lisp, Erlang, всякие Nemerle и новомодный F#, потомок OCamla........ А C++ какбэ пытается покрыть сразу несколько ниш и ничего у него не получается.
Вот именно. На C++ разработка дольше, поддержка дороже, баги трудноуловимее. Ничего не C++ переписывать не нужно. Ибо C++ не нужен.
Ну, например, на чём Emacs написан? -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Если смотреть на С99, то можно. Встроенные комплексные числа, к примеру - у плюсов такого нет. (Либы - это либы, и они не дают удобств встроенных типов) Не так. Для конкретной цели конкретный инструмент. Говорилось о разработке системных приложений на С++, потому и приведен в пример С. Никто не предлагал это на Лиспе писать. Вопрос в области применения плюсов - никто так четко и не ответил. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Говорилось о том, следует ли изучать Си перед С++. Дело в том, что любой ответ на данный вопрос вызовет вялый и длинный спор, и особо спорить никому неохота. |
|||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Ну надо объяснить человеку, что изучать C++ вообще не нужно.
Но ведь для того форум и есть, чтобы истину найти. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
У такого мнения не много сторонников, как выяснилось. Можно вообще ничего не изучать. А так - кому что нравится. Еще раз повторю данную тему: "Нужно ли изучать Си перед С++". Никто не спрашивал нужно ли изучать С++ вообще, как и лисп впрочем. Поэтому вам нужно завести отдельную тему в религиозных войнах типа "Долой С++, лисп и С99 - рулят! Тут истиной не пахнет. Особенно если каждый будет считать истиной свое мнение. Так что будет очень долго и нудно. На вкус и цвет товарищей нет. |
|||
|
||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Серые мыши в мире программирования. Что с них взять?
Ну пусть админы перенесут эту ветку. Тут слишком много умных мыслей написано, чтобы её просто взять и закрыть.
Ну давайте её искать! -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Fatkh,
NightmareZ, C++ > C (больше) потому что С++ во многом включает в себя С (что есть плохо, дурное наследие) я не знаю зачем вообще нужен С если есть С++ на С++ удобнее писать код, чем в С, в языке больше встроенных средств на С++ безопаснее писать код, чем в С в отдельных случаях код на С++ лаконичнее кода на С, но не наоборот. в С++ есть многое из того, что есть в языках более высокого уровня, при этом С++ сохраняет свою низкоуровневость. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
GoldFinch,
но если человеку не нужно ничего кроме молотка и отвертки, его не убедишь, что навороченные инструментальные средства могут приносить пользу - они для него просто лишние, |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
простой пример преимущества С++ на С - это RAII
вместо пар функций захвата ресурса и его освобождения, инициализируется соответствующий объект, освобождение производится автоматически. другой пример - это обобщенное программирование. оно позволяет не копировать вручную код для похожих типов, а писать обобщенный код. в серьезных библиотеках обобщенный код может "сам себя" оптимизировать, генерируя подходящие реализации в зависимости от обрабатываемых типов и различных параметров. на С та же эффективность достигается ручным копированием тысяч строк кода. вобщем в С++, путем написания сложного библиотечного кода небольшого размера, можно достичь последующего простого и удобного использования этого кода. |
|||
|
||||
| NightmareZ |
|
||||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Это ты прав (если не считать совсем незначительные исключения из правил). Да, это так. Я уже приводил аналогию. C - это сверло, C++ - это сверло с дилдо на конце.
На C# ещё больше встроенных средств. Там целый фреймворк на все случаи жизни. На C# ещё безопаснее писать код. Там, если что, среда по рукам даст.
F# уж куда лаконичнее.
Вот! Вот! Нафиг оно нужно? -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||||
|
|||||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
1. Включает не во всем. 2. По поводу встроенных средств. Во-первых - умирает переносимость компилятора. Во-вторых - чем больше встроенных средств - тем больше ошибок в компиляторе (баги фиксятся, но их больше при болшей сложности компилятора). К слову, еще недавно (как сейчас - не знаю) никто не гарантировал потокобезопасность STL. 3. Безопасность выше - бред. Часто видел баги в прогах на С? А на С++? Любой баг проги на С, написанный хоть сколько-нибудь умным человеком, легко ловится. А вот ошибки на плюсах - ловятся с огромным трудом (очень часто). (Не надо все сваливать на мою криворукость. Примеров - тьма) К тому же заботливо встроенные Страуструпом ловушки типа конструкторов по умолчанию не все избегают. Некторые и попадаются. 4. Лаконичность - отнюдь. Если писать на плюсах, как на С - да. Но так писать на плюсах - глупо и бессмысленно. А шаблон отнюдь не лаконичней двух функций. 5. И в случаях, когда это что-то высокоуровневое нужно применять, лучше оценить еще раз задачу и написать прогу на (питоне, шарпе, ...) Так как проще и безопаснее. |
|||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Простой пример преимущества C# над C++ - не нужно никакого RAII. А в редких случаях есть using и IDisposable.
C# и это умеет. А, например, Lisp уделывает в этом плане C++ за обе щёки. Ну это работает в любом языке, поддерживающем метапрограммирование. И, кстати, в C++ оно довольно убогое. В C это и не нужно. Просто не нужно и всё. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Просто гений. Такое оригинальное сравнение. Только есть инструменты в 10 раз меньше, во много раз проще для обучения - (Python, #, ...) А иногда нужен и молоток - да, он не может работать кувалдой (С++). А оно надо? Эта кувалда только учит бить. Иногда ей учат работать как современным инструментом (хм... Александреску?), только это все можно сделать еще проще.
Если приходится так делать - вы не умеете программировать на С. Про такое копирование почему то пишут только программисты С++. Потому что нормальный человек так на С не пишет. Может, просто вы не умеете проектировать? |
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Присоединяюсь Если человек, который называет серыми мышками приверенженцев С++ в качестве примера, называет это:
А также это: А также это:
О чем может идти спор. Вот откуда берутся безумные продукты, которые жрут немеряно памяти, работают как черепахи, занимают по 300 метров на диске. Если шаблон считать аналогом 2-х функций - это просто незнанием вопроса пахнет. |
||||
|
|||||
| Fatkh |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Тут незнанием русского языка пахнет. Я привел пример применения. Не более того. И не надо заниматься домыслами. Я знаю сферу применения шаблонов. Иногда нужно думать над тем, что написано. Говорилось про лаконичность.
А пример? Я таких не знаю. (Приложения на Java в пример не приводить) |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
ребята. уже не раз было доказано, что этот чел(я буквы не попутал?) троль. кому нужны доказательства, приведу. по моему, отвечать мертвечине, признать себя мертвым. кто против, ответьте ему.
Это сообщение отредактировал(а) andrew_121 - 19.9.2009, 22:52 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Я както смотрел таблицу сравнения языков - выяснил что лучший императивный язык - это javascript. Покодил на нем, и понял что он действительно хорош. Но если мне надо писать библиотеку для приема\передачи данных по некоторому хитрому бинарному протоколу - javascript мне в этом не поможет.
Допустим надо писать код для извлечения данных из двоичного буфера, их изменения, и обратной записи буфер На С это будет выглядеть так
на С++ это будет выглядеть так
Если бы в С++ была интроспекция, позволяющая перечислить поля структур (как в js), serialize() был бы не нужен. |
||||
|
|||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Оппаньки, тут тебе поможет C#! -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
но вообще, я возлагаю большие надежды на D
вот разгребу то что не дописано на С++ - попробую изучить D Добавлено через 7 минут и 8 секунд NightmareZ, да, отдельные части программы хорошо было бы написать на ***. Но, либо всю программу - на С++, либо часть на асме, часть на С++ (на С смысла писать нет), часть на скриптовых языках. Первый вариант проще, чем стыковать нестыкуемое. |
|||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Как тебе такой вариант: ядро пишем на лиспе, а ту часть, которую ты хотел на скриптовых языках, пишем на DSL, написанном на лиспе? Это сообщение отредактировал(а) NightmareZ - 19.9.2009, 23:16 -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| Fatkh |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Любому языку для развития нужны деньги и реклама. У разрабов D их негде взять. И рекламы также нет.
На асме писать нужно либо жесткую математику, либо работу с процем. И ничуть не проще написать серезный крупный проект на С++, чем на , к примеру, Питоне, а нужные места оптимизировать на С. Это огромный плюс к скорости разработки и безопасности кода. |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
NightmareZ, а асм-вставки в лиспе как? а производительность как? а fastcall лисп поддерживает? чтоб аргументы в eax, edx, ecx?
Fatkh, D вроде бы достаточно развит, чтобы на нем можно было писать код на асме надо писать то, что удобно писать на асме. И это не только математика и производительность. Это еще и задачи расширения функциональности готовых программ (перехваты и т.п.) Разработка (написание+отладка) модулей на С для питона это быстро? не верю. |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 0 Всего: 191 |
Mastodont, если ты себе задаешь этот вопрос, значит ответ НЕТ !
По очень простой причине- ты в себе не уверен. А это очень плохо, т.к. скажется на достижении результатов. Уверенный в себе человек, может горы свернуть, а не уверенный, не сможет ровным счетом ничего |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Почитал, появилась пара вопросов:
NightmareZ: 1. Насколько сильно развита в Лиспе парадигма ООП? Можно ли в Лиспе работать на нулевом кольце? 2. Есть ли вероятность что весь мир вскоре перейдёт исключительно на продукция Микрософт? Это будет значить что можно преспокойно все гуёвые приложения писать на С#. 3. Что Вы знаете лучше, Лисп или С++? Fatkh: Хотелось бы пример ошибки в С++, которую было бы найти сложнее чем в С. Для примера, забыли мы где-то в тридевятом царстве сделать free, в С++ это решается умными указателями (по моему, наиболее наглядный вариант). А в защиту С++ могу добавить что это не один язык, а множество. Поэтому он и сложнее в изучении. Но при этом всё происходит единообразно, что по моему существенный плюс или даже два плюса Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:02 -------------------- вопросов больше чем ответов |
|||
|
||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
CLOS Поржал, спасибо. Ты сам поймёшь, что этот вопрос тупой или тебе разжевать?
Наверное, нет. А что?
На C# можно писать и под линух и под MacOS.... C++ Лисп мощнее и гибче, чем С++. И, при этом, проще. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
NightmareZ, я тоже сначала поржал над нулевым кольцом,
но на чем писать дрова, если не на С++ или не на D? на дельфи? почему-то лисп и C# не позвляют писать дрова, а на С писать менее удобно, чем на С++ |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Разжуй, будь любезен. Это не ответ на вопрос, я вижу по ссылке что что-то связанное с ООП есть, а насколько сильно развито там сразу не видно. Времени изучать развитость ООП в Лиспе у меня нет, потому и спросил. Я же не говорю что язык дерьмо, я его не знаю, потому и спрашиваю у того кто что-то о нём знает. Добавлено через 1 минуту и 34 секунды Можно подробнее чем именно он гибче и мощнее? -------------------- вопросов больше чем ответов |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Много коммерческого софта было написано на плюсах? Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:13 -------------------- вопросов больше чем ответов |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Вы издеваетесь? Для поиска таких ошибок для С есть утилиты. Все. Проблема решена. А вот проблема утечки памяти в плюсах часто отлавливается с трудом - из-за конструктора по умолчанию. Есть практические примеры, и немало. Ага. Эдакий урод с семю головами и пятью хвостами с мануалом больше "Войны и мира". Туда все и идет. Только что-то все больше программистов переходят с плюсов на шарп, питон, джаву. Просто платят за скорость разработки, и покупают то, что дешевле. Программа, написанная на ваше монстре, куда дороже аналога, написанного на трушном высокоуровневом языке (мб с прикрученным ускорением фрагментов асмом или С). Только скажите - зачем такой урод? Легче (проверено) выучить отдельно С и (Джаву?, Питон), чем С++ и еще научиться правильно на нем писать. Заметьте - в книгах по плюсам оочень много про то, как не нужно делать. Язык то нелогичный. И потому у него нет будущего. Добавлено через 6 минут и 53 секунды Только почему то по большей части их на чистом С пишут. Оригиналы, однако. Наверное, пишут и не знают, что на плюсах лучше. Так чем неудобно? Тем, что не умеете? Иного не сказано. Хватит говорить о неудобстве С. На нем пишут ядра *nix, Apache, Gnome (последний писали, сейчас переносят... но отнюдь не на плюсы, а на C# (Mono)). |
|||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Пруфлинк можно? Я лично пока на просторах мировой сети, первый раз вижу подобное утверждение.
Почему же сразу урод? На мой взгляд всё вполне логично и связанно. Подводных камней хватает, не спорю, как и в С. На плюсах и утилиты не нужны, достаточно умных указателей, о чём я уже упоминал. Можно поподробнее про утечку из-за конструктора по умолчанию, я не сталкивался, а вообразить сходу не получается. Добавлено @ 00:27 К сожалению проект сырой и неизвестно сколько будет пребывать в таком состоянии. И будет ли жив через 5 лет тоже неизвестно. А неизвестность пугает... Добавлено @ 00:28 Сила привычки? Других причин не вижу, хотя тут вероятно играют свою роль библиотеки. Скорость выполнения (с учётом современных оптимизаторов) одинаковая. Но говоря о нулевом кольце я имел ввиду что С++ может то чего не могу С# и Lisp. Это значит что С++ в низкоуровневом программировании превосходит их. Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:38 -------------------- вопросов больше чем ответов |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Fatkh, неужели так сложно изучить С++, что приходится писать на С ?
|
|||
|
||||
| Fatkh |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Он выгоден мелкомягким. Будет жить. Но как вариант - Python. Либы, фрэймворки.
Потому что куда проще вылизать что-то специализированное, чем что-то, умеющее все. За универсальность всегда приходится чем-то отвечать. Какие же в С подводные камни? Конструктора копирования. По умолчанию - не всегда работает так, как нужно. То есть тупо копирует. Добавлено через 2 минуты и 3 секунды
Я начинал с плюсов. Потом понял, что язык чрезмерно перегружен и нелогичен. Перешел на С и Python. Эта связка ничем не уступает С++. А изучать - мне несложно, хотя куда сложнее других языков. |
||||||
|
|||||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
-------------------- вопросов больше чем ответов |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Как такой конструктор может привести к AV легко представляю. А к утечке - если только самому так написать класс. Или я не могу такое вообразить. Приведите пример, когда неправильно работающий конструктор копирования приведет к утечке? |
|||
|
||||
| Леопольд |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
На то он и конструктор копирования по умолчанию, что-бы тупо копировать. Если нужно более изощрённое поведение, то было бы логичнее его реализовать. Лично я считаю что он существует только по одной причине - сишные POD типы. И подобную ошибку, может совершить только ньюкамер перешедший вчера с С на С++, ему это простительно Добавлено @ 00:49
Мне тоже так показалось поначалу. Но только поначалу. Всё логично и хорошо заверчено. Языком можно вполне успешно пользоваться зная только некоторую, логически завершённую, часть. Добавлено @ 00:52
Не могу понять чем же не устраивают либы и фрэймворки С++, boost, wxWidgets, Qt и т.д. и т.п.
Я бы не стал утверждать подобного зная только С и Питон, но не доучив толком С++. Это сообщение отредактировал(а) Леопольд - 20.9.2009, 01:27 -------------------- вопросов больше чем ответов |
||||||||
|
|||||||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
А по моему у языка очень большое и светлое будущее.
Добавлено @ 01:05 (с) Wikipedia
Благодаря правильной инкапсуляции, в С++ можно спроектировать сущность так, что-бы её можно было использовать только лишь определённым образом или очень сложно было бы использовать неправильно, иначе - ошибка компиляции. Если Lisp этого не умеет, то это серьёзный недостаток и большой плюс для С++ по сравнению с ним. Что-то мне подсказывает что ты недостаточно хорошо знаешь С++. Статический и динамический полиморфизм есть? Может есть ещё какие-то другие "плюшки", которые компенсируют отсутствие инкапсуляции? Это сообщение отредактировал(а) Леопольд - 20.9.2009, 01:32 -------------------- вопросов больше чем ответов |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Если это действительно так, а Лисп ты знаешь ещё хуже то "недорос" ты ещё до того что-бы сравнивать эти языки. А ведь чуть было не сбил человека с пути, возможно, истинного. -------------------- вопросов больше чем ответов |
|||
|
||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Нет абсолютно никакого значения, на чём написан код. Что угодно можно запихнуть в нулевое кольцо. C, ассемблер. Например, возможностями метапрограммирования.
Это нецелесообразно. Зачем писать гуй на C++, когда на C#/Delphi/Java/VisualBasic это можно сделать быстрее? Да, язык неплох в своей нише. Какашки вкусные. Миллионы мух не могут ошибаться. Выкинь свою подсказывалку.
-------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| Леопольд |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Я спрашиваю с целью выяснить насколько хорошо ты знаешь С++.
Тогда расскажи, пожалуйста, чем ООП в Лиспе лучше или хуже ООП в С++. Хотелось бы увидеть от тебя хотя бы немного конкретики а не юморески про какашки. Добавлено @ 09:03
Для того что-бы писать те же дрова, программисту С++ не надо будет изучать новый язык. В чём его преимущество, он придерживается тех же принципов что и С - делай что хочешь, если знаешь что делаешь. Я конечно не могу знать, не интересовался, но почему-то почти уверен что С++ на этом уровне на голову выше Лиспа. Добавлено @ 09:10
Это сообщение отредактировал(а) Леопольд - 20.9.2009, 09:18 -------------------- вопросов больше чем ответов |
||||||||
|
|||||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
так не спрашивают. нужно попросить решить какую-нибудь простенькую задачку на С++ и уже по уровню кода можно будет сказать насколько человек хорошо/плохо знает С++. это как игра в шахматы: более опытный игрок может определить уровень своего оппонента по том, как он ходит(фигурами) |
|||
|
||||
| W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Я сейчас занимаюсь разработкой софта для статистического анализа. В общем там очень много расчётов и везде работа в матрицами. На С++ у меня реализован класс Matrix<T>, где оптимизировано хранение больших матриц в памяти, операции над ними. Могу писать:
Что ты мне предложишь на С? Как бы оно выглядело? А если захочу поменять тип данных в матрице? Или добавить ещё 3-4 операции в формулу с разными типами? Если же говорить про C#/Java/Lisp, то я уверен, что реализация такого класса и интерфейса с классической нотацией проиграет в скорости моей на порядок на больших матрицах (от 512х512). Можем протестить, если у кого-то есть желание. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Больше чем уверен, что он откажется. -------------------- вопросов больше чем ответов |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
1. Да, букв было бы больше. Не спорю. 2. Поменять тип данных? Зачем? Если дело обходится базовыми типами, то double - на все случаи жизни (или long double (C99)). Иначе - void * и переданный указатель на функцию сравнения (или еще чего-то). http://numpy.scipy.org/ http://www.scipy.org/ Классический пример, но Питон для сложных математических вычислений использует NASA (или Pyrex, или С, или асм, если очен уж нужно оптимизировать). Им не важна скорость? (Да, большая часть кода написана в виде либ на С, но не на плюсах) |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Представьте, что приложение работает 24/7. Скоро с памятью начнутся проблемы. Во-первых - нет в плюсах инкапсуляции. Там есть data hiding. Поищите в инете - поймете разницу. А эта ваша data hiding нужна, только если априори считать программистов придурками. Если он полез туда, куда не надо - это его проблемы. К тому же даже data hiding плохой. Простым memset я могу сделать то, что захочу.
Сложностью и неудобностью языка. На Питоне писать намного проще и куда быстрее, а соответственно - намного дешевле. Qt4 хорош... для того, чтобы сделать его порты на другие языки. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
C++ защищает от случайного изменения приватных данных, но не от намеренных изменений. c помощью идиомы pimpl можно скрыть детали реализации. Это сообщение отредактировал(а) zim22 - 20.9.2009, 12:32 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
создается впечатление что ты не знаешь о чем говоришь инкапсуляция - не свойство языка, это паттерн который может применен в конкретном коде. сокрытие реализации - не от того что пользователь считается идиотом, оно нужно чтобы нельзя было как-то изменить реализуемую абстракцию. это гарантирует надежность кода. простым memset, в общем случае ты ничего не сделаешь, т.к. в общем случае тебе вообще неизвестна и недоступна реализация. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Намного больше. Плюс есть разница между A * B / В и кучей вызовов функций в строчку. Писать на С++ на порядок проще и удобнее, чем на С, а соответственно дешевле и быстрее. При равной эффективности. А зачем вообще нужно обобщённое программирование? Ну если хочешь пример, то я в матрице могу хранить комплексные числа. Представляю в какую лапшу превратится код на С. А на С++ ничего менять не надо. Я работал с этой библиотекой на питоне. Там для работы с матрицами используется NumPy. Если честно, очень неудобная библиотека. Качественная, хороший функционал, но лично мне она показалась даже менее удобной, чем мои средства на С++. Но я не понял, что ты хотел этим сказать? То, что писать такие либы на С более удобно и эффективно, чем на С++? Очевидно, что это не так. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Написать приложение, у которго в режиме 24/7 можно на любом языке. Причем здесь плюсы? Я говорил про конкретно конструктор копирования: Вы сказали, что из-за плохой реализации языка конструктор копирования часто приводит к утечке памяти. Я попросил привести пример такого кода. И получил такой ответ. Проблеме распределения памсяти для приложений 24/7 посвящено очень много статей и книг. И при чем здесь конкретный язык? Для этого и существуют собственноручно написанные менеджеры памяти. И на плюсах использовать свой менеджер памяти можно запросто. При этом удобство очевидно. В си реализовать это намного муторнее.
Этой фразой вы наверное сильно подняли свой авторитет |
||||
|
|||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
В плюсах это не паттерн, а декларируемое свойство языка. И паттерн этот можно реализовать и средствами С. (Можно, только не нужно это там) Перечитай предыдущие посты. Началось с определения ниши для плюсов. И этим я хотел сказать, что в таких случаях лучше применить что-то более высокоуровневое, (Питон?). А для системного программирования - С. И не надо смешивать. Никто не предлагал такие задачи решать на С. Для них есть другие средства. Просто С покрывает низкоуровненвое программирование (+асм), а высокоуровневое покрывается языками более высокого уровня(уже перечислял). И где ниша С++? С++ пытается занять все ниши. Только для каждой ниши есть более подходящие, так как узкоспециализированные, инструменты. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
С++ ничего не пытается. Он не умеет думать и он не живой. Пытаются те, которые на нем работают. За последние 5 лет для С++ вышло столько великолепных библиотек, что только доказывает, что армия приверенженцев С++ только увеличивается. Язык без поддерджки - пустое место. Если язык превращается в очень высокий уровень - он резко теряет производительность. Если брать Си - на нем ничего кроме низа делать не хочется. С++ имея столько наработок и бибилиотек превращается в инструмент на все случаи жизни не набирая "веса" и не теряя уровня. |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Это умный пост? По частям: 1. Я нигде не говорил про плюс-минус пару сотен функций. Если у вас так - вы не умеете проектировать. 2. Чем не нравится double? (для бызовых типов, как я и писал) 3. Где??? Где пару гигов? Где вы такое видели? За всю жизнь видел только одного такого монстра, и написанного как раз на плюсах. К слову. По поводу будущего С++. Не забывайте про Games development. Это самая жирная часть рынка. Не надо объяснять, почему там С# рулит? (Для непонимающих объясню: Microsoft + development time + портируемость на консоли = С#) Это сообщение отредактировал(а) Fatkh - 20.9.2009, 12:45 |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Выскажусь не совсем по теме, но пример очень неудачен. Во-первых, все достоинства C++ в данном случае сводятся к удобству для программиста (при этом некий достаточно близкий аналог можно реализовать и на C с помощью макросов - решение потенциально "небезопасное", но все же). А вот производительность полученного кода (которая в задачах такого рода обычно является наиболее критичной) будет, мягко говоря, невысокой. Во-вторых, это как раз тот случай, когда с помощью предлагаемого инструмента можно успешно решать проблемы, которые при использовании других инструментов просто не возникают. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Для кого лучше? Давай больше конкретики. Для приведённого случая я не понимаю чем "лучше".
Производительность будет не НИЖЕ, чем при реализации на С. С чего ей быть невысокой? Не попал. На фортране это будет выглядеть также громоздко как и на С. И насчёт производительности опять мимо. Давай код на фортране, сравним. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Фантом |
|
||||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Пробовал? Проблема в "накладных расходах" на создание и уничтожение промежуточных экземпляторов матриц. Вот в этой твоей строчке:
каждый перегруженный оператор и функция tr() (кстати, что понимается под "делением"?) создают экземляр результата, который после использования, кстати, еще и уничтожить нужно. В одной этой строке это произойдет как минимум три раза, и при больших размерах матриц это весьма накладно. Другое дело, что и на C можно написать столь же "производительный" код - если каждый оператор тупо заменить соответствующей функцией. Но зачем? А оптимизация этого вычисления неизбежно приведет к отказу от использования класса для матриц, и от C++ фактически ничего не останется.
Опять тот же вопрос - пробовал? Код на Фортране дать не проблема, но мне нужно иметь образец, который требуется переписать. А в наличии только одна строка, причем с не вполне понятным смыслом. Выдай кусок побольше - напишу аналог. |
||||||
|
|||||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Вы говорили про пару (на конкретный класс). Если брать крупный проект, в нем пара сотен классов будет. По паре на класс - и вперед. Вы прекрасно знаете о чем речь. Применяя возможности языка можно не заботится и перемене типов. Написание собственных типов - это основное преимущество С++ перд Си. Если понадобится матрица объектов, то на Си (как вы суже сказали) это делается при помощи указателя на void. Естественно это самый надежный и защищенный механизм
Я говорил про работспособность "супер языков высокого уровня". Для того, чтобы заработал шарп сколько дополнительного надо поставить? Сколько это весит? Добавлено через 5 минут и 54 секунды Почему вы уверены, что там не ссылки? Я пробовал. Но не спора ради, а помогал человеку - заядлому фортранисту. Он академик по статистике, у него там матрицы были порядка 5000х5000. Мне было лень разбираться с фортраном и я помог ему на С++. В общем может быть он слабый программист, может фортран у него был какой-то медленный не знаю. В общем на С++ пошустрее получилось. |
||||
|
|||||
| W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Нет тут никаких накладных расходов. Ты знаешь, что такое передача по ссылке, inline и NRVO? В этой строчке не произойдёт ниодного копирования. Ты ведь изначально утверждаешь, что код на фортране будет работать намного быстрее, чем код на С++. Вот и докажи. Я не вижу никаких предпосылок в пользу этого утверждения.
Т.е. ты даже никогда не писал подобного кода на фортране? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Ссылки на что? Если обсуждаемый класс хоть сколько-нибудь функционален, то при каждой бинарной операции результат должен куда-то записываться, причем это "куда-то" не может совпадать ни с одним из операндов. Вот совсем простой пример. Пусть у нас есть такая строка:
где A,B,C,D - матрицы, оператор "+" соответствующим образом перегружен. Что произойдет? Будет вызван первый "+", соответствующий метод сложит A и B, и ему надо куда-то деть результат. Соответственно, будет вызван конструктор Matrix и в итоге появится еще один экземпляр, в который будет записан результат. Потом будет вызван второй "+", которому будет скормлен этот новый экземпляр и C, результат попадет в D. Итого по дороге был создан (и спасибо, если не забыт в памяти) лишний экземпляр. Если бы человек писал все это "вручную", то, конечно, проще было бы сразу написать поэлементное сложение трех матриц. Тогда ничего промежуточного не возникает. Но компилятор при использовании класса Matrix проделать это сам не может, у него для этого недостаточно информации. Поэтому он честно обеспечит генерацию дополнительной промежуточной матрицы. Скорее всего, и то, и другое. Фортран достаточно сильно эволюционировал за время своего существования, и, к сожалению, добрых 90% людей, "знающих Фортран", пишет не на современном языке, а на том, который был современным в пору их молодости. Ну и естественно, что результаты получаются так себе - во-первых, подавляющее большинство преимуществ появляется при использовании двух-трех последних по времени вариантов, во-вторых, на оптимизациею конструкций, актуальных, например, для Fortran 77, разработчики современных компиляторовЮ по понятным причинам, тратят весьма немного времени и сил. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Фантом, ты про шаблоны чтонить слышал?
|
|||
|
||||
| zim22 |
|
||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
на лицо плохое знание С++ *** из книги "Язык программирования С++. Специальное издание" Страуструп. 11.6. Большие объекты. стр. 331.
Это сообщение отредактировал(а) zim22 - 20.9.2009, 14:35 |
||||||
|
|||||||
| Фантом |
|
||||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
См. чуть выше.
Знаю. Только ты объясни внятно, куда денется, например, результат умножения матриц A и B при прогонке твоего кода, и как этому помогут передача по ссылке, inline и NRVO? Или у тебя все расчеты делаются не программой, а сразу компилятором? Для тех, кто в танке, повторяю еще раз: для того, чтобы показать, что код на Фортране для решения твоей задачи будет эффективнее, чем твой код на C++, мне надо увидеть как минимум постановку твоей задачи. А еще лучше - твой код. Что тебе сейчас можно написать? Ты даже не сподобился объяснить, во что перегрузил деление. Если его убрать, то близкий аналог твоего
на Фортране перепишется так:
Очень громоздко, правда? |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Фантом,
если A, B, C, D - матрицы, то в С++ код A = B + C + D; преобразуется к виду цикл( i,j ) A[i,j] = B[i,j] + С[i,j] + D[i,j]; потому что перегруженные операторы сложения построят AST, а перегруженный оператор присваивания это дерево преобразует в оптимальный вид, и сгенерирует при компиляции оптимальный код Это сообщение отредактировал(а) GoldFinch - 20.9.2009, 14:43 |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
кстати вариант. метапрограммирование называется
вспомнилась подпись Qraizer: одни с годами умнеют, другие просто становятся старше. Это сообщение отредактировал(а) zim22 - 20.9.2009, 14:50 |
||||
|
|||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
На C++ участвовал только в одном коммерческом проекте. Как только предоставилась возможность, перешёл в другой - на C# и чувствую себя в нём гораздо удобнее.
ООП - оно и в африке ООП. Лисп действительно мультипарадигменный язык, в отличие, от C++. Это раз. Лисп проще, чем C++, но при этом гибче. Это два. Пока достаточно. Человек, способный писать на одном ЯП - быдлокодер.
Слышал про лисп-машины? Как думаешь, системный язык там какой? Зелёное хуже, чем мокрое? Хорошо, давай я пишу твою задачу на C++, а ты мою на лиспе. Ок? Добавлено через 53 секунды Метапрограммирование в C++ убогое по сравнению с тем же Nemerle. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Нет, скорее невнимательное чтение кое-кем предшествующей переписки. Эта идея, конечно, частично спасает положение. Правда, ниоткуда не следует, что
Однако остаются и проблемы. Во-первых, матрицы, с которыми приходится иметь дело, велики (а помощь небес не безгранична). Во-вторых, в одном вычисляемом выражении может встретиться, вообще говоря, сколько угодно бинарных операций (и, соответственно, промежуточных результатов). Пример Стауструпа можно модифицировать для этого случая, но размер буфера неизбежно придется ограничить. В-третьих, модификация того же примера для случая матриц произвольного размера (а в реальных задачах редко когда все матрицы сплошь одинаковые) приведет к необходимости написать нечто, весьма сильно напоминающее полноценный менеджер памяти. Человек, конечно, может все, но стоит ли изобретать велосипед самому и собирать его из подручных материалов? |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
||||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
И как сие получится? Нет, я даже не буду просить написать мне такой код, который даст это при компиляции - достаточно будет лишь объяснить, откуда и как компилятор получит информацию для такой оптимизации. |
|||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: -1 Всего: 13 |
Ну ты докажи сначала, а там посмотрим, что с этим делать. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Есть, но не в задачах такого рода.
Спасибо. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
именно в задачах такого рода литература: Чарнецки, Айзенекер "Порождающее программирвоание" Вандервурд, Джосаттис "Шаблоны С++. Справочник разработчика" |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
Без смыленный спор!
Каждый пишет на том что нравится. Это как религия каждый верит в то что ему ближе. Если конечно для себя . А ваше программисты подневольные люди обычно же как ставиться задача и на чем она должна быть реализована !Конечно если вы не начальник и сами не решаете на чём она должна быть решена. С# конечно круто только одно меня смушает то что это от создателей виндовса ! А за то время что у меня есть ПК главное что я выучил то что Маёкрософт творит что хочет и им пофиг на всех так что неизвестно что будет завтра. Так что меня этот я зык пугает потому-то можно проснуться утром а там вся парадигма переработана и вот ты сидишь и оказывается твои знания этого языка некому ненужно ! Липс про него нечего сказать немогу не слышал не писал нечего пронего не знаю. Но все ваши тирады о его достоинствах больше похожи на пропаганду на выборах …. Никаких примеров нечего просто красивые слова ПРОШЕ, ГИБЧЕ , УДОБНЕ . Приведите пару примеров одной и тойже задачи на ЛИПСЕ и на С++ и докажите что Липсом это легче решается….. а не Бейте себя коленом в грудь и говорите да это Проше вы тут дураки не пробовали не знаете. И ваше странно пришли в тему С++ и рассказываете каое это ### и то что все кто на этой теме создают темы и решают дураки давно пора закрыть её и всем разойтись по домам ! Создайте тему Липс и на своём примере доказывайте как он крут …. Может когда я увижу что это действительно так я и перейду на него !! |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
И что, прямо-таки всегда получится? Или все-таки автору библиотеки с классом Matrix для этого придется как следует попотеть? Понятно, что принципиально это реализуемо. Но в теории. На практике для обработки всех возможных вариантов придется написать очень много "сопроводительного" кода. Если бы кто-нибудь когда-нибудь это сделал, было бы очень недурно... но факт остается фактом - такой библиотеки для работы с матрицами под C++ так никто и не написал. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
нельзя ли уточнить, о чем речь, что именно трудно реализуемо ? а то потерял нить следуя по топикам этой темы. Это сообщение отредактировал(а) mes - 20.9.2009, 15:41 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
||||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
ребята я создал тему в Релегиозных войнах .... Давайте организуем конкурс и пусть каждый будет доказывать на решение реальных примеров задач достоинства своего языка !! А )))
|
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
Я же уже писал. Еще раз - для каждой цели свой инструмент. На С просто не нужно делать это. Для таких задач есть другие языки - я их не раз перечислял. Если уж хотите доказат, что С++ удобнее С, то приводите примеры из областей, где С можно и нужно применять. В системном программировании ни матрицы объектов, ни просто двумерные массивы интов никому не нужны.
На висте и выше - ничего. На линухе - Mono - не проблема. Весит не так много, чтобы это было проблемой. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Fatkh, если код на С можно 1в1 заменить кодом на С++, а местами и улучшить, то зачем С?
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Фантом, Eigen, возможно, устроит? Там и со скоростью нормуль (lazy evaluation, explicit vectorization) и Open Source. Я мало знаком с Fortran'ом (но я исправлюсь -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Фантом,
насчет возможностей шаблонов, вот такой код тоже невозможен на С++ ?
а оно работает... |
|||
|
||||
| Фантом |
|
||||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Разбор матричных выражений, позволяющий построить производительный код без создания (и с минимальным использованием) промежуточных объектов.
Попытки были, одну из них даже уже упомянули. Но до эффективности и производительности BLAS и LAPACK все это все равно не дотягивает.
Вот-вот, это одна из лучших реализаций этой идеи. Она очень неплоха, но все-таки в серьезных вычислениях используют не ее. И, кстати, раз уж о ней зашла речь - это больше мегабайта исходников. Не слишком много, конечно, но для вспомогательной детали, предназначенной для более удобного написания одной частной программы, несколько многовато. |
||||||
|
|||||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
GoldFinch, плохой ты холиваршик!
Нет. Ну, ну. Притормози. Теперь тоже самое, без буста, на стандартном С++. -------------------- |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Не спорю. Сам именно так её и использую. -------------------- |
|||
|
||||
| W4FhLF |
|
||||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Реализовал. Только не то, что описал zim22. Я сделал перегрузку тринарных операторов. Получается нечто вроде замыканий. Сделал для A*B*D и A*B+D т.к. у меня эти операции используются в 90% случаев. Хотя можно сделать для любого выражения. Однако, если уж говорить об оптимизации, то накладные расходы не превышают 15%.
Возможно здесь уже все забыли. Но я класс с матрицами привёл по просьбе показать пример "С vs C++". И речь идёт о реализации собственных решений. У меня и в мыслях нет тягаться с ребятами из Intel или реализациями из BLAS какого-нибудь. Класс матрица просто "удачно" вспомнился. Мне интересно. Что будет с оптимизацией накладных расходов в твоём примере на фортране? И что будет, когда ты выйдешь за рамки стандартного, оптимизированного для конкретного компилятора (IFC), функционала?
Дело не в велосипеде. Изначально речь шла о удобстве использования собственных решений. Вот допустим оператор перемножения матриц у меня достаточно сложный и его поведение определяется размером матриц: 1. До 50000 элементов. Классическое умножение. 2. От 50000 до 2000000 элементов используется перемножение с более эффективным использованием кеша(одна матрица транспонируется и т.к. они у меня хранятся линейно, я прохожусь по обеим матрицами последовательно, что позволяет эффективно использовать кеш процессора) и векторизацией вычислений(сразу умножается от 4х до 16 элементов). 3. От 2000000 элементов. Вычисления переносятся на GPU. Никто не мешает использовать другие процедуры, из сторонних библиотек в том числе. Важно, что внешне как есть A * B, так и остаётся. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||||
|
|||||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
W4FhLF, дошло до меня. Тему, видимо, разбили. Отсюда утекло что-ли? Я уже отвечал в новой теме, с новым названием. =)
Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:04 -------------------- |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Хорошо. Но все-таки, на мой взгляд, игра не стоила свеч.
Так ведь я цеплялся именно к этому конкретному примеру. Как показывает опыт, результат получается лучше. А за функционал, если задачи являются сугубо вычислительными, вылезти очень сложно. Конечно, так тоже можно. В конце концов, можно просто написать обвязку для того же LAPACK и радоваться. Но тогда возникает другая проблема - сложность разработки и поддержки всего этого. Если вернуться к исходному вопросу, то бессмысленно спорить с тем, что C++ язык универсальный и очень мощный. И сделать на нем можно все. Но далеко не всегда это рационально. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
mes, Вы, блин все как в вакууме сферическом живёте, ей богу. На календарь посмотри. 0x... -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, а чем буст не стандартный С++ ? в нем все средствами языка реализовано
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Если возвращаться к теме обсуждения и к примеру, приведённому W4FhLF'ом то надо чётко понимать разницу между фичей на уровне библиотек и фичей на уровне языка. boost - сторонняя библиотека. А мы обсуждаем язык. То, что, скажем в Fortran, дадено на уровне языка, можно реализовать на С++, используя шаблоны. Или уже реализовано и нужно только воспользоваться. Но! Сторонние библиотеки - это дополнительный объём кода, в т.ч. и объектного, дополнительный API, который надо изучить, дополнительные трудности с установкой/настройкой. А с точки зрения разработчика библиотеки - дополнительные трудозатраты. И в случае С++ ой какие не малые. Язык убожество полное. Дрянь. А шаблоны - no comments. Какой смысл, скажем, от BGL (пытался тут потрогать), если чтоб её использовать С++ надо лет 5-10 изучать? Кому нужно-то такое? А шаблонный код на ++ - это нечто. Perl нервно курит в сторонке. Зато да, крутость то как возрастает, когда говоришь, шаблоны, обобщённое программирование. Аж в штанах тяжелеет. Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:44 -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, вот лежит у меня книжка про BGL, гдето 300 страниц
у нее небольшая вводная часть про обобщенное программироваие, гдето 50 страниц, и там впринципе все что надо знать про ОП на С++ чтобы использовать С++ я использую С++ меньше года, и мне не надо было 5-10 лет, чтобы изучить С++ до уровня достаточного для понимания как использовать BGL большинство библиотек в бусте header only, они не содержат и не генерят лишний объектный код. встроенные средства языка типа Fortran генерируют не меньше кода, чем код получаемый при компиляции библиотек C++ жесткие встроенные средства не лучше чем гибкие возможности реализовать те же средства на уровне библиотек с шаблонами все нормально. я их постоянно юзаю, ничего плохого в них не вижу, надо просто потратить время на их изучение. затраты на написание библиотеки компенсируются ее частым использованием, и удобством ее использования Это сообщение отредактировал(а) GoldFinch - 20.9.2009, 18:42 |
|||
|
||||
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Тут 2 варианта: ты либо гений, либо врун. Я даже расписывать не хочу. Что называется, не надо ла-ла. Меньше года и уже понимать многое в шаблонах... Нет... Или гений. А я вот туповат, видимо.
Верно в общем случае. Абсолютно никакого отношения не имеет к предмету обсуждения - С++. Этот мультипарадигменный многоязык содержит тонны ненужного хлама. И будет содержать ещё больше. Очень много нужно вынести на уровень библиотек. И тогда тезис станет верным и для С++.
Извини, у меня этого времени нет. Совсем нет. И я не чувствую, что получу практическую выгоду от знания этой фичи. У меня длине станет? -------------------- |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
насчет С++ vs С vs all
http://forum.vingrad.ru/index.php?showtopi...t&p=1943034 в этом посте сравнивается код на С с обобщенным кодом С++ приводятся замеры времени выполнения и дизасмы результаты практически одинаковы приведите время выполнения такого же кода например на Fortran и его дизасм Добавлено через 13 минут и 52 секунды kemiisto, насчет гений\врун - посмотри мои посты на этом форуме я тут зарегился когда только начал писать на С\С++ (в начале больше на С чем на С++) |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Ты ещё про scaling factor не забывай. Программы пишут не только программисты. А в случае прикладного ПО и не столько программисты. Времени на изучение С++ и борьбу с его ублюдочным синтаксисом и прочими "фичами" у них нет. И желания нет. У них мужское начало проявляется в другой форме. Там по-другому меряются.
Меня не интересуют синтетические тесты. Пока я вижу в области, которая мне интересна, практически полное доминирование Fortran'а. Значит не просто так... -------------------- |
||||
|
|||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Ты утверждаешь что знаешь С++, я говорю что не знаю Лисп. И я не сравниваю эти языки, и не утверждаю что компетентен это делать, в отличии от тебя. Так будь добр, покажи что это действительно так, а то одна болтовня только. Предлагаю тебе написать свой битсет любой размерности с доступом к битам по индексу. т.е. хотелось бы использовать вот так.
Недостаточно. В каждом языке своё представление как это должно работать. Я спрашиваю в третий раз, чем поддержка ООП в Лиспе мощнее чем поддержка ООП в С++? Пока что ты ограничиваешься лишь общими фразами. Может ответишь на вопрос? Ты утверждаешь что Лисп гибче, так объясни чем он гибче, пока что ни одного примера его большей гибкости я не видел. Может я решу что стоит Лисп изучить... Это сообщение отредактировал(а) Леопольд - 20.9.2009, 20:33 -------------------- вопросов больше чем ответов |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, если у тебя проблемы с изучением С++, то это твои проблемы, а не языка.
ты - не показатель. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
kemiisto, ага почитайте для краткости скажу, что GoldFinch, описывал C++ одним словом - "бред".. благо остались доказательства, ибо после постов этой темы в такое поверить трудновато Добавлено через 1 минуту и 41 секунду
тут полностью соглашусь, C++ для программистов, ибо спички детям не игрушка |
||||
|
|||||
| Фантом |
|
||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Тест действительно синтетический, но посмотрим. Я чуть переделал простейший вариант на C, благо C с C++ уже сравнивали. Вот так:
Аналог на Фортране выглядит так (почти аналог - я честно ликвидировал массив в конце работы
Оба варианта компилировались GNU-тыми компиляторами с ключом -O3, никаких других изысков не использовалось. Подсчет времени тупейший - банальный time. Результат - 1.7 секунды у C, 1.6 у Фортрана. При увеличении размера массива и количества тестов получалось либо примерное равенство, либо Фортран был чуть быстрее. |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
и тормозиииииииииииииииииииииииииииииииим пожалуй, достаточно упомянуть void*
Fatkh, поверь мне, С++ ты не знаешь согласен, для вычислений фортран хорош, насколько я знаю, оно к тому-же умеет векторизовать код (правда я понятия не имею, как там с многопоточностью...) Вообще, я считаю, что С++ - устарел, есть круг задач, для которых он подходит очень хорошо, это те задачи, в которых важна производительность, но используемые алгоритмы не слишком сложны. Но, в его нише, альтернатив просто нет. D - сырой, D 1.0 не представляет из себя ничего интересного, а D 2.0 - еще не готов, к тому-же на нем почти никто не пишет. С - сам язык очень прост, но писать на нем код(если конечно речь не о коде на 1000 строк) сложно. Попробуйте реализовать на Си, коллекцию объектов, которые подгружаются, по мере необходимости, из файла и, по мере ненужности, удаляются. Есть языки, в которых это можно сделать в несколько строк кода Мой выбор - не пытаться найти универсальный инструмент, вместо этого, нужно писать большую часть кода на чем-нибудь, работающем на виртуальной машине(я имею ввиду не виртуализацию, а т.н. platform virtualization, например JVM или CLR), при этом можно использовать разные языки, в зависимости от задачи, а требовательные к ресурсам элементы системы - писать на С++. Или, если есть возможность, вообще исключить неуправляемый код из проекта. И тут дело не в религии и не в том, что С++, это |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Хороший аргумент, только когда применяешь его к чему-то менее популярному, чем C++, почему-то обижаются. Блаб! Это сообщение отредактировал(а) Void - 20.9.2009, 21:37 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Не понял. Во-первых, аргумент - полное г...., так как С++ - единственный (императивный, а другие и не языки совсем Во-вторых, автору Blub Paradox для начала необходимо дать трактовку мощности языка. А так... Ниачём! -------------------- |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Фантом, при измерение времени используя time - это огромная погрешность за загрузку программы
но вообще, мораль такова: если язык статический, то код компилируется в статический бинарник который после компиляции не меняется. тот же код можно написать вручную на асме, и получить идеальный бинарник. сравнивая бинарники полученные при компиляции кода на любом языке с хорошим компилятором, мы видим что они похожи, и весьма близки к идеалу. тогда разница - только в сложности написания исходного кода. код на С++ писать быстрее чем на С, меньше букв код на фортране, arr=(/(0.1*N,N=0,MemSize-1)/) тоже выглядит неплохо |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Fatkh, кроме особенностей конкретных языков программирования, есть понятия общие для всех языков, например безопасность (устойчивость к ошибкам).
есть теории почему статическая типизация хороша, и теории почему хороша динамическая типизация, и конечно есть теории о типизации вообще. видимо всего этого ты тоже не знаешь. |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Мне было лень возиться. Именно - в сложности написания, читаемости, удобстве для поддержки и т.п. Фортран в этом отношении для таких задач намного удобнее. Пример выше не слишком показателен - куда интереснее будет, если какую-то программу надо будет параллелить. C++ в этом отношении неплох, но только если кто-то уже сделал за тебя "грязную работу". А если ее надо делать самому, то удобства C++ по сравнению с C в значительной степени нивелируются. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Фантом, если ее надо делать самому, и ты знаешь как ее делать - никаких проблем нет - берешь, и делаешь.
написать аналоги библиотек буста - вопрос времени, ничего особенного в них нет. однако практика показывает, что написать библиотеку и потом много раз ее повторно использовать, это быстрее чем каждый раз писать писать код без этой библиотеки |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Время - это самый ценный из имеющихся ресурсов.
Конечно. Но в обсуждаемом случае эта ситуация малореальна. Либо человек пишет такого рода программы постоянно - и тогда он почти наверняка будет руководствоваться "промышленными стандартами". В вычислительном программировании это Фортран, в чем-то другом - что-то другое, но совсем не всегда это C++. Либо для него это более-менее разовая работа, а тогда трудозатраты на создание библиотеки слишком велики по сравнению с общим объемом работы. |
|||
|
||||
| Fatkh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 5.9.2009 Репутация: нет Всего: 1 |
И? А есть теория русского языка, согласно которой ты сейчас не сказал ни одной значимой фразы. Да, есть теории. И что? Абстрактно говорить все мастера. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Привычка -- вторая натура?
Какие здесь преимущества у фортрана? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
И это тоже. Но и реализация многих нужных вещей на уровне языка (соответственно, с хорошим контролем ошибок компилятором), и отсутствие ненужных вещей (что тоже совсем не вредно) тоже облегчают жизнь. Встроенные средства языка. Они, правда, позволяют сделать не все, но в большинстве случаев их оказывается достаточно, по крайней мере для реализации чего-то уровня OpenMP. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Без конкретики конечно сложно, но я пока ничего уникального в фортране не увидел. Опять же, без какой-либо конкретики я не понял о каких преимуществах речь. OpenMP поддерживается всеми современными компиляторами С++, auto-vectorization есть в ICC и в MSVC++ (хотя она там не такая навороченная). А вообще, я сам недавно убедился, что в плане параллельных вычислений F# рулит. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
А Haskell нет? Я подумываю функциональный язык изучить, один. Не знаю что выбрать, Haskell или F# Это сообщение отредактировал(а) Леопольд - 21.9.2009, 13:13 -------------------- вопросов больше чем ответов |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Haskell не знаю. За F# стоит мощнейший фреймворк. В VS 2010 F# будет включён как один из основных языков. В общем MS многое вкладывает в его развитие. Но, win-only...
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
На mono то-же можно поставить, но через то самое место
|
|||
|
||||
| Фантом |
|
||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Ну, например, конструкции вроде forall и where. Как внешняя библиотека. Это, правда, уже вопрос эстетики, но все же...
Если бы он рулил еще под чем-то, кроме Windows... |
||||
|
|||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Haskell очень неплох в плане параллелизма за счёт правильных абстракций и мощного рантайма [1]. Причём команда GHC сейчас очень активно работает в этом направлении. Что есть в Haskell для параллелизма:
[1] Simon Marlow, Simon Peyton Jones, Satnam Singh. Runtime Support for Multicore Haskell. 2009. Это сообщение отредактировал(а) Void - 21.9.2009, 17:38 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
надо так-же понимать, что прогресс не стоит на месте: supercompilation for haskell |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |