Решено. Каковы преимущества в с++?

Модератор: Модераторы разделов

azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Решено. Каковы преимущества в с++?

Сообщение azsx »

Пытаюсь начать программировать. Сегодня это еще на уровне изучения синематики языка (а нередко и просто команд). Однако уже сейчас возникает такой наивный вопрос, а почему все программируют в с++? Вроде как с виду очень сложный язык, который заставляет постоянно думать о командах, библиотеках, внутренних параметров переменных - а как бы, вовсе не о логике программы...
Ну вот я и растерялся.
зы
а есть ли на этом форуме люди, которые принципиально так и не смогли освоить с++ как язык программирования?
зызы
отредактирую пост и уточню для какой задачи (программы) в целом мне это надо.
стер. Может еще и не получится ничо.
Я скачаю себе джаву и неделю почитаю книжки. Там видно будет, может на с++ вернусь.
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: Решено. Каковы преимущества в с++?

Сообщение agentprog »

azsx писал(а):
23.07.2010 19:16
почему все программируют в с++?

не все :) некоторые программируют на Си (шутка)
а если серьезно, то тыц
C++ это только императивный язык и объектноориентировнный (может еще какой из этого списка :) )
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено. Каковы преимущества в с++?

Сообщение Portnov »

C++ - один из самых сложных ЯП, сложнее его только эзотерические языки типа Malbolge. В нынешних реалиях знать основы c++ не повредит, но начинать на этом языке новые большие проекты противопоказано.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

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

извините, нельзя ли тут поподробней. А то получается, что как раз на си программировать то и не стоит. Что же тогда выбрать для "большого проекта"?
зы
кстати я читаю книжку по си именно потому, что мне необходимо решить очень объемную задачу. Сперва потренируюсь на кошках, а потом начну... Так что вопрос про язык вовсе не "потолка взят".
зызы
будущая программа запросто сможет жить в одной консоли, используя для вывода данных веб интерфейс и готовя отчеты. Прога будет активно юзать инет и данные анализировать (текстовые). Запускаться это удовольствие будет на серверах, потому ооочень желательно компиляция под nix системы.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено. Каковы преимущества в с++?

Сообщение Portnov »

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

Остальное пишется на языках более высокого уровня. Java, C#, Python, Ruby, OCaml, Haskell, Erlang, Lisp...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

Остальное пишется на языках более высокого уровня.

для меня это очень принципиальный момент. То есть для программы (даже если она обрабатывает кучу данных) вы советуете использовать не с++, а к примеру питон, правильно?
извините Portnov - а вы сами в чем программируете?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено. Каковы преимущества в с++?

Сообщение Portnov »

Если нужно обрабатывать кучу данных, то вряд ли питон подойдёт. Скорее Java, C#, Fortran, OCaml, Haskell. Если действительно "упрётесь в производительность" - тогда какие-то части на C (не на C++).

Я сейчас больше всего пишу на haskell и на python.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено. Каковы преимущества в с++?

Сообщение NickLion »

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

PS т.е. преимущество в том, что не надо переходить с одного языка на другой для написания программы - обычных и критичных по скорости мест.
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Решено. Каковы преимущества в с++?

Сообщение Crazy »

В C++ Страуструп вбухал большое количество средств для поддержки ООП, и сохранил близость к архитектуре, для большей производительности.


Desipere in loco
Спасибо сказали:
i18n
Сообщения: 192

Re: Решено. Каковы преимущества в с++?

Сообщение i18n »

Вот буквально сегодня попалась статья на схожую тему http://apenwarr.ca/log/?m=201007#22
Спасибо сказали:
AlexBel
Сообщения: 27

Re: Решено. Каковы преимущества в с++?

Сообщение AlexBel »

azsx писал(а):
23.07.2010 19:16
Вроде как с виду очень сложный язык, который заставляет постоянно думать о командах, библиотеках, внутренних параметров переменных - а как бы, вовсе не о логике программы...

Все таки о логике программы желательно думать до того, как начинать писать код, в этом случае больше шансов на успех;). Почитайте книгу Б. Страуструпа "Язык программирования С++", думаю после прочтения первых 2-х глав вопросы относительно преимуществ и недостатков С++ отпадут сами собой. В конце 2-й главы есть 3 совета:
1. Не паникуйте! Все станет понятным в свое время
2. Для написания хороших программ не нужно знать о С++ все
3. Сосредоточьте внимание на технологиях программирования, а не на элементах языка
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение serzh-z »

Portnov писал(а):
23.07.2010 20:22
Остальное пишется на языках более высокого уровня. Java, C#, Python, Ruby, OCaml, Haskell, Erlang, Lisp...
Ужс. Как я отстал от жизни... ) C и С++ - как были языками промышленного уровня, так ими ещё долго, полагаю, остануться.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Решено. Каковы преимущества в с++?

Сообщение Denjs »

Пишу на С++\QT4. доволен как кот наевшийся валерьянки.
С учетом наличия метакомпилятора, считаю что именно так (С++\QT4) адекватно называть то, что делает из С++ фреймворк QT (извините, называть QT4 "библиотекой" - уже как-то язык не поворачивается).
(что пишу? второй(третий, пятый?) 1С - систему, у которой бизнес-логика настраивается с помощью скриптов. (QtScript рулит). Заказчик пока платит. В этом месяце сдаем проект. Если повезет - сумею расшарить ключевые классы но это пока ещё не известно, надо с РП и "топами" договариваться)))

Да, могли бы использовать 1С, и было бы быстрее, но это извечный вопрос стратегии - поставить заказчика на бабки сейчас за разработку(нам) или потом за лицензии (не нам).

В общем на чем писать - это вопрос выбора инструментария, вашего знания инструмента и наличия рядом знающего гуру. Без гуру вы на чем угодно завалите что угодно)))


----------------------------
Автору топика. С\C++ - универсальный, "естественный" язык, созданный программистами для программистов (поправьте?))).
Не для бизнес-менеджеров, не для клиентов, не для автоматизации чего-либо (1С), не для обучения студентов азам программирования (Pascal), не для того что бы продаваться (Java) или быть простым и легким (BASIC) или продаваться+создавать конкуренцию другому языку (С#).

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

C\С++ - это общий знаменатель. Все из него возникло, и все к нему сходится в сравнении.
Хотите или нет - но знание С++ сделает из вас действительно программиста а не кодера. Это как высшая математика - "оно учит думать".

----------------------------
А Портнову "-1")))
за категоричность)

Языки "более высокого уровня" ориентированные на заданную нишу и область задачи - это практически эквивалентно наличию в С\С++ необходимого набора классов, которые ориентированы на эту самую область задач.
Т.е. сравнивать надо не язык высокого уровня и C\C++, а язык высокого уровня и С\С++ с соответсвующим набором библиотек/\классов которые решают соответсвующие задачи. имхо.

Можно "какашками покидаться"?
"Языки высокого уровня" чуть больше чем полностью (за достаточно редким исключением) пишутся на чем? праально... на устаревшем\плохом С\С++ на котором "не стоит начинать новые проекты". или давайте пообсуждаем статистику и то, сколько у нас языков являются self-hosted?

Кину ещё камень во фразу "не стоит начинать новые проекты". давайте точно оговорим - о каких именно "новых проектах" вы говорите? Внедрение 1С? автоматизация бизнеса? построение систем документооборота? разработка системных утилит? построение подсистем обработки информации? обработка потокового видео? .....?


PS: А жабу я бы стал рассматривать как серьезную вещь только для IBM-овских майнфреймов. там для обработки жабьих программ отдельный процессор выделен. Все остальное и везде, за исключением мелких утилит, - тормозит. страшно или не сильно. Пользуем почти каждый день эклипсовские продукты от айбиема - и что то большой скорости в ВебСферБизнесМоделлере я не наблюдал.
Ну ещё на телефонах всякое поделие на жабе пишут, да)))
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

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

я не настоящий программист. Пока я получаю только разочарования.
Философские замечания
Язык программирования решает две взаимосвязанные задачи: позволяет программисту записать подлежащие выполнению действия и формирует понятия, которыми программист оперирует, размышляя о своей задаче. Первой цели идеально отвечает язык, который очень "близок машине". Тогда со всеми ее основными "сущностями" можно просто и эффективно работать на этом языке, причем делая это очевидным для программиста способом. Именно это имели в виду создатели С. Второй цели идеально отвечает язык, который настолько "близок к поставленной задаче", что на нем непосредственно и точно выражаются понятия, используемые в решении задачи. Именно это имелось в виду, когда первоначально определялись средства, добавляемые к С.

цитата с Страуструпа
видимо моя проблема именно в этом. Я хочу язык, который идеально решал бы мою программу. Программа у меня четко определена, я знаю какие вещи мне будут нужны. Как я понимаю, для ее решения мне сейчас очень фокспро подходил бы, если бы он компилировался под разные платформы и работа с инетом в нем была бы подробней расписана. Зато команды фокспро и интеграция с базой данных, для меня это вверх совершенства. А вот понимания "как реализовать мою программу идеально оптимизировав ее под "машину" - мне не надо. Вот и опять не знаю что делать. Отказаться от с++? Или зубрить матчасть "теории машинного программирования" смирившись со строгим отношением с++ к синематике и т.п.?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Решено. Каковы преимущества в с++?

Сообщение Denjs »

Учите как Qt работает с базами данных ;)
С++ - язык общего назначения и задуман для того, чтобы настоящие программисты получили удовольствие от самого процесса программирования.

Это вам кто-то сказал или вы так толсто троллите?

PS: простите, а что вы имеете в виду под словом "синематика"? уж не "семантику" ли
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

Это вам кто-то сказал или вы так толсто троллите?

это тоже Страуструп. Забыл указать.
а что вы имеете в виду под словом "синематика"? уж не "семантику" ли

я даже слова путаю :(
зы
решено. Буду дальше мучать с++, и пусть мне будет хуже...
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Решено. Каковы преимущества в с++?

Сообщение Denjs »

это тоже Страуструп. Забыл указать.
Страуструп здесь шутит ))))) не пугайтесь сенсея)


а ещё можно вопрос? какие из языков сейчас вы уже знаете?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

какие из языков сейчас вы уже знаете?

визуал (бэйсик и фокспро), пхп на ооочень начальном уровне, чуть чуть mysql (ну просто sql). Захотелось трудностей, вот и стал с++ учить.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Решено. Каковы преимущества в с++?

Сообщение Denjs »

надо расти, надо.
вот вам ссылка для изучения параллельно с С\С++
http://qt.nokia.com/products

Или же доучите ПХП и попробуйте сделать ваше приложение полностью web-приложением)
Здесь надо от архитектуры вашей системы отталкиваться и подбирать соответствующее средство реализации.. имхо.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

Или же доучите ПХП и попробуйте сделать ваше приложение полностью web-приложением)

чем мне не подходит php. Во первых, у меня будет именно программа, которая будет работать круглосуточно, а вовсе не будет обрабатывать мелкие скрипты обращений к базе данных. Во вторых как то странно пхп работает с кодировками. Учитывая тот факт, что в инете на сайтах различных кодировок немеряно, меня пугает возможность столкнуться с ограничениями языка пхп в плане обработки разных кодировок. Вот пример первой же проблемы Меняется кодировка в php при обработке строк
Denjs сперва вы конкретно сказали, что с++ - это хорошо, а мол пост Portnov с предложением других языков - это от лукавого. Затем вы пишите:
Здесь надо от архитектуры вашей системы отталкиваться и подбирать соответствующее средство реализации.. имхо.

и вот я опять сомневаюсь :(
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено. Каковы преимущества в с++?

Сообщение NickLion »

azsx, поймите не существует идеального языка. C++ - хороший язык, но тоже для своего класса задач. Для Web'а он не подходит. Да, на нём можно CGI писать, но гораздо проще то же делать на PHP или Perl. И Denjs минус Portnov'у "ставил" не за другие языки, смотрите внимательнее, а за категоричность - "C++ не нужен". Когда задачи решаются на C++?
0. Когда программист хочет получить высокую скорость, при этом сохранив масштабируемость системы.
К примеру, стоит задача обработки видео - выбрать тут Java, C# - ну просто бессмысленно.
1. Обеспечить работоспособность в условиях достаточно ограниченных ресурсов (ну или просто, чтобы программа мало весила и не жрала много). Ни Java, ни C# этим похвастаться не могут.
2. Для C++ существует много фреймворков и библиотек, и иногда для решения задачи практически не придётся писать своего кода. Но тут и Java неплохие позиции имеет, C# пока отстаёт.
3. Когда программист знает этот язык лучше других. Привычнее писать.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено. Каковы преимущества в с++?

Сообщение Portnov »

NickLion

По пунктам 0 и 1. Это да, но расплачиваться (за использование С++) придётся резко возрастающей сложностью (а значит, больше нужно будет разработчиков, или более высокой квалификации, или больше времени на проект, а скорее всего всё это вместе).

По пункту 2: многие считают, что ява далеко обогнала C++ в этом плане (особенно если смотреть на средства разработки - всякие IDE итп). Если даже не обогнала, то на уровне вполне.

По пункту 3: см. 0.

Denjs

Из того, что многие языки написаны на C/C++, не следует ничего. Многие компиляторы C написаны на ассемблере; что теперь, всё на ассемблере писать?

Никакой универсальный инструмент не может быть лучше специализированного (в области специализации последнего).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: Решено. Каковы преимущества в с++?

Сообщение agentprog »

azsx
Вам тут уже посоветовали C++/Qt. Судя по описанной Вами задаче, он Вам должен подойти, потому что в нем очень многое уже реализовано в довольно удобные (имхо) интерфейсы. CLI приложения на Qt тоже пишутся. Документация более чем вменяемая, смотрите или в Qt Assistant либо по http://doc.qt.nokia.com/
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Решено. Каковы преимущества в с++?

Сообщение diesel »

Denjs, вы зря C и C++ сводите в C/C++: у С своя ниша применения, и никто его от туда двигать не собирается: это как раз там где "писали бы на языках ассемблера, но на С понятнее, а результат тот же" :) первая ассоциация с С - адресная арифметика, первая ассоциация с плюсами, не смотря на "мультипарадигменность" - "классовая теория" :) именно классовые заморочки сделали С++ с одной стороны мощным, и все остальное, с другой - достаточно сложным. С другой стороны C++/Qt требований "знание заморочек С++" не то чтобы сильно выставляет, то есть при минимальных знаниях тоже С++, и умея ориентироваться в документации Qt можно получить более-менее неплохие результаты, правда, есть например и python+Qt, да и биндинги к другим языкам.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Решено. Каковы преимущества в с++?

Сообщение eddy »

diesel писал(а):
24.07.2010 11:48
у С своя ниша применения, и никто его от туда двигать не собирается: это как раз там где "писали бы на языках ассемблера, но на С понятнее, а результат тот же"

Ну не скажите. Я все свои CGI, программы для математической обработки потоковых данных, openGL'ные GUI и т.п. пишу только на С. Хотя бы потому, что в моих задачах объектно-ориентированный подход выигрыша по уменьшению количества кода или структуризации программы не даст; перегрузка операторов мне тоже не нужна. Как мне кажется, ниша С++ - сверхбольшие проекты с огромным количеством связей, логически разделенными структурами и т.п. деталями, которые проще описать в С++, нежели С.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение azsx »

кошмар!
Спасибо сказали:
math
Сообщения: 313
Статус: Ъ участник
ОС: LMDE

Re: Решено. Каковы преимущества в с++?

Сообщение math »

Portnov писал(а):
23.07.2010 20:05
C++ - один из самых сложных ЯП, сложнее его только эзотерические языки типа Malbolge. В нынешних реалиях знать основы c++ не повредит, но начинать на этом языке новые большие проекты противопоказано.

это ещё почему? сложный - да, пожалуй, но вариантов-то нет. какой ещё есть компилируемый высокоэффективный объектно-ориентированный язык, в котором нет виртуальной машины, нет сборщика мусора, строгая типизация, переменные можно описывать в любом месте и есть поддержка исключений?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено. Каковы преимущества в с++?

Сообщение Portnov »

math писал(а):
24.07.2010 12:30
в котором нет виртуальной машины, нет сборщика мусора,

Это теперь преимущества? ню-ню :) По остальным пунктам многие из вышеперечисленных подходят. По всем пунктам (вроде бы) подходит, например, D.

Такие ситуации, где такой низкий уровень языка является преимуществом, бывают. Но их мало. Кажется, самый широкий класс таких ситуаций - это геймдев.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Решено. Каковы преимущества в с++?

Сообщение diesel »

eddy писал(а):
24.07.2010 12:01
diesel писал(а):
24.07.2010 11:48
у С своя ниша применения, и никто его от туда двигать не собирается: это как раз там где "писали бы на языках ассемблера, но на С понятнее, а результат тот же"

Ну не скажите. Я все свои CGI, программы для математической обработки потоковых данных, openGL'ные GUI и т.п. пишу только на С.

ну это тоже вполне вписывается в нишу С, может правда не в "ассемблерный" ее кусок :)

eddy писал(а):
24.07.2010 12:01
мне кажется, ниша С++ - сверхбольшие проекты с огромным количеством связей, логически разделенными структурами и т.п. деталями, которые проще описать в С++, нежели С.

а еще проще на java, или C#
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено. Каковы преимущества в с++?

Сообщение serzh-z »

diesel писал(а):
24.07.2010 12:35
а еще проще на java, или C#
У меня такое ощущение, что приложения Java будут тормозить *на любой* системе. И даже через 10 лет, когдла мощность процессоров ещё больше возрастёт, авторы JVM сделают что-то ещё так, что эти приложения всё равно будут выполняться медленно.
Спасибо сказали: