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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен ли С++ 
:(
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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