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

Поиск:

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


depict1
****


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

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



Цитата(jscpp @  18.9.2009,  14:46 Найти цитируемый пост)
3. Программа управления двигателями на Боинге. Даже с масштабируемостью С++ С++ мелковато.

эээ, а что использовать тогда? Java? .NET? Oberon?


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


[хакер]
**


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

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



Цитата(Cheloveck @  19.9.2009,  18:19 Найти цитируемый пост)
З.Ы. моё мнение. Язык лишь инструмент. Нельзя топором сверлить отверстия, а дрелью забивать гвозди. Каждый язык для своей задачи.


Я полностью поддерживаю! Лишь добавлю, что C++ - это дрель с дилдо на конце.... теоретически применить можно, но место применения потом болеть будет.

Вот ты мне скажи, для чего C++ нужен?


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



****


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

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



NightmareZ, 
C++ для удобного высокопроизводительного системного программирования.
Для случаев когда нужны легковесные структуры данных, нужно прямое взаимодействие с готовыми системами, в том числе с ОС, 
для случаев когда часть кода должна напрямую работать с памятью, когда где-то нужны асм вставки.
PM MAIL ICQ   Вверх
Fatkh
Дата 19.9.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(GoldFinch @  19.9.2009,  17:29 Найти цитируемый пост)
NightmareZ, 
C++ для удобного высокопроизводительного системного программирования.
Для случаев когда нужны легковесные структуры данных, нужно прямое взаимодействие с готовыми системами, в том числе с ОС, 
для случаев когда часть кода должна напрямую работать с памятью, когда где-то нужны асм вставки.


А теперь желательно предоставить пример, когда для эти целей не подойдет C. 
PM MAIL Jabber   Вверх
Anikmar
Дата 19.9.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  19.9.2009,  20:03 Найти цитируемый пост)
А теперь желательно предоставить пример, когда для эти целей не подойдет C.

Ключевое слово "удобного"
Цитата(GoldFinch @  19.9.2009,  19:29 Найти цитируемый пост)
C++ для удобного


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


[хакер]
**


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

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



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


Для этих целей очень даже подходит C. А где нужен C++?

Добавлено через 2 минуты и 16 секунд
Цитата(Anikmar @  19.9.2009,  20:07 Найти цитируемый пост)
Ключевое слово "удобного"

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


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


Новичок



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

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



Цитата(Anikmar @  19.9.2009,  18:07 Найти цитируемый пост)
Ключевое слово "удобного"

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

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


Эксперт
****


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

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



Цитата(NightmareZ @  19.9.2009,  20:44 Найти цитируемый пост)
Ты скажи разработчикам всяких *nix'ов, что они неудобный язык используют. А то они ж не знают до сих пор.

Глупый спор. Тем более, что вы знаете о чем речь и заниматься демагогией - только время тратить.
Речь шла не о том, что С++ нужен, а о том, что нет вещей, которые можно написать на С и нельзя с тем же удобством написать на С++, а наоборот примеры привести можно.

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

Цитата(NightmareZ @  19.9.2009,  20:44 Найти цитируемый пост)
Ты скажи разработчикам всяких *nix'ов

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

Добавлено через 6 минут и 55 секунд
Цитата(Fatkh @  19.9.2009,  20:52 Найти цитируемый пост)
Для системного, как было сказано, программирования, никаких дополнительных удобств плюсы не приносят. Просто на С надо уметь писать.

А кто говорил, что для решения абсолютно всех задач С++ дает преимущества? Тем более под "системным" программированием многие понимают совершенно разный круг задач. Разговор шел о языке в целом. С++ это развитие Си и предмет спора выглядит глупо. Надо переместить данную тему к религиозным войнам.
PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Anikmar @  19.9.2009,  20:55 Найти цитируемый пост)
Глупый спор. Тем более, что вы знаете о чем речь и заниматься демагогией - только время тратить.Речь шла не о том, что С++ нужен, а о том, что нет вещей, которые можно написать на С и нельзя с тем же удобством написать на С++, а наоборот примеры привести можно.

Не-не-не, речь шла о том, что у C++ нет ниши. Низкоуровневое программирование покрывается чистым C; гуй - C#, Java, Delphi; веб - PHP, Java, C#, Perl, Python, Ruby и т.п.; Ещё не забываем про Lisp, Erlang, всякие Nemerle и новомодный F#, потомок OCamla........ А C++ какбэ пытается покрыть сразу несколько ниш и ничего у него не получается.

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

Вот именно. На C++ разработка дольше, поддержка дороже, баги трудноуловимее.

Цитата(Anikmar @  19.9.2009,  20:55 Найти цитируемый пост)
Разработчики прекрасно осведомлены, я так предполагаю. Не следует забывать о больших наработках, написаных на С. Переписывать их на С++ тем более бесплатно не особо думаю хочется.

Ничего не C++ переписывать не нужно. Ибо C++ не нужен.

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

Ну, например, на чём Emacs написан?  smile 


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


Новичок



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

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



Цитата(Anikmar @  19.9.2009,  18:55 Найти цитируемый пост)
Речь шла не о том, что С++ нужен, а о том, что нет вещей, которые можно написать на С и нельзя с тем же удобством написать на С++, а наоборот примеры привести можно.

Если смотреть на С99, то можно. Встроенные комплексные числа, к примеру - у плюсов такого нет. (Либы - это либы, и они не дают удобств встроенных типов)

Цитата(Anikmar @  19.9.2009,  18:55 Найти цитируемый пост)
Разработчики прекрасно осведомлены, я так предполагаю. Не следует забывать о больших наработках, написаных на С. Переписывать их на С++ тем более бесплатно не особо думаю хочется. Если воспользоваться вашей логикой - надо этим разработчикам рассказать о лиспе - наверное они о нем тоже ничего не слышали. 

Не так. Для конкретной цели конкретный инструмент. Говорилось о разработке системных приложений на С++, потому и приведен в пример С. Никто не предлагал это на Лиспе писать. Вопрос в области применения плюсов - никто так четко и не ответил.
PM MAIL Jabber   Вверх
Anikmar
Дата 19.9.2009, 21:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  19.9.2009,  21:04 Найти цитируемый пост)
Говорилось о разработке системных приложений на С++

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

Дело в том, что любой ответ на данный вопрос вызовет вялый и длинный спор, и особо спорить никому неохота.
PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 21:32 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Anikmar @  19.9.2009,  21:20 Найти цитируемый пост)
Говорилось о том, следует ли изучать Си перед С++.


Ну надо объяснить человеку, что изучать C++ вообще не нужно.

Цитата(Anikmar @  19.9.2009,  21:20 Найти цитируемый пост)
Дело в том, что любой ответ на данный вопрос вызовет вялый и длинный спор, и особо спорить никому неохота.


Но ведь для того форум и есть, чтобы истину найти.


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


Эксперт
****


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

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



Цитата(NightmareZ @  19.9.2009,  21:32 Найти цитируемый пост)
Ну надо объяснить человеку, что изучать C++ вообще не нужно.

У такого мнения не много сторонников, как выяснилось. Можно вообще ничего не изучать. А так - кому что нравится. Еще раз повторю данную тему: "Нужно ли изучать Си перед С++". Никто не спрашивал нужно ли изучать С++ вообще, как и лисп впрочем. Поэтому вам нужно завести отдельную тему в религиозных войнах типа "Долой С++, лисп  и С99 - рулят!
Цитата(NightmareZ @  19.9.2009,  21:32 Найти цитируемый пост)
Но ведь для того форум и есть, чтобы истину найти. 

Тут истиной не пахнет. Особенно если каждый будет считать истиной свое мнение. Так что будет очень долго и нудно. На вкус и цвет товарищей нет.
PM MAIL ICQ   Вверх
NightmareZ
Дата 19.9.2009, 21:47 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Anikmar @  19.9.2009,  21:38 Найти цитируемый пост)
У такого мнения не много сторонников, как выяснилось.

Серые мыши в мире программирования. Что с них взять?

Цитата(Anikmar @  19.9.2009,  21:38 Найти цитируемый пост)
Поэтому вам нужно завести отдельную тему в религиозных войнах типа "Долой С++, лисп  и С99 - рулят!

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

Цитата(Anikmar @  19.9.2009,  21:38 Найти цитируемый пост)
Тут истиной не пахнет. Особенно если каждый будет считать истиной свое мнение. Так что будет очень долго и нудно. На вкус и цвет товарищей нет.

Ну давайте её искать!


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



****


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

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



Fatkh, 
NightmareZ, 

C++ > C  (больше)

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

на С++ удобнее писать код, чем в С, в языке больше встроенных средств
на С++ безопаснее писать код, чем в С
в отдельных случаях код на С++ лаконичнее кода на С, но не наоборот.
в С++ есть многое из того, что есть в языках более высокого уровня, при этом С++ сохраняет свою низкоуровневость.
PM MAIL ICQ   Вверх
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   Вверх
Samotnik
Дата 19.9.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



Mastodont, если ты себе задаешь этот вопрос, значит ответ НЕТ ! 
По очень простой причине- ты в себе не уверен. А это очень плохо, т.к. скажется на достижении результатов. 
Уверенный в себе человек, может горы свернуть, а не уверенный, не сможет ровным счетом ничего   smile 
PM MAIL   Вверх
Леопольд
Дата 19.9.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почитал, появилась пара вопросов:

NightmareZ: 
1. Насколько сильно развита в Лиспе парадигма ООП? Можно ли в Лиспе работать на нулевом кольце?
2. Есть ли вероятность что весь мир вскоре перейдёт исключительно на продукция Микрософт? Это будет значить что можно преспокойно все гуёвые приложения писать на С#.
3. Что Вы знаете лучше, Лисп или С++?


Fatkh:
Хотелось бы пример ошибки в С++, которую было бы найти сложнее чем в С. Для примера, забыли мы где-то в тридевятом царстве сделать free, в С++ это решается умными указателями (по моему, наиболее наглядный вариант).


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

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:02


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
NightmareZ
Дата 20.9.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Насколько сильно развита с Лиспе парадигма ООП?

CLOS

Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Можно ли в Лиспе работать на нулевом кольце?

Поржал, спасибо. Ты сам поймёшь, что этот вопрос тупой или тебе разжевать?

Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Есть ли вероятность что весь мир вскоре перейдёт исключительно на продукция Микрософт?

Наверное, нет. А что?

Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Это будет значить что можно преспокойно все гуёвые приложения писать на С#.

На C# можно писать и под линух и под MacOS....

Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Что Вы знаете лучше, Лисп или С++?

C++

Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
А в защиту С++ могу добавить что это не один язык, а множество. Поэтому он и сложнее в изучении. Но при этом всё происходит единообразно, что по моему существенный плюс.

Лисп мощнее и гибче, чем С++. И, при этом, проще.


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



****


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

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



NightmareZ, я тоже сначала поржал над нулевым кольцом,
но на чем писать дрова, если не на С++ или не на D? на дельфи?

почему-то лисп и C# не позвляют писать дрова, а на С писать менее удобно, чем на С++
PM MAIL ICQ   Вверх
Леопольд
Дата 20.9.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
тебе разжевать?

Разжуй, будь любезен.


Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
Насколько сильно развита с Лиспе парадигма ООП?

CLOS

Это не ответ на вопрос, я вижу по ссылке что что-то связанное с ООП есть, а насколько сильно развито там сразу не видно. Времени изучать развитость ООП в Лиспе у меня нет, потому и спросил. Я же не говорю что язык дерьмо, я его не знаю, потому и спрашиваю у того кто что-то о нём знает.

Добавлено через 1 минуту и 34 секунды
Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
Лисп мощнее и гибче, чем С++.

Можно подробнее чем именно он гибче и мощнее? 


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
GoldFinch
Дата 20.9.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(NightmareZ @  20.9.2009,  01:02 Найти цитируемый пост)
Лисп мощнее и гибче, чем С++. И, при этом, проще. 

ни разу не мощнее и не гибче.
С++ гибкий - на нем можно писать что угодно, начиная дровами заканчивая (?) гуем.

проще == проще изучать? бейсик еще проще
PM MAIL ICQ   Вверх
Леопольд
Дата 20.9.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
Что Вы знаете лучше, Лисп или С++?

C++

Много коммерческого софта было написано на плюсах?

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:13


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Fatkh
Дата 20.9.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Леопольд @  19.9.2009,  21:51 Найти цитируемый пост)
Хотелось бы пример ошибки в С++, которую было бы найти сложнее чем в С. Для примера, забыли мы где-то в тридевятом царстве сделать free, в С++ это решается умными указателями (по моему, наиболее наглядный вариант).

Вы издеваетесь? Для поиска таких ошибок для С есть утилиты. Все. Проблема решена. А вот проблема утечки памяти в плюсах часто отлавливается с трудом - из-за конструктора по умолчанию. Есть практические примеры, и немало.


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

Ага. Эдакий урод с семю головами и пятью хвостами с мануалом больше "Войны и мира". Туда все и идет. Только что-то все больше программистов переходят с плюсов на шарп, питон, джаву. Просто платят за скорость разработки, и покупают то, что дешевле. Программа, написанная на ваше монстре, куда дороже аналога, написанного на трушном высокоуровневом языке (мб с прикрученным ускорением фрагментов асмом или С). 
Только скажите - зачем такой урод? Легче (проверено) выучить отдельно С и (Джаву?, Питон), чем С++ и еще научиться правильно на нем писать. Заметьте - в книгах по плюсам оочень много про то, как не нужно делать. Язык то нелогичный. И потому у него нет будущего.

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

Только почему то по большей части их на чистом С пишут. Оригиналы, однако. Наверное, пишут и не знают, что на плюсах лучше.
Так чем неудобно? Тем, что не умеете? Иного не сказано.
Хватит говорить о неудобстве С. На нем пишут ядра *nix, Apache, Gnome (последний писали, сейчас переносят... но отнюдь не на плюсы, а на C# (Mono)).
PM MAIL Jabber   Вверх
Леопольд
Дата 20.9.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
Только что-то все больше программистов переходят с плюсов на шарп, питон, джаву.

Пруфлинк можно? Я лично пока на просторах мировой сети, первый раз вижу подобное утверждение.
Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
Ага. Эдакий урод с семю головами и пятью хвостами с мануалом больше "Войны и мира"

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


Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
Вы издеваетесь? Для поиска таких ошибок для С есть утилиты. Все. Проблема решена. А вот проблема утечки памяти в плюсах часто отлавливается с трудом - из-за конструктора по умолчанию. Есть практические примеры, и немало.

На плюсах и утилиты не нужны, достаточно умных указателей, о чём я уже упоминал. Можно поподробнее про утечку из-за конструктора по умолчанию, я не сталкивался, а вообразить сходу не получается.

Добавлено @ 00:27
Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
а на C# (Mono)

К сожалению проект сырой и неизвестно сколько будет пребывать в таком состоянии. И будет ли жив через 5 лет тоже неизвестно. А неизвестность пугает...

Добавлено @ 00:28
Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
Только почему то по большей части их на чистом С пишут

Сила привычки? Других причин не вижу, хотя тут вероятно играют свою роль библиотеки. Скорость выполнения (с учётом современных оптимизаторов) одинаковая.
Но говоря о нулевом кольце я имел ввиду что С++ может то чего не могу С# и Lisp. Это значит что С++ в низкоуровневом программировании превосходит их.

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 00:38


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
GoldFinch
Дата 20.9.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Fatkh, неужели так сложно изучить С++, что приходится писать на С ?
PM MAIL ICQ   Вверх
Fatkh
Дата 20.9.2009, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Леопольд @  19.9.2009,  22:24 Найти цитируемый пост)
К сожалению проект сырой и неизвестно сколько будет пребывать в таком состоянии. И будет ли жив через 5 лет тоже неизвестно. А неизвестность пугает... 

Он выгоден мелкомягким. Будет жить. Но как вариант - Python. Либы, фрэймворки.
Цитата(Леопольд @  19.9.2009,  22:24 Найти цитируемый пост)
Почему же сразу урод? На мой взгля всё вполне логично и связанно. Подводных камней хватает, не спорю, как и в С.

Потому что куда проще вылизать что-то специализированное, чем что-то, умеющее все. За универсальность всегда приходится чем-то отвечать. Какие же в С подводные камни?
Цитата(Леопольд @  19.9.2009,  22:24 Найти цитируемый пост)
На плюсах и утилиты не нужны, достаточно умных указателей, о чём я уже упоминал. Можно поподробнее про утечку из-за конструктора по умолчанию, я не сталкивался, а вообразить сходу не получается.

Конструктора копирования. По умолчанию - не всегда работает так, как нужно. То есть тупо копирует.

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

Я начинал с плюсов. Потом понял, что язык чрезмерно перегружен и нелогичен. Перешел на С и Python. Эта связка ничем не уступает С++. А изучать - мне несложно, хотя куда сложнее других языков.
PM MAIL Jabber   Вверх
Леопольд
Дата 20.9.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Какие же в С подводные камни?

Как по поводу эпсилона?


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Anikmar
Дата 20.9.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Конструктора копирования. По умолчанию - не всегда работает так, как нужно. То есть тупо копирует. 

 smile 
Как такой конструктор может привести к AV легко представляю. А к утечке - если только самому так написать класс. Или я не могу такое вообразить. Приведите пример, когда неправильно работающий конструктор копирования приведет к утечке?
PM MAIL ICQ   Вверх
Леопольд
Дата 20.9.2009, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Конструктора копирования. По умолчанию - не всегда работает так, как нужно. То есть тупо копирует.

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

Добавлено @ 00:49
Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Я начинал с плюсов. Потом понял, что язык чрезмерно перегружен и нелогичен. 

Мне тоже так показалось поначалу. Но только поначалу. Всё логично и хорошо заверчено. Языком можно вполне успешно пользоваться зная только некоторую, логически завершённую, часть.

Добавлено @ 00:52
Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Он выгоден мелкомягким. Будет жить. Но как вариант - Python. Либы, фрэймворки.

Не могу понять чем же не устраивают либы и фрэймворки С++, boost, wxWidgets, Qt и т.д. и т.п.

Цитата(Fatkh)
Я начинал с плюсов. Потом понял, что язык чрезмерно перегружен и нелогичен. Перешел на С и Python. Эта связка ничем не уступает С++.

Я бы не стал утверждать подобного зная только С и Питон, но не доучив толком С++. smile Хотя я и не утверждаю обратного, потому что не знаю Питон. Могу только лишь предположить, что писать одно и тоже на одном языке легче чем на двух. Я видел парочку кусков кода Питона, и мне показалось что его синтаксис чем-то напоминает С++ smile

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 01:27


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Леопольд
Дата 20.9.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fatkh @  20.9.2009,  00:17 Найти цитируемый пост)
Язык то нелогичный. И потому у него нет будущего.
А по моему у языка очень большое и светлое будущее. smile На самом деле оно зависит даже не от языка, сколько от сообщества которое им пользуется и соответственно будет его продвигать.

Добавлено @ 01:05
Цитата(Леопольд @  20.9.2009,  00:07 Найти цитируемый пост)
Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
Насколько сильно развита с Лиспе парадигма ООП?

CLOS

Это не ответ на вопрос, я вижу по ссылке что что-то связанное с ООП есть, а насколько сильно развито там сразу не видно. Времени изучать развитость ООП в Лиспе у меня нет, потому и спросил. Я же не говорю что язык дерьмо, я его не знаю, потому и спрашиваю у того кто что-то о нём знает.
(с) Wikipedia
Цитата
CLOS does not enforce encapsulation
Это уже говорит о многом.

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

Статический и динамический полиморфизм есть? Может есть ещё какие-то другие "плюшки", которые компенсируют отсутствие инкапсуляции?

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 01:32


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Леопольд
Дата 20.9.2009, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(NightmareZ @  20.9.2009,  00:02 Найти цитируемый пост)
Цитата(Леопольд @  19.9.2009,  23:51 Найти цитируемый пост)
Что Вы знаете лучше, Лисп или С++?

C++

Цитата(Леопольд @  20.9.2009,  00:58 Найти цитируемый пост)
Что-то мне подсказывает что ты недостаточно хорошо знаешь С++.

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


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
NightmareZ
Дата 20.9.2009, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Леопольд @  20.9.2009,  00:07 Найти цитируемый пост)
Разжуй, будь любезен.

Нет абсолютно никакого значения, на чём написан код. Что угодно можно запихнуть в нулевое кольцо.

Цитата(GoldFinch @  20.9.2009,  00:06 Найти цитируемый пост)
но на чем писать дрова, если не на С++ или не на D? на дельфи?

C, ассемблер.

Цитата(Леопольд @  20.9.2009,  00:07 Найти цитируемый пост)
Можно подробнее чем именно он гибче и мощнее? 

Например, возможностями метапрограммирования.

Цитата(GoldFinch @  20.9.2009,  00:09 Найти цитируемый пост)
С++ гибкий - на нем можно писать что угодно, начиная дровами заканчивая (?) гуем.

Это нецелесообразно. Зачем писать гуй на C++, когда на C#/Delphi/Java/VisualBasic это можно сделать быстрее?

Цитата(GoldFinch @  20.9.2009,  00:09 Найти цитируемый пост)
проще == проще изучать? бейсик еще проще

Да, язык неплох в своей нише.

Цитата(Леопольд @  20.9.2009,  00:10 Найти цитируемый пост)
Много коммерческого софта было написано на плюсах?

Какашки вкусные. Миллионы мух не могут ошибаться.

Цитата(Леопольд @  20.9.2009,  00:58 Найти цитируемый пост)
Благодаря правильной инкапсуляции, в С++ можно спроектировать сущность так, что-бы её можно было использовать только лишь определённым образом или очень сложно было бы использовать неправильно, иначе - ошибка компиляции. Если Lisp этого не умеет, то это серьёзный недостаток и большой плюс для С++ по сравнению с ним.


Цитата(Леопольд @  20.9.2009,  00:58 Найти цитируемый пост)
Что-то мне подсказывает что ты недостаточно хорошо знаешь С++.

Выкинь свою подсказывалку.

Цитата(Леопольд @  20.9.2009,  00:58 Найти цитируемый пост)
Статический и динамический полиморфизм есть?

Код

(defclass parent () ())
(defclass child1 (parent) ())
(defclass child2 (parent) ())

(defgeneric write-message (parent))
(defmethod write-message ((parent child1)) (print "Child 1"))
(defmethod write-message ((parent child2)) (print "Child 2"))

(defparameter *test* 
    (list 
        (make-instance 'child1)
        (make-instance 'child2)))

(map nil #'write-message *test*)




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


Опытный
**


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

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



Цитата(NightmareZ @  20.9.2009,  03:17 Найти цитируемый пост)
Цитата(Леопольд @  20.9.2009,  00:10 Найти цитируемый пост)
Много коммерческого софта было написано на плюсах?

Какашки вкусные. Миллионы мух не могут ошибаться.

Я спрашиваю с целью выяснить насколько хорошо ты знаешь С++.


Цитата(NightmareZ @  20.9.2009,  03:17 Найти цитируемый пост)
Что-то мне подсказывает что ты недостаточно хорошо знаешь С++.

Выкинь свою подсказывалку.

Тогда расскажи, пожалуйста, чем ООП в Лиспе лучше или хуже ООП в С++. Хотелось бы увидеть от тебя хотя бы немного конкретики а не юморески про какашки. smile

Добавлено @ 09:03
Цитата(NightmareZ @  20.9.2009,  03:17 Найти цитируемый пост)
Нет абсолютно никакого значения, на чём написан код. Что угодно можно запихнуть в нулевое кольцо.

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

Добавлено @ 09:10
Цитата(NightmareZ @  20.9.2009,  03:17 Найти цитируемый пост)
Это нецелесообразно. Зачем писать гуй на C++, когда на C#/Delphi/Java/VisualBasic это можно сделать быстрее?
Qt4 хуже по сравнению с тем же Делфи?

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 09:18


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
zim22
Дата 20.9.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Я спрашиваю с целью выяснить насколько хорошо ты знаешь С++.

так не спрашивают. нужно попросить решить какую-нибудь простенькую задачку на С++ и уже по уровню кода можно будет сказать насколько человек хорошо/плохо знает С++.
это как игра в шахматы: более опытный игрок может определить уровень своего оппонента по том, как он ходит(фигурами) smile


--------------------
PM MAIL   Вверх
W4FhLF
Дата 20.9.2009, 09:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Fatkh @  19.9.2009,  20:03 Найти цитируемый пост)
А теперь желательно предоставить пример, когда для эти целей не подойдет C. 


Я сейчас занимаюсь разработкой софта для статистического анализа. В общем там очень много расчётов и везде работа в матрицами.

На С++ у меня реализован класс Matrix<T>, где оптимизировано хранение больших матриц в памяти, операции над ними. 

Могу писать:

Код

Matrix C = A * B / tr(D) + v; // tr() - транспонирование матрицы, v -- вектор


Что ты мне предложишь на С? Как бы оно выглядело? А если захочу поменять тип данных в матрице? Или добавить ещё 3-4 операции в формулу с разными типами?

Если же говорить про C#/Java/Lisp, то я уверен, что реализация такого класса и интерфейса с классической нотацией проиграет в скорости моей на порядок на больших матрицах (от 512х512). 
Можем протестить, если у кого-то есть желание. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Леопольд
Дата 20.9.2009, 09:33 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zim22 @  20.9.2009,  09:16 Найти цитируемый пост)
так не спрашивают. нужно попросить решить какую-нибудь простенькую задачку на С++ 

Больше чем уверен, что он откажется.


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Fatkh
Дата 20.9.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(W4FhLF @  20.9.2009,  07:20 Найти цитируемый пост)
Могу писать:

код C++
1:
Matrix C = A * B / tr(D) + v; // tr() - транспонирование матрицы, v -- вектор


Что ты мне предложишь на С? Как бы оно выглядело? А если захочу поменять тип данных в матрице? Или добавить ещё 3-4 операции в формулу с разными типами?

1. Да, букв было бы больше. Не спорю. 
2. Поменять тип данных? Зачем? Если дело обходится базовыми типами, то double - на все случаи жизни (или long double (C99)). Иначе - void * и переданный указатель на функцию сравнения (или еще чего-то).


Цитата(W4FhLF @  20.9.2009,  07:20 Найти цитируемый пост)
Если же говорить про C#/Java/Lisp, то я уверен, что реализация такого класса и интерфейса с классической нотацией проиграет в скорости моей на порядок на больших матрицах (от 512х512). 

http://numpy.scipy.org/
http://www.scipy.org/
Классический пример, но Питон для сложных математических вычислений использует NASA (или Pyrex, или С, или асм, если очен уж нужно оптимизировать). Им не важна скорость? (Да, большая часть кода написана в виде либ на С, но не на плюсах)

PM MAIL Jabber   Вверх
Fatkh
Дата 20.9.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Anikmar @  19.9.2009,  22:40 Найти цитируемый пост)
Как такой конструктор может привести к AV легко представляю. А к утечке - если только самому так написать класс. Или я не могу такое вообразить. Приведите пример, когда неправильно работающий конструктор копирования приведет к утечке?

Представьте, что приложение работает 24/7. Скоро с памятью начнутся проблемы.


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

Во-первых - нет в плюсах инкапсуляции. Там есть data hiding. Поищите в инете - поймете разницу. А эта ваша data hiding нужна, только если априори считать программистов придурками. Если он полез туда, куда не надо - это его проблемы. К тому же даже data hiding плохой. Простым memset я могу сделать то, что захочу. 
Цитата(Леопольд @  19.9.2009,  22:42 Найти цитируемый пост)
Не могу понять чем же не устраивают либы и фрэймворки С++, boost, wxWidgets, Qt и т.д. и т.п.

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

Цитата(Леопольд @  20.9.2009,  07:02 Найти цитируемый пост)
Qt4 хуже по сравнению с тем же Делфи?

Qt4 хорош... для того, чтобы сделать его порты на другие языки.
PM MAIL Jabber   Вверх
zim22
Дата 20.9.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Fatkh @  20.9.2009,  11:41 Найти цитируемый пост)
К тому же даже data hiding плохой. Простым memset я могу сделать то, что захочу. 

C++ защищает от случайного изменения приватных данных, но не от намеренных изменений.
Цитата(Fatkh @  20.9.2009,  11:41 Найти цитируемый пост)
Во-первых - нет в плюсах инкапсуляции. 

c помощью идиомы pimpl можно скрыть детали реализации.

Это сообщение отредактировал(а) zim22 - 20.9.2009, 12:32


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



****


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

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



Цитата(Fatkh @  20.9.2009,  12:41 Найти цитируемый пост)
Во-первых - нет в плюсах инкапсуляции. Там есть data hiding. Поищите в инете - поймете разницу. А эта ваша data hiding нужна, только если априори считать программистов придурками. Если он полез туда, куда не надо - это его проблемы. К тому же даже data hiding плохой. Простым memset я могу сделать то, что захочу. 

создается впечатление что ты не знаешь о чем говоришь
инкапсуляция - не свойство языка, это паттерн который может применен в конкретном коде.
сокрытие реализации - не от того что пользователь считается идиотом, оно нужно чтобы нельзя было как-то изменить реализуемую абстракцию. это гарантирует надежность кода.
простым memset, в общем случае ты ничего не сделаешь, т.к. в общем случае тебе вообще неизвестна и недоступна реализация.
PM MAIL ICQ   Вверх
W4FhLF
Дата 20.9.2009, 12:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Fatkh @  20.9.2009,  11:25 Найти цитируемый пост)
1. Да, букв было бы больше. Не спорю. 


Намного больше. Плюс есть разница между A * B / В и кучей вызовов функций в строчку. Писать на С++ на порядок проще и удобнее, чем на С, а соответственно дешевле и быстрее. При равной эффективности.

Цитата(Fatkh @  20.9.2009,  11:25 Найти цитируемый пост)
2. Поменять тип данных? Зачем? Если дело обходится базовыми типами, то double - на все случаи жизни (или long double (C99)). Иначе - void * и переданный указатель на функцию сравнения (или еще чего-то).


А зачем вообще нужно обобщённое программирование? Ну если хочешь пример, то я в матрице могу хранить комплексные числа. Представляю в какую лапшу превратится код на С. А на С++ ничего менять не надо.

Цитата(Fatkh @  20.9.2009,  11:25 Найти цитируемый пост)
Классический пример, но Питон для сложных математических вычислений использует NASA (или Pyrex, или С, или асм, если очен уж нужно оптимизировать). Им не важна скорость? (Да, большая часть кода написана в виде либ на С, но не на плюсах)


Я работал с этой библиотекой на питоне. Там для работы с матрицами используется NumPy. Если честно, очень неудобная библиотека. Качественная, хороший функционал, но лично мне она показалась даже менее удобной, чем мои средства на С++. 

Но я не понял, что ты хотел этим сказать? То, что писать такие либы на С более удобно и эффективно, чем на С++? Очевидно, что это не так. 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Anikmar
Дата 20.9.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  20.9.2009,  11:41 Найти цитируемый пост)
Представьте, что приложение работает 24/7. Скоро с памятью начнутся проблемы.

Написать приложение, у которго в режиме 24/7 можно на любом языке. Причем здесь плюсы? Я говорил про конкретно конструктор копирования: Вы сказали, что из-за плохой реализации языка конструктор копирования часто приводит к утечке памяти. Я попросил привести пример такого кода. И получил такой ответ.

Проблеме распределения памсяти для приложений 24/7 посвящено очень много статей и книг. И при чем здесь конкретный язык? Для этого и существуют собственноручно написанные менеджеры памяти. И на плюсах использовать свой менеджер памяти можно запросто. При этом удобство очевидно. В си реализовать это намного муторнее.

Цитата(Fatkh @  20.9.2009,  11:25 Найти цитируемый пост)
Поменять тип данных? Зачем? Если дело обходится базовыми типами, то double - на все случаи жизни

Этой фразой вы наверное сильно подняли свой авторитет  smile . Тогда как раз - вам дорога в С. Программируем так: плюс минус пару сотен функций не проблема, double - на все случаи жизни, а если нужен GUI то можно и С# подтянуть. +FrameWork + еще что-нибудь. Это очень "увеличит" скорость и код будет 3 строчки. (при объеме инсталяции пару гигов).
PM MAIL ICQ   Вверх
Fatkh
Дата 20.9.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

В плюсах это не паттерн, а декларируемое свойство языка. И паттерн этот можно реализовать и средствами С. (Можно, только не нужно это там)

Цитата(W4FhLF @  20.9.2009,  10:03 Найти цитируемый пост)
Я работал с этой библиотекой на питоне. Там для работы с матрицами используется NumPy. Если честно, очень неудобная библиотека. Качественная, хороший функционал, но лично мне она показалась даже менее удобной, чем мои средства на С++. 

Но я не понял, что ты хотел этим сказать? То, что писать такие либы на С более удобно и эффективно, чем на С++? Очевидно, что это не так. 

Перечитай предыдущие посты. Началось с определения ниши для плюсов. И этим я хотел сказать, что в таких случаях лучше применить что-то более высокоуровневое, (Питон?).
А для системного программирования - С. И не надо смешивать. Никто не предлагал такие задачи решать на С. Для них есть другие средства. 
Просто С покрывает низкоуровненвое программирование (+асм), а высокоуровневое покрывается языками более высокого уровня(уже перечислял). И где ниша С++?
С++ пытается занять все ниши. Только для каждой ниши есть более подходящие, так как узкоспециализированные, инструменты.
PM MAIL Jabber   Вверх
Anikmar
Дата 20.9.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  20.9.2009,  12:38 Найти цитируемый пост)
С++ пытается занять все ниши. Только для каждой ниши есть более подходящие, так как узкоспециализированные, инструменты. 

С++ ничего не пытается. Он не умеет думать и он не живой. Пытаются те, которые на нем работают. За последние 5 лет для С++ вышло столько великолепных библиотек, что только доказывает, что армия приверенженцев С++ только увеличивается. Язык без поддерджки - пустое место. Если язык превращается в очень высокий уровень - он резко теряет производительность. Если брать Си - на нем ничего кроме низа делать не хочется.

С++ имея столько наработок и бибилиотек превращается в инструмент на все случаи жизни не набирая "веса" и не теряя уровня.

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


Новичок



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

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



Цитата(Anikmar @  20.9.2009,  10:35 Найти цитируемый пост)
Этой фразой вы наверное сильно подняли свой авторитет   . Тогда как раз - вам дорога в С. Программируем так: плюс минус пару сотен функций не проблема, double - на все случаи жизни, а если нужен GUI то можно и С# подтянуть. +FrameWork + еще что-нибудь. Это очень "увеличит" скорость и код будет 3 строчки. (при объеме инсталяции пару гигов). 

Это умный пост? По частям:
1. Я нигде не говорил про плюс-минус пару сотен функций. Если у вас так - вы не умеете проектировать.
2. Чем не нравится double? (для бызовых типов, как я и писал) 
3. Где??? Где пару гигов? Где вы такое видели? За всю жизнь видел только одного такого монстра, и написанного как раз на плюсах.

К слову. По поводу будущего С++. Не забывайте про Games development. Это самая жирная часть рынка. Не надо объяснять, почему там С# рулит? (Для непонимающих объясню: Microsoft + development time + портируемость на консоли = С#)

Это сообщение отредактировал(а) Fatkh - 20.9.2009, 12:45
PM MAIL Jabber   Вверх
Фантом
Дата 20.9.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  20.9.2009,  09:20 Найти цитируемый пост)

На С++ у меня реализован класс Matrix<T>, где оптимизировано хранение больших матриц в памяти, операции над ними. 

Что ты мне предложишь на С? Как бы оно выглядело? А если захочу поменять тип данных в матрице? Или добавить ещё 3-4 операции в формулу с разными типами?

Если же говорить про C#/Java/Lisp, то я уверен, что реализация такого класса и интерфейса с классической нотацией проиграет в скорости моей на порядок на больших матрицах (от 512х512). 


Выскажусь не совсем по теме, но пример очень неудачен. 

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

Во-вторых, это как раз тот случай, когда с помощью предлагаемого инструмента можно успешно решать проблемы, которые при использовании других инструментов просто не возникают.  smile В нормальных условиях такие вещи пишутся на Фортране - он для них специально предназначен, поэтому все необходимое уже встроено в язык, а конечный результат будет работать заметно быстрее, чем код на C (о C++, C#, Java и т.д. можно и не вспоминать).
PM   Вверх
W4FhLF
Дата 20.9.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Fatkh @  20.9.2009,  12:38 Найти цитируемый пост)
Перечитай предыдущие посты. Началось с определения ниши для плюсов. И этим я хотел сказать, что в таких случаях лучше применить что-то более высокоуровневое, (Питон?).


Для кого лучше? Давай больше конкретики. Для приведённого случая я не понимаю чем "лучше".

Цитата(Фантом @  20.9.2009,  12:47 Найти цитируемый пост)
А вот производительность полученного кода (которая в задачах такого рода обычно является наиболее критичной) будет, мягко говоря, невысокой. 


Производительность будет не НИЖЕ, чем при реализации на С. С чего ей быть невысокой? 

Цитата(Фантом @  20.9.2009,  12:47 Найти цитируемый пост)
Во-вторых, это как раз тот случай, когда с помощью предлагаемого инструмента можно успешно решать проблемы, которые при использовании других инструментов просто не возникают.   В нормальных условиях такие вещи пишутся на Фортране - он для них специально предназначен, поэтому все необходимое уже встроено в язык, а конечный результат будет работать заметно быстрее, чем код на C (о C++, C#, Java и т.д. можно и не вспоминать).


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



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Фантом
Дата 20.9.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  20.9.2009,  13:01 Найти цитируемый пост)

Производительность будет не НИЖЕ, чем при реализации на С. С чего ей быть невысокой? 


Пробовал?  smile 

Проблема в "накладных расходах" на создание и уничтожение промежуточных экземпляторов матриц. Вот в этой твоей строчке:
Код

Matrix C = A * B / tr(D) + v; // tr() - транспонирование матрицы, v -- вектор

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

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

Цитата(W4FhLF @  20.9.2009,  13:01 Найти цитируемый пост)
Не попал. На фортране это будет выглядеть также громоздко как и на С. И насчёт производительности опять мимо. Давай код на фортране, сравним. 


Опять тот же вопрос - пробовал?  smile 

Код на Фортране дать не проблема, но мне нужно иметь образец, который требуется переписать. А в наличии только одна строка, причем с не вполне понятным смыслом. Выдай кусок побольше - напишу аналог.

PM   Вверх
Anikmar
Дата 20.9.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Fatkh @  20.9.2009,  12:44 Найти цитируемый пост)
1. Я нигде не говорил про плюс-минус пару сотен функций. Если у вас так - вы не умеете проектировать.

Вы говорили про пару (на конкретный класс). Если брать крупный проект, в нем пара сотен классов будет. По паре на класс - и вперед.

Цитата(Fatkh @  20.9.2009,  12:44 Найти цитируемый пост)
2. Чем не нравится double? (для бызовых типов, как я и писал) 

Вы прекрасно знаете о чем речь. Применяя возможности языка можно не заботится и перемене типов. Написание собственных типов - это основное преимущество С++ перд Си. Если понадобится матрица объектов, то на Си (как вы суже сказали) это делается при помощи указателя на void. Естественно это самый надежный и защищенный механизм  smile  Речь шла не о конкретной матрице, а о возможности языка.
Цитата(Fatkh @  20.9.2009,  12:44 Найти цитируемый пост)
3. Где??? Где пару гигов? Где вы такое видели? За всю жизнь видел только одного такого монстра, и написанного как раз на плюсах.

Я говорил про работспособность "супер языков высокого уровня". Для того, чтобы заработал шарп сколько дополнительного надо поставить? Сколько это весит?

Добавлено через 5 минут и 54 секунды
Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
каждый перегруженный оператор и функция tr() (кстати, что понимается под "делением"?) создают экземляр результата, который после использования, кстати, еще и уничтожить нужно. В одной этой строке это произойдет как минимум три раза, и при больших размерах матриц это весьма накладно.

Почему вы уверены, что там не ссылки?
Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
Опять тот же вопрос - пробовал?

Я пробовал. Но не спора ради, а помогал человеку - заядлому фортранисту. Он академик по статистике, у него там матрицы были порядка 5000х5000. Мне было лень разбираться с фортраном и я помог ему на С++.
В общем может быть он слабый программист, может фортран у него был какой-то медленный не знаю. В общем на С++ пошустрее получилось.

PM MAIL ICQ   Вверх
W4FhLF
Дата 20.9.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
Проблема в "накладных расходах" на создание и уничтожение промежуточных экземпляторов матриц.


Нет тут никаких накладных расходов.

Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
каждый перегруженный оператор и функция tr() (кстати, что понимается под "делением"?) создают экземляр результата, который после использования, кстати, еще и уничтожить нужно. В одной этой строке это произойдет как минимум три раза, и при больших размерах матриц это весьма накладно.


Ты знаешь, что такое передача по ссылке, inline и NRVO? В этой строчке не произойдёт ниодного копирования.

Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
Опять тот же вопрос - пробовал?


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

Цитата(Фантом @  20.9.2009,  13:41 Найти цитируемый пост)
Код на Фортране дать не проблема, но мне нужно иметь образец, который требуется переписать.


Т.е. ты даже никогда не писал подобного кода на фортране? smile Я думал твои заявления подкреплены хоть каким-то опытом (пускай односторонним и ошибочным).





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Фантом
Дата 20.9.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(Anikmar @  20.9.2009,  13:51 Найти цитируемый пост)

Почему вы уверены, что там не ссылки?


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

Вот совсем простой пример. Пусть у нас есть такая строка:
Код

D= A+B+C;

где A,B,C,D - матрицы, оператор "+" соответствующим образом перегружен. Что произойдет? Будет вызван первый "+", соответствующий метод сложит A и B, и ему надо куда-то деть результат. Соответственно, будет вызван конструктор Matrix и в итоге появится еще один экземпляр, в который будет записан результат. Потом будет вызван второй "+", которому будет скормлен этот новый экземпляр и C, результат попадет в D. Итого по дороге был создан (и спасибо, если не забыт в памяти) лишний экземпляр.

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

Цитата(Anikmar @  20.9.2009,  13:51 Найти цитируемый пост)
Я пробовал. Но не спора ради, а помогал человеку - заядлому фортранисту. Он академик по статистике, у него там матрицы были порядка 5000х5000. Мне было лень разбираться с фортраном и я помог ему на С++.
В общем может быть он слабый программист, может фортран у него был какой-то медленный не знаю. В общем на С++ пошустрее получилось.


Скорее всего, и то, и другое. Фортран достаточно сильно эволюционировал за время своего существования, и, к сожалению, добрых 90% людей, "знающих Фортран", пишет не на современном языке, а на том, который был современным в пору их молодости. Ну и естественно, что результаты получаются так себе - во-первых, подавляющее большинство преимуществ появляется при использовании двух-трех последних по времени вариантов, во-вторых, на оптимизациею конструкций, актуальных, например, для Fortran 77, разработчики современных компиляторовЮ по понятным причинам, тратят весьма немного времени и сил.
PM   Вверх
GoldFinch
Дата 20.9.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Фантом, ты про шаблоны чтонить слышал? 
PM MAIL ICQ   Вверх
zim22
Дата 20.9.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Фантом @  20.9.2009,  14:22 Найти цитируемый пост)
Ссылки на что? Если обсуждаемый класс хоть сколько-нибудь функционален, то при каждой бинарной операции результат должен куда-то записываться, причем это "куда-то" не может совпадать ни с одним из операндов. 

на лицо плохое знание С++ smile
***
из книги "Язык программирования С++. Специальное издание" Страуструп. 11.6. Большие объекты. стр. 331.
Цитата

Существуют методы, позволяющие избежать копирования результата. Простейшим из них является использование буфера статических объектов. Например:

Код

class Matrix {
  double m[4][4];
};

const int max_matrix_temp = 7;
Matrix &get_matrix_temp() {
  static int nbuf = 0;
  static Matrix buf[max_matrix_temp];
  
  if (nbuf == max_matrix_temp) nbuf = 0;
  return buf[nbuf++];
}
Matrix &operator+(const Matrix &lhs, const Matrix &rhs) {
  Matrix &res = get_matrix_temp();
  // ... bla-bla-bla
  return res;
}

Цитата

Теперь Matrix копируется только при присванивании результата выражения. Да помогут вам небеса, если вы напишете выражение, в котором потребуется более, чем max_matrix_temp временных переменных!

smile

Это сообщение отредактировал(а) zim22 - 20.9.2009, 14:35


--------------------
PM MAIL   Вверх
Фантом
Дата 20.9.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  20.9.2009,  14:01 Найти цитируемый пост)

Нет тут никаких накладных расходов.


См. чуть выше.

Цитата(W4FhLF @  20.9.2009,  14:01 Найти цитируемый пост)
Ты знаешь, что такое передача по ссылке, inline и NRVO? В этой строчке не произойдёт ниодного копирования.


Знаю. Только ты объясни внятно, куда денется, например, результат умножения матриц A и B при прогонке твоего кода, и как этому помогут передача по ссылке, inline и NRVO? Или у тебя все расчеты делаются не программой, а сразу компилятором?  smile 

Цитата(W4FhLF @  20.9.2009,  14:01 Найти цитируемый пост)
Ты ведь изначально утверждаешь, что код на фортране будет работать намного быстрее, чем код на С++. Вот и докажи. Я не вижу никаких предпосылок в пользу этого утверждения. 

Т.е. ты даже никогда не писал подобного кода на фортране? smile Я думал твои заявления подкреплены хоть каким-то опытом (пускай односторонним и ошибочным).


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

Что тебе сейчас можно написать? Ты даже не сподобился объяснить, во что перегрузил деление. Если его убрать, то близкий аналог твоего 
Код

Matrix C = A * tr(D) + v;

 на Фортране перепишется так:
Код

С=matmul(A,transpose(D))+v


Очень громоздко, правда?  smile 

PM   Вверх
GoldFinch
Дата 20.9.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM MAIL ICQ   Вверх
Фантом
Дата 20.9.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  14:32 Найти цитируемый пост)
Фантом, ты про шаблоны чтонить слышал?  


Юноша, давай для определенности сразу договоримся о том, что я "чтонить" о "чемнить" слышал еще тогда, когда тебя еще в проекте не было. 

PM   Вверх
zim22
Дата 20.9.2009, 14:48 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Фантом @  20.9.2009,  14:37 Найти цитируемый пост)
Или у тебя все расчеты делаются не программой, а сразу компилятором?

кстати вариант. метапрограммирование называется smile
Цитата(Фантом @  20.9.2009,  14:42 Найти цитируемый пост)
Юноша, давай для определенности сразу договоримся о том, что я "чтонить" о "чемнить" слышал еще тогда, когда тебя еще в проекте не было. 

вспомнилась подпись Qraizer: одни с годами умнеют, другие просто становятся старше.

Это сообщение отредактировал(а) zim22 - 20.9.2009, 14:50


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


[хакер]
**


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

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



Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Я спрашиваю с целью выяснить насколько хорошо ты знаешь С++.

На C++ участвовал только в одном коммерческом проекте. Как только предоставилась возможность, перешёл в другой - на C# и чувствую себя в нём гораздо удобнее.

Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Тогда расскажи, пожалуйста, чем ООП в Лиспе лучше или хуже ООП в С++. Хотелось бы увидеть от тебя хотя бы немного конкретики а не юморески про какашки.

ООП - оно и в африке ООП.
Лисп действительно мультипарадигменный язык, в отличие, от C++. Это раз.
Лисп проще, чем C++, но при этом гибче. Это два.
Пока достаточно.

Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Для того что-бы писать те же дрова, программисту С++ не надо будет изучать новый язык. В чём его преимущество, он придерживается тех же принципов что и С - делай что хочешь, если знаешь что делаешь.

Человек, способный писать на одном ЯП - быдлокодер.

Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Я конечно не могу знать, не интересовался, но почему-то почти уверен что С++ на этом уровне на голову выше Лиспа.

Слышал про лисп-машины? Как думаешь, системный язык там какой?

Цитата(Леопольд @  20.9.2009,  09:02 Найти цитируемый пост)
Qt4 хуже по сравнению с тем же Делфи?

Зелёное хуже, чем мокрое?

Цитата(zim22 @  20.9.2009,  09:16 Найти цитируемый пост)
так не спрашивают. нужно попросить решить какую-нибудь простенькую задачку на С++ и уже по уровню кода можно будет сказать насколько человек хорошо/плохо знает С++.это как игра в шахматы: более опытный игрок может определить уровень своего оппонента по том, как он ходит(фигурами)

Хорошо, давай я пишу твою задачу на C++, а ты мою на лиспе. Ок?

Добавлено через 53 секунды
Цитата(zim22 @  20.9.2009,  14:48 Найти цитируемый пост)
кстати вариант. метапрограммирование называется

Метапрограммирование в C++ убогое по сравнению с тем же Nemerle.


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


Вы это прекратите!
***


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

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



Цитата(zim22 @  20.9.2009,  14:33 Найти цитируемый пост)

на лицо плохое знание С++


Нет, скорее невнимательное чтение кое-кем предшествующей переписки.  smile 

Эта идея, конечно, частично спасает положение. Правда, ниоткуда не следует, что 
  •  W4FhLF ее реализовал,
  •  W4FhLF реализовал ее более эффективно, чем разработчики какого-нибудь IFC,
  •  получившееся в результате является "удобным и лаконичным".

Однако остаются и проблемы. 

Во-первых, матрицы, с которыми приходится иметь дело, велики (а помощь небес не безгранична). 

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

В-третьих, модификация того же примера для случая матриц произвольного размера (а в реальных задачах редко когда все матрицы сплошь одинаковые) приведет к необходимости написать нечто, весьма сильно напоминающее полноценный менеджер памяти. Человек, конечно, может все, но стоит ли изобретать велосипед самому и собирать его из подручных материалов?
PM   Вверх
zim22
Дата 20.9.2009, 14:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



 smile 
Цитата(NightmareZ @  20.9.2009,  14:52 Найти цитируемый пост)
Хорошо, давай я пишу твою задачу на C++, а ты мою на лиспе. Ок?

а смысл? ну докажу я, что я круче тебя в тысячу раз. тебе же от этого лучше не станет  smile 


--------------------
PM MAIL   Вверх
Фантом
Дата 20.9.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  14:42 Найти цитируемый пост)
если A, B, C, D -  матрицы,
то в С++ код
A = B + C + D;

преобразуется к виду

цикл( i,j )
  A[i,j] = B[i,j] + С[i,j] + D[i,j];


И как сие получится? Нет, я даже не буду просить написать мне такой код, который даст это при компиляции - достаточно будет лишь объяснить, откуда и как компилятор получит информацию для такой оптимизации.
PM   Вверх
NightmareZ
Дата 20.9.2009, 15:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(zim22 @  20.9.2009,  14:56 Найти цитируемый пост)
а смысл? ну докажу я, что я круче тебя в тысячу раз. тебе же от этого лучше не станет

Ну ты докажи сначала, а там посмотрим, что с этим делать.


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


Вы это прекратите!
***


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

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



Цитата(zim22 @  20.9.2009,  14:48 Найти цитируемый пост)
кстати вариант. метапрограммирование называется


Есть, но не в задачах такого рода. smile 

Цитата(zim22 @  20.9.2009,  14:48 Найти цитируемый пост)

вспомнилась подпись Qraizer: одни с годами умнеют, другие просто становятся старше.


Спасибо.  smile А если серьезно, то все-таки в подобных спорах полезно придерживаться следующего правила: по умолчанию считается, что собеседник знает все и обо всем, пока ты не доказал обратное.
PM   Вверх
GoldFinch
Дата 20.9.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(Фантом @  20.9.2009,  15:59 Найти цитируемый пост)
И как сие получится?

Цитата(zim22 @  20.9.2009,  15:48 Найти цитируемый пост)
метапрограммирование называется

Цитата(Фантом @  20.9.2009,  16:05 Найти цитируемый пост)
Есть, но не в задачах такого рода. 

именно в задачах такого рода

литература:
Чарнецки, Айзенекер "Порождающее программирвоание"
Вандервурд, Джосаттис "Шаблоны С++. Справочник разработчика"

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


Опытный
**


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

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



Без смыленный спор!  
Каждый пишет на том что нравится. Это как религия каждый верит в то что ему ближе. Если конечно для себя . А ваше программисты подневольные люди обычно же как ставиться задача и на чем она должна быть реализована !Конечно если вы не начальник и сами не решаете на чём она должна быть решена.
С# конечно круто только одно меня смушает то что это от создателей виндовса ! А за то время что у меня есть ПК главное что я выучил то что Маёкрософт творит что хочет и им пофиг на всех так что неизвестно что будет завтра. Так что меня этот я зык пугает потому-то можно проснуться утром а там вся парадигма переработана и вот ты сидишь и оказывается твои знания этого языка некому ненужно !
Липс про него нечего сказать немогу не слышал не писал нечего пронего не знаю. Но все ваши тирады о его достоинствах больше похожи на пропаганду на выборах …. Никаких примеров нечего просто красивые слова ПРОШЕ, ГИБЧЕ , УДОБНЕ . Приведите пару примеров одной и тойже задачи на ЛИПСЕ и на С++  и докажите что Липсом это легче решается…..  а не Бейте себя коленом в грудь и говорите да это Проше вы тут дураки не пробовали не знаете.
И ваше странно пришли в тему С++ и рассказываете каое это ### и то что все кто на этой теме создают темы и решают дураки давно пора закрыть её и всем разойтись по домам ! Создайте тему Липс и на своём примере доказывайте как он крут …. Может когда я увижу что это действительно так я и перейду на него !!

PM MAIL   Вверх
Фантом
Дата 20.9.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  15:16 Найти цитируемый пост)
именно в задачах такого рода

литература:
Чарнецки, Айзенекер "Порождающее программирвоание"
Вандервурд, Джосаттис "Шаблоны С++. Справочник разработчика"


И что, прямо-таки всегда получится? Или все-таки автору библиотеки с классом Matrix для этого придется как следует попотеть?  smile 

Понятно, что принципиально это реализуемо. Но в теории. На практике для обработки всех возможных вариантов придется написать очень много "сопроводительного" кода. Если бы кто-нибудь когда-нибудь это сделал, было бы очень недурно... но факт остается фактом - такой библиотеки для работы с матрицами под C++ так никто и не написал. 
PM   Вверх
mes
Дата 20.9.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Фантом @  20.9.2009,  14:31 Найти цитируемый пост)
Понятно, что принципиально это реализуемо. Но в теории.

нельзя ли уточнить, о чем речь, что именно  трудно реализуемо ? а то потерял нить следуя по  топикам этой темы.  smile 


Это сообщение отредактировал(а) mes - 20.9.2009, 15:41


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



****


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

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



Цитата(Фантом @  20.9.2009,  16:31 Найти цитируемый пост)
такой библиотеки для работы с матрицами под C++ так никто и не написал.  


Цитата(GoldFinch @  20.9.2009,  16:16 Найти цитируемый пост)
Чарнецки, Айзенекер "Порождающее программирвоание"

в этой книге ссылка на такую библиотеку,  а это где-то конец 90х
PM MAIL ICQ   Вверх
Remiznik
Дата 20.9.2009, 15:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ребята я создал тему в Релегиозных войнах .... Давайте организуем конкурс и пусть каждый будет доказывать на решение реальных примеров задач достоинства своего языка !! А )))
PM MAIL   Вверх
Fatkh
Дата 20.9.2009, 15:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Anikmar @  20.9.2009,  11:51 Найти цитируемый пост)
Вы прекрасно знаете о чем речь. Применяя возможности языка можно не заботится и перемене типов. Написание собственных типов - это основное преимущество С++ перд Си. Если понадобится матрица объектов, то на Си (как вы суже сказали) это делается при помощи указателя на void. Естественно это самый надежный и защищенный механизм    Речь шла не о конкретной матрице, а о возможности языка.

Я же уже писал. Еще раз - для каждой цели свой инструмент. На С просто не нужно делать это. Для таких задач есть другие языки - я их не раз перечислял. Если уж хотите доказат, что С++ удобнее С, то приводите примеры из областей, где С можно и нужно применять. В системном программировании ни матрицы объектов, ни просто двумерные массивы интов никому не нужны.

Цитата(Anikmar @  20.9.2009,  11:51 Найти цитируемый пост)
Я говорил про работспособность "супер языков высокого уровня". Для того, чтобы заработал шарп сколько дополнительного надо поставить? Сколько это весит?

На висте и выше - ничего. На линухе - Mono - не проблема. Весит не так много, чтобы это было проблемой.

PM MAIL Jabber   Вверх
GoldFinch
Дата 20.9.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Fatkh, если код на С можно 1в1 заменить кодом на С++, а местами и улучшить, то зачем С?

PM MAIL ICQ   Вверх
kemiisto
Дата 20.9.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(Фантом @  20.9.2009,  16:31 Найти цитируемый пост)
Если бы кто-нибудь когда-нибудь это сделал, было бы очень недурно... но факт остается фактом - такой библиотеки для работы с матрицами под C++ так никто и не написал.  


Фантом, Eigen, возможно, устроит? Там и со скоростью нормуль (lazy evaluation, explicit vectorization) и Open Source. smile 

Я мало знаком с Fortran'ом (но я исправлюсь smile ), но я бы тоже не стал вычислительную задачу на ++ решать. Тем более, свой велосипед изобретать...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 20.9.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Фантом, 
насчет возможностей шаблонов, вот такой код тоже невозможен на С++ ?
Код

#include <iostream>
#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/if.hpp>

int main()
{
    using namespace std;
    using namespace boost;
    using namespace boost::lambda;

    function<void(int _1)> fn = if_(_1%2==0)[ cout<<_1<<" is even\n" ].else_[ cout<<_1<<"is odd\n" ];

    fn(2);
    fn(3);
    fn(4);
}

а оно работает...
PM MAIL ICQ   Вверх
Фантом
Дата 20.9.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(mes @  20.9.2009,  15:40 Найти цитируемый пост)

нельзя ли уточнить, о чем речь, что именно  трудно реализуемо ? а то потерял нить следуя по  топикам этой темы.


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

Цитата(GoldFinch @  20.9.2009,  15:44 Найти цитируемый пост)

в этой книге ссылка на такую библиотеку,  а это где-то конец 90х 


Попытки были, одну из них даже уже упомянули. Но до эффективности и производительности BLAS и LAPACK все это все равно не дотягивает.

Цитата(kemiisto @  20.9.2009,  16:04 Найти цитируемый пост)

Фантом, Eigen, возможно, устроит? Там и со скоростью нормуль (lazy evaluation, explicit vectorization) и Open Source.


Вот-вот, это одна из лучших реализаций этой идеи. Она очень неплоха, но все-таки в серьезных вычислениях используют не ее. 

И, кстати, раз уж о ней зашла речь - это больше мегабайта исходников. Не слишком много, конечно, но для вспомогательной детали, предназначенной для более удобного написания одной частной программы, несколько многовато.  smile 
PM   Вверх
kemiisto
Дата 20.9.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



GoldFinch, плохой ты холиваршик! smile 

Цитата(GoldFinch @  20.9.2009,  17:21 Найти цитируемый пост)
вот такой код тоже невозможен на С++ ?

Нет.

Цитата(GoldFinch @  20.9.2009,  17:21 Найти цитируемый пост)
а оно работает... 

Ну, ну. Притормози. Теперь тоже самое, без буста, на стандартном С++.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Фантом
Дата 20.9.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  16:21 Найти цитируемый пост)

насчет возможностей шаблонов, вот такой код тоже невозможен на С++ ?


Мы, по-моему, немного зациклились. Возможен, конечно, только эффективность...
PM   Вверх
kemiisto
Дата 20.9.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(Фантом @  20.9.2009,  17:26 Найти цитируемый пост)
Вот-вот, это одна из лучших реализаций этой идеи. Она очень неплоха, но все-таки в серьезных вычислениях используют не ее. 

Не спорю. Сам именно так её и использую.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
W4FhLF
Дата 20.9.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Фантом @  20.9.2009,  14:54 Найти цитируемый пост)
Эта идея, конечно, частично спасает положение. Правда, ниоткуда не следует, что  W4FhLF ее реализовал


Реализовал. Только не то, что описал zim22. Я сделал перегрузку тринарных операторов. Получается нечто вроде замыканий. Сделал для A*B*D и A*B+D т.к. у меня эти операции используются в 90% случаев. Хотя можно сделать для любого выражения. 

Однако, если уж говорить об оптимизации, то накладные расходы не превышают 15%.

Цитата(Фантом @  20.9.2009,  14:54 Найти цитируемый пост)
W4FhLF реализовал ее более эффективно, чем разработчики какого-нибудь IFC,

Цитата(Фантом @  20.9.2009,  14:37 Найти цитируемый пост)
Очень громоздко, правда? 


Возможно здесь уже все забыли. Но я класс с матрицами привёл по просьбе показать пример "С vs C++". И речь идёт о реализации собственных решений. У меня и в мыслях нет тягаться с ребятами из Intel или реализациями из BLAS какого-нибудь. Класс матрица просто "удачно" вспомнился. 

Мне интересно. Что будет с оптимизацией накладных расходов в твоём примере на фортране? И что будет, когда ты выйдешь за рамки стандартного, оптимизированного для конкретного компилятора (IFC), функционала?

Цитата(kemiisto @  20.9.2009,  16:04 Найти цитируемый пост)
Я мало знаком с Fortran'ом (но я исправлюсь  ), но я бы тоже не стал вычислительную задачу на ++ решать. Тем более, свой велосипед изобретать...


Дело не в велосипеде. Изначально речь шла о удобстве использования собственных решений. Вот допустим оператор перемножения матриц у меня достаточно сложный и его поведение определяется размером матриц:

1. До 50000 элементов. Классическое умножение.
2. От 50000 до 2000000 элементов используется перемножение с более эффективным использованием кеша(одна матрица транспонируется и т.к. они у меня хранятся линейно, я прохожусь по обеим матрицами последовательно, что позволяет эффективно использовать кеш процессора) и векторизацией вычислений(сразу умножается от 4х до 16 элементов). 
3. От 2000000 элементов. Вычисления переносятся на GPU. 

Никто не мешает использовать другие процедуры, из сторонних библиотек в том числе. Важно, что внешне как есть A * B, так и остаётся.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
kemiisto
Дата 20.9.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



W4FhLF, дошло до меня. Тему, видимо, разбили. Отсюда утекло что-ли? Я уже отвечал в новой теме, с новым названием. =)

Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:04


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 20.9.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(kemiisto @  20.9.2009,  15:28 Найти цитируемый пост)
Ну, ну. Притормози. Теперь тоже самое, без буста, на стандартном С++. 

C++0x не за горами smile


--------------------
PM MAIL WWW   Вверх
Фантом
Дата 20.9.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  20.9.2009,  16:51 Найти цитируемый пост)
Реализовал. Только не то, что описал zim22. Я сделал перегрузку тринарных операторов. Получается нечто вроде замыканий. Сделал для A*B*D и A*B+D т.к. у меня эти операции используются в 90% случаев. Хотя можно сделать для любого выражения. 


Хорошо. Но все-таки, на мой взгляд, игра не стоила свеч.

Цитата(W4FhLF @  20.9.2009,  16:51 Найти цитируемый пост)

Возможно здесь уже все забыли. Но я класс с матрицами привёл по просьбе показать пример "С vs C++".


Так ведь я цеплялся именно к этому конкретному примеру. smile 
Цитата(W4FhLF @  20.9.2009,  16:51 Найти цитируемый пост)

Мне интересно. Что будет с оптимизацией накладных расходов в твоём примере на фортране? И что будет, когда ты выйдешь за рамки стандартного, оптимизированного для конкретного компилятора (IFC), функционала?


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

Цитата(W4FhLF @  20.9.2009,  16:51 Найти цитируемый пост)

Дело не в велосипеде. Изначально речь шла о удобстве использования собственных решений. Вот допустим оператор перемножения матриц у меня достаточно сложный и его поведение определяется размером матриц:


Конечно, так тоже можно. В конце концов, можно просто написать обвязку для того же LAPACK и радоваться. Но тогда возникает другая проблема - сложность разработки и поддержки всего этого. 

Если вернуться к исходному вопросу, то бессмысленно спорить с тем, что C++ язык универсальный и очень мощный. И сделать на нем можно все. Но далеко не всегда это рационально.
PM   Вверх
kemiisto
Дата 20.9.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(mes @  20.9.2009,  18:20 Найти цитируемый пост)
C++0x не за горами

 smile 
mes, Вы, блин все как в вакууме сферическом живёте, ей богу. На календарь посмотри. 0x... smile Уже сам Страуструп смирился...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 20.9.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



kemiisto, а чем буст не стандартный С++ ? в нем все средствами языка реализовано
PM MAIL ICQ   Вверх
kemiisto
  Дата 20.9.2009, 17:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(GoldFinch @  20.9.2009,  18:28 Найти цитируемый пост)
kemiisto, а чем буст не стандартный С++ ? в нем все средствами языка реализовано 

Если возвращаться к теме обсуждения и к примеру, приведённому W4FhLF'ом то надо чётко понимать разницу между фичей на уровне библиотек и фичей на уровне языка. boost - сторонняя библиотека. А мы обсуждаем язык.

То, что, скажем в Fortran, дадено на уровне языка, можно реализовать на С++, используя шаблоны. Или уже реализовано и нужно только воспользоваться. Но! Сторонние библиотеки - это дополнительный объём кода, в т.ч. и объектного, дополнительный API, который надо изучить, дополнительные трудности с установкой/настройкой. А с точки зрения разработчика библиотеки - дополнительные трудозатраты. И в случае С++ ой какие не малые. Язык убожество полное. Дрянь. А шаблоны - no comments. Какой смысл, скажем, от BGL (пытался тут потрогать), если чтоб её использовать С++ надо лет 5-10 изучать? Кому нужно-то такое? А шаблонный код на ++ - это нечто. Perl нервно курит в сторонке. Зато да, крутость то как возрастает, когда говоришь, шаблоны, обобщённое программирование. Аж в штанах тяжелеет. smile Наверное...

Это сообщение отредактировал(а) kemiisto - 20.9.2009, 17:44


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 20.9.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



kemiisto, вот лежит у меня книжка про BGL, гдето 300 страниц
у нее небольшая вводная часть про обобщенное программироваие, гдето 50 страниц, и там впринципе все что надо знать про ОП на С++
чтобы использовать С++
я использую С++ меньше года, и мне не надо было 5-10 лет, чтобы изучить С++ до уровня достаточного для понимания как использовать BGL

большинство библиотек в бусте header only, они не содержат и не генерят лишний объектный код.
встроенные средства языка типа Fortran генерируют не меньше кода, чем код получаемый при компиляции библиотек C++

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

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

затраты на написание библиотеки компенсируются ее частым использованием, и удобством ее использования


Это сообщение отредактировал(а) GoldFinch - 20.9.2009, 18:42
PM MAIL ICQ   Вверх
kemiisto
  Дата 20.9.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(GoldFinch @  20.9.2009,  19:41 Найти цитируемый пост)
я использую С++ меньше года, и мне не надо было 5-10 лет, чтобы изучить С++ до уровня достаточного для понимания как использовать BGL

Тут 2 варианта: ты либо гений, либо врун. Я даже расписывать не хочу. Что называется, не надо ла-ла. Меньше года и уже понимать многое в шаблонах... Нет... Или гений. А я вот туповат, видимо. smile 

Цитата(GoldFinch @  20.9.2009,  19:41 Найти цитируемый пост)
жесткие встроенные средства не лучше чем гибкие возможности реализовать те же средства на уровне библиотек

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

Цитата(GoldFinch @  20.9.2009,  19:41 Найти цитируемый пост)
с шаблонами все нормально. я их постоянно юзаю, ничего плохого в них не вижу, надо просто потратить время на их изучение.

Извини, у меня этого времени нет. Совсем нет. И я не чувствую, что получу практическую выгоду от знания этой фичи. У меня длине станет? smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 20.9.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



насчет С++ vs С vs all

http://forum.vingrad.ru/index.php?showtopi...t&p=1943034

в этом посте сравнивается код на С с обобщенным кодом С++
приводятся замеры времени выполнения и дизасмы
результаты практически одинаковы

приведите время выполнения такого же кода например на Fortran и его дизасм

Добавлено через 13 минут и 52 секунды
kemiisto, насчет гений\врун  - посмотри мои посты на этом форуме
я тут зарегился когда только начал писать на С\С++ (в начале больше на С чем на С++)
PM MAIL ICQ   Вверх
kemiisto
Дата 20.9.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(GoldFinch @  20.9.2009,  19:51 Найти цитируемый пост)
kemiisto, насчет гений\врун  - посмотри мои посты на этом форуме
я тут зарегился когда только начал писать на С\С++ (в начале больше на С чем на С++) 

Ты ещё про scaling factor не забывай. Программы пишут не только программисты. А в случае прикладного ПО и не столько программисты. Времени на изучение С++ и борьбу с его ублюдочным синтаксисом и прочими "фичами" у них нет. И желания нет. У них мужское начало проявляется в другой форме. Там по-другому меряются. smile 

Цитата(GoldFinch @  20.9.2009,  19:51 Найти цитируемый пост)
в этом посте сравнивается код на С с обобщенным кодом С++
приводятся замеры времени выполнения и дизасмы
результаты практически одинаковы

Меня не интересуют синтетические тесты. Пока я вижу в области, которая мне интересна, практически полное доминирование Fortran'а. Значит не просто так...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Леопольд
Дата 20.9.2009, 20:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(NightmareZ @  20.9.2009,  14:52 Найти цитируемый пост)
Хорошо, давай я пишу твою задачу на C++, а ты мою на лиспе. Ок?

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

bitset<1024> bits(raw_data);
bits[0] = bits[1023];
bits = (bits << 10) | (bist >> 1024-10);
std::cout<<bits<<std::endl;



Цитата(NightmareZ @  20.9.2009,  14:52 Найти цитируемый пост)
Тогда расскажи, пожалуйста, чем ООП в Лиспе лучше или хуже ООП в С++. Хотелось бы увидеть от тебя хотя бы немного конкретики а не юморески про какашки.

ООП - оно и в африке ООП.
Лисп действительно мультипарадигменный язык, в отличие, от C++. Это раз.
Лисп проще, чем C++, но при этом гибче. Это два.
Пока достаточно.

Недостаточно. В каждом языке своё представление как это должно работать. Я спрашиваю в третий раз, чем поддержка ООП в Лиспе мощнее чем поддержка ООП в С++? Пока что ты ограничиваешься лишь общими фразами. Может ответишь на вопрос?
Ты утверждаешь что Лисп гибче, так объясни чем он гибче, пока что ни одного примера его большей гибкости я не видел. Может я решу что стоит Лисп изучить...

Это сообщение отредактировал(а) Леопольд - 20.9.2009, 20:33


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
GoldFinch
Дата 20.9.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



kemiisto, если у тебя проблемы с изучением С++, то это твои проблемы, а не языка.
ты - не показатель.
PM MAIL ICQ   Вверх
mes
Дата 20.9.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(GoldFinch @  20.9.2009,  17:51 Найти цитируемый пост)
посмотри мои посты на этом форуме
я тут зарегился когда только начал писать на С\С++ (в начале больше на С чем на С++) 


kemiisto, ага почитайте  smile  
для краткости скажу, что GoldFinch, описывал C++ одним словом - "бред".. благо остались доказательства,  ибо  после постов этой темы в такое  поверить  трудновато  smile

Добавлено через 1 минуту и 41 секунду
Цитата(kemiisto @  20.9.2009,  18:46 Найти цитируемый пост)
в случае прикладного ПО и не столько программисты. Времени на изучение С++ и борьбу с его ублюдочным синтаксисом и прочими "фичами" у них нет. И желания нет.

тут полностью соглашусь, C++ для программистов, ибо спички детям не игрушка smile


--------------------
PM MAIL WWW   Вверх
Фантом
Дата 20.9.2009, 20:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  18:51 Найти цитируемый пост)
в этом посте сравнивается код на С с обобщенным кодом С++
приводятся замеры времени выполнения и дизасмы
результаты практически одинаковы

приведите время выполнения такого же кода например на Fortran и его дизасм


Тест действительно синтетический, но посмотрим. Я чуть переделал простейший вариант на C, благо C с C++ уже сравнивали. Вот так:
Код

double* arr;
int MemSize;


int main()
{
    MemSize=32768;
    arr=new double[MemSize];
    int countOfTests=32768;
    for(int testsCount=countOfTests;testsCount;--testsCount) 
    {
        double val = 0;
        for (double *it = arr, *E=arr+MemSize; it!=E; ++it)
        {
            *it = val;
            val += 0.1;
        }
    }
    
    return 0;
}


Аналог на Фортране выглядит так (почти аналог - я честно ликвидировал массив в конце работы smile ):
Код

program f
  implicit none
  real(8),dimension(:),allocatable :: arr
  integer :: MemSize,countOfTests,testsCount,N

  MemSize=32768
  allocate(arr(MemSize))
  countOfTests=32768
  do testsCount=1,countOfTests 
    arr=(/(0.1*N,N=0,MemSize-1)/)
  end do
  deallocate(arr)
end program f


Оба варианта компилировались GNU-тыми компиляторами  с ключом -O3, никаких других изысков не использовалось. Подсчет времени тупейший - банальный time. Результат - 1.7 секунды у C, 1.6 у Фортрана. При увеличении размера массива и количества тестов получалось либо примерное равенство, либо Фортран был чуть быстрее. 

PM   Вверх
Lazin
Дата 20.9.2009, 21:12 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(NightmareZ @  19.9.2009,  23:15 Найти цитируемый пост)
Как тебе такой вариант: ядро пишем на лиспе

и тормозиииииииииииииииииииииииииииииииим

Цитата(Fatkh @  20.9.2009,  00:36 Найти цитируемый пост)
Какие же в С подводные камни?
пожалуй, достаточно упомянуть void* smile 

Цитата(NightmareZ @  20.9.2009,  03:17 Найти цитируемый пост)
Нет абсолютно никакого значения, на чём написан код. Что угодно можно запихнуть в нулевое кольцо.
ога, а оно потом начнет там тормозиииииить и течь

Fatkh, поверь мне, С++ ты не знаешь smile 

Цитата(Фантом @  20.9.2009,  12:47 Найти цитируемый пост)
В нормальных условиях такие вещи пишутся на Фортране - он для них специально предназначен, поэтому все необходимое уже встроено в язык, а конечный результат будет работать заметно быстрее, чем код на C (о C++, C#, Java и т.д. можно и не вспоминать).

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

Вообще, я считаю, что С++ - устарел, есть круг задач, для которых он подходит очень хорошо, это те задачи, в которых важна производительность, но используемые алгоритмы не слишком сложны. Но, в его нише, альтернатив просто нет. D - сырой, D 1.0 не представляет из себя ничего интересного, а D 2.0 - еще не готов, к тому-же на нем почти никто не пишет. С - сам язык очень прост, но писать на нем код(если конечно речь не о коде на 1000 строк) сложно. Попробуйте реализовать на Си, коллекцию объектов, которые подгружаются, по мере необходимости, из файла и, по мере ненужности, удаляются. Есть языки, в которых это можно сделать в несколько строк кода smile На C# - код писать просто, можно писать эффективный код, работать с нативными структурами данных, но придется возиться с PInvoke, маршалингом, unsafe кодом, проще сделать это на С++, так как вся простота C# здесь исчезает. smile Для реализации сложных вычислений(особенно параллельных/конкурентных) лучше всего подходят функциональные языки программирования, такие как Haskell, Ocaml, F# smile 
Мой выбор - не пытаться найти универсальный инструмент, вместо этого, нужно писать большую часть кода на чем-нибудь, работающем на виртуальной машине(я имею ввиду не виртуализацию, а т.н. platform virtualization, например JVM или CLR), при этом можно использовать разные языки, в зависимости от задачи, а требовательные к ресурсам элементы системы - писать на С++. Или, если есть возможность, вообще исключить неуправляемый код из проекта. И тут дело не в религии и не в том, что С++, это smile а в том, что это лучше для клиента.
PM MAIL Skype GTalk   Вверх
Void
Дата 20.9.2009, 21:36 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



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

Хороший аргумент, только когда применяешь его к чему-то менее популярному, чем C++, почему-то обижаются. Блаб!

Это сообщение отредактировал(а) Void - 20.9.2009, 21:37


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
kemiisto
  Дата 20.9.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 3
Всего: 160



Цитата(Void @  20.9.2009,  22:36 Найти цитируемый пост)
Хороший аргумент, только когда применяешь его к чему-то менее популярному, чем C++, почему-то обижаются. Блаб!

Не понял.

Во-первых, аргумент - полное г...., так как С++ - единственный (императивный, а другие и не языки совсем smile ) язык, с которым я постоянно in troubles.
Во-вторых, автору Blub Paradox для начала необходимо дать трактовку мощности языка. А так... Ниачём!


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 20.9.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Фантом, при измерение времени используя time  - это огромная погрешность за загрузку программы 

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

тогда разница - только в сложности написания исходного кода.
код на С++ писать быстрее чем на С, меньше букв
код на фортране, 
   arr=(/(0.1*N,N=0,MemSize-1)/)
тоже выглядит неплохо
PM MAIL ICQ   Вверх
Fatkh
Дата 20.9.2009, 21:54 (ссылка)   | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lazin @  20.9.2009,  19:12 Найти цитируемый пост)
Fatkh, поверь мне, С++ ты не знаешь  


Цитата(Lazin @  20.9.2009,  19:12 Найти цитируемый пост)
Цитата(Fatkh @  20.9.2009,  00:36 )
Какие же в С подводные камни?
пожалуй, достаточно упомянуть void*  

Мб и не знаю. Но ты точно не знаешь С, если у тебя проблемы с void*. 
PM MAIL Jabber   Вверх
GoldFinch
Дата 20.9.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



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

видимо всего этого ты тоже не знаешь.
PM MAIL ICQ   Вверх
Фантом
Дата 20.9.2009, 22:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  21:53 Найти цитируемый пост)
Фантом, при измерение времени используя time  - это огромная погрешность за загрузку программы 


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

Цитата(GoldFinch @  20.9.2009,  21:53 Найти цитируемый пост)
тогда разница - только в сложности написания исходного кода.


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

C++ в этом отношении неплох, но только если кто-то уже сделал за тебя "грязную работу". А если ее надо делать самому, то удобства C++ по сравнению с C в значительной степени нивелируются. 
PM   Вверх
GoldFinch
Дата 20.9.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Фантом, если ее надо делать самому, и ты знаешь как ее делать - никаких проблем нет - берешь, и делаешь.
написать аналоги библиотек буста - вопрос времени, ничего особенного в них нет.

однако практика показывает, что написать библиотеку и потом много раз ее повторно использовать, это быстрее чем каждый раз писать писать код без этой библиотеки
PM MAIL ICQ   Вверх
Фантом
Дата 20.9.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(GoldFinch @  20.9.2009,  22:35 Найти цитируемый пост)
Фантом, если ее надо делать самому, и ты знаешь как ее делать - никаких проблем нет - берешь, и делаешь.
написать аналоги библиотек буста - вопрос времени, ничего особенного в них нет.


Время - это самый ценный из имеющихся ресурсов. smile 

Цитата(GoldFinch @  20.9.2009,  22:35 Найти цитируемый пост)
однако практика показывает, что написать библиотеку и потом много раз ее повторно использовать, это быстрее чем каждый раз писать писать код без этой библиотеки 


Конечно. Но в обсуждаемом случае эта ситуация малореальна. 

Либо человек пишет такого рода программы постоянно - и тогда он почти наверняка будет руководствоваться "промышленными стандартами". В вычислительном программировании это Фортран, в чем-то другом - что-то другое, но совсем не  всегда это C++. 

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

PM   Вверх
Fatkh
Дата 20.9.2009, 23:45 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(GoldFinch @  20.9.2009,  20:03 Найти цитируемый пост)
Fatkh, кроме особенностей конкретных языков программирования, есть понятия общие для всех языков, например безопасность (устойчивость к ошибкам).
есть теории почему статическая типизация хороша, и теории почему хороша динамическая типизация, и конечно есть теории о типизации вообще.

И? А есть теория русского языка, согласно которой ты сейчас не сказал ни одной значимой фразы. Да, есть теории. И что? Абстрактно говорить все мастера. 
PM MAIL Jabber   Вверх
W4FhLF
Дата 21.9.2009, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Фантом @  20.9.2009,  22:20 Найти цитируемый пост)
Фортран в этом отношении для таких задач намного удобнее.


Привычка -- вторая натура?

Цитата(Фантом @  20.9.2009,  22:20 Найти цитируемый пост)
Пример выше не слишком показателен - куда интереснее будет, если какую-то программу надо будет параллелить.


Какие здесь преимущества у фортрана?





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Фантом
Дата 21.9.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  21.9.2009,  03:47 Найти цитируемый пост)

Привычка -- вторая натура?


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

Цитата(W4FhLF @  21.9.2009,  03:47 Найти цитируемый пост)

Какие здесь преимущества у фортрана?


Встроенные средства языка. Они, правда, позволяют сделать не все, но в большинстве случаев их оказывается достаточно, по крайней мере для реализации чего-то уровня OpenMP.
PM   Вверх
W4FhLF
Дата 21.9.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Цитата(Фантом @  21.9.2009,  12:26 Найти цитируемый пост)
Но и реализация многих нужных вещей на уровне языка (соответственно, с хорошим контролем ошибок компилятором), и отсутствие ненужных вещей (что тоже совсем не вредно) тоже облегчают жизнь.


Без конкретики конечно сложно, но я пока ничего уникального в фортране не увидел. smile Хотя бы чего-то, что отсутствует в С++ и генерируемый код на IFC какой-то оригинальностью не блещет. Возвращаясь к нашим баранам, мне по-прежнему удобнее писать A*B*C чем matmul(matmul(A, B), C).

Цитата(Фантом @  21.9.2009,  12:26 Найти цитируемый пост)
Встроенные средства языка. Они, правда, позволяют сделать не все, но в большинстве случаев их оказывается достаточно, по крайней мере для реализации чего-то уровня OpenMP.


Опять же, без какой-либо конкретики я не понял о каких преимуществах речь. OpenMP поддерживается всеми современными компиляторами С++, auto-vectorization есть в ICC и в MSVC++ (хотя она там не такая навороченная).

А вообще, я сам недавно убедился, что в плане параллельных вычислений F# рулит. smile 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Леопольд
Дата 21.9.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  21.9.2009,  12:48 Найти цитируемый пост)
в плане параллельных вычислений F# рулит

А Haskell нет?
Я подумываю функциональный язык изучить, один. Не знаю что выбрать, Haskell или F#

Это сообщение отредактировал(а) Леопольд - 21.9.2009, 13:13


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
W4FhLF
Дата 21.9.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 2
Всего: 121



Haskell не знаю. За F# стоит мощнейший фреймворк. В VS 2010 F# будет включён как один из основных языков. В общем MS многое вкладывает в его развитие. Но, win-only...


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 21.9.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



На mono то-же можно поставить, но через то самое место smile 
PM MAIL Skype GTalk   Вверх
Фантом
Дата 21.9.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(W4FhLF @  21.9.2009,  12:48 Найти цитируемый пост)

Опять же, без какой-либо конкретики я не понял о каких преимуществах речь.


Ну, например, конструкции вроде forall и where.

Цитата(W4FhLF @  21.9.2009,  12:48 Найти цитируемый пост)
OpenMP поддерживается всеми современными компиляторами С++


Как внешняя библиотека. Это, правда, уже вопрос эстетики, но все же...

Цитата(W4FhLF @  21.9.2009,  12:48 Найти цитируемый пост)

А вообще, я сам недавно убедился, что в плане параллельных вычислений F# рулит.


Если бы он рулил еще под чем-то, кроме Windows...
PM   Вверх
Void
Дата 21.9.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(Леопольд @  21.9.2009,  15:11 Найти цитируемый пост)
в плане параллельных вычислений F# рулит

А Haskell нет?

Haskell очень неплох в плане параллелизма за счёт правильных абстракций и мощного рантайма [1]. Причём команда GHC сейчас очень активно работает в этом направлении. Что есть в Haskell для параллелизма:
  •  Легковесные потоки (forkIO), как в Erlang и даже легче, и средства синхронизации между ними: очереди (Chan), фьючерсы (MVar), семафоры (QSem).
  •  par — самый простой способ распараллелить чистый код. (x `par` y) возвращает y и ставит вычисление x в очередь на исполнение. Если у рантайма найдётся свободный поток, то к моменту, когда нам потребуется x, он уже будет вычислен параллельно. Расстановка `par` никак не изменяет семантику функции и производительность в однопоточной системе.
  •  Software Transactional Memory
  •  Data Parallel Haskell (обещают допилить в GHC 6.12).
Надо только понимать, что в числодробилках вроде пресловутого перемножения матриц Haskell не конкурент Fortran и C++.

[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
PM MAIL WWW GTalk   Вверх
Lazin
Дата 21.9.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Void @  21.9.2009,  17:33 Найти цитируемый пост)
Надо только понимать, что в числодробилках вроде пресловутого перемножения матриц Haskell не конкурент Fortran и C++.

надо так-же понимать, что прогресс не стоит на месте: supercompilation for haskell
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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