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

Поиск:

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

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

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


 




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


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

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