Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Программирование на С++  (Прочитано 7400 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gekko

  • Участник
  • *
  • Сообщений: 222
    • Просмотр профиля
Re: Программирование на С++
« Ответ #45 : 24 Октября 2012, 22:39:53 »
Gekko, можно долго препираться, лень. Говорите «Никто не заставляет пользоваться всеми средствам которые предоставляет С++ и которые возможно излишни.» Задаю себе логичный вопрос, а нафига вообще использовать Си++, если его возможности излишни в 95% случаев? Нынче мне более чем хватает олдскульной Модулы. Си++ - это микроскоп для гвоздей. Или ракета для поездок в булочную. Он не нужен :)

Ну 95% это вы конечно преувеличили.... Конечно, тут можно спорить до бесконечности и каждый будет по своему прав, но даже если, что-то сегодня в С++ кажется лишним, в будущем это может еще пригодится. Мне не особо нужны шаблоны классов, но я допускаю, что в будущем может быть и понадобятся. Исильдур правильную мысль высказал, должен быть "запас производительности", я сталкивался с таким понятием на стройке, когда например строится котельная, на 30% большей мощности, чем нужно фактически, потому, что в будущем возможно микрорайон расширится, построятся новые дома и их нужно будет подключить к отоплению. Тут похожая ситуация. Нафига вообще использовать С++? Потому, что С++ дает скорость работы программы. Скорость которую не дает ни JAVA ни C# и скорее всего Модула тоже не даст эту скорость. Очень важно когда графический интерфейс работает быстро, его не замечаешь и тогда в программе приятно работать, но когда программа притормаживает, это сразу раздражает.
Xubuntu 12.04 LTS с Xfce 4.10

Оффлайн Исильдур

  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: Программирование на С++
« Ответ #46 : 25 Октября 2012, 00:28:39 »
Наверно каждый из нас будет использовать тот процент от всей мощности языка, на сколько позволяют познания.
Разработчики сделали его таким, потому что требования к программам написаных на нем очень высокие.
Наврят ли они хотели усложнить жизнь программистам, создавая всякие "фичи", наверно без этого обойтись было нельзя.
Бейсик простой язык, но от него и не требуют создания сложных приложений.
Тема плавно перешла в обсуждение слабых и сильных сторон С++, я его начал изучать совсем недавно поэтому принимать участие в дискуссии не могу. Просто выражаю свою "гражданскую позицию"))
На самом деле разговор очень понравился, всем желаю успехов!
 

Оффлайн Дядюшка Ау

  • Участник
  • *
  • Сообщений: 123
  • Дайте две!
    • Просмотр профиля
Re: Программирование на С++
« Ответ #47 : 25 Октября 2012, 09:13:07 »
Мощности и возможности C++, честно говоря, таковыми кажутся из-за пиара вокруг этого языка. Монструозные конструкции в нем - это прямое наследство того, что нужно было соблюсти концептуальную совместимость с чистым С. Давайте добавим классы, ага круто. Давайте добавим шаблоны, ага круто, но надо, чтобы все это вписывалось в существующую идеологию, поэтому мы здесь сделаем стопицот скобочек и запятых и двоеточий, а еще шаблоны должны быть видны в текущей единице трансляции, отсюда сплошные inline-ы, а еще есть модификатор const, потому что, круто же запретить менять, что нельзя менять. Правда вылезают другие уши и const не скрещивается с не-const... О-ля-ля, что это у нас такое получилось? Блин а в Яве еще лямбды есть, давайте запилим лямбды, но чтобы они вписывались в текущие концепции. Придется еще скобочек и черточек ввести...

Я к тому, что все те же фичи можно было бы сделать более простыми, если бы не надо было в одном языке совмещать и адресную арифметику указателей и абстракное программирование с помощью шаблонов.
« Последнее редактирование: 25 Октября 2012, 09:15:22 от Дядюшка Ау »
Ubuntu 12.04 для поколупацца, Win7 для поработать

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Программирование на С++
« Ответ #48 : 26 Октября 2012, 06:19:45 »
Дядюшка Ау,
прямо больно от вашего поста.
зачем так мучаться? используйте то что ваша душа приемлет или страховым агентом =) но там работа с людьми а им еще больше скобочек и двоеточий нужно

Оффлайн NetFly

  • Новичок
  • *
  • Сообщений: 9
  • работаю с debian, учу с++
    • Просмотр профиля
Re: Программирование на С++
« Ответ #49 : 26 Октября 2012, 09:30:05 »
Ребят вы даже не заметили, как превратили тему в мерение "письками". Чисто как лузер в программирование считаю, что не важно на каком языке вы работаете. круче машинного кода и ассемблера нифига нет!!!
Можно сделать все что угодно на любом из языков, с моей точки зрения ситуация такова, что мы уже отошли от написания максимально "экономичного" кода, т.к. ресурсы современных компьютеров позволяют меньше греть голову на тему "как мне все запихавть в 10кб памяти и чтобы еще и не потерять функционал", именно поэтому пришла(наступает) "эпоха" высокоуровневых языков. Поэтому на сегодняшний день задача перед программистом стоит простая, написать быструю программу и относительно "пофиг" сколько она памяти жрет(в разумных пределах). Поэтому пренебрегать не стоит и высокоуровневыми языками.
Одно остается неизменным, чтобы понять что и как делать правильно необходимо знать как выполнить эти задачи на машинном уровне с максимальной производительностью, а для этой цели необходимо понимание и низкоуровневых языков, т.к. это приводит к частичному пониманию как с этими кодами работают "куски железа", за которыми каждый из нас сейчас сидит и чуть ли кипятком не писает споря, что лучше.

Еще разок повторюсь, что начал изучать с++ с планами на углубление в с. Учусь по книжке:"Лафоре Р. - Объектно-ориентированное программирование в С++ (4-е изд.) 2004".
А теперь проблему в студию: Дошел до манипулятора setw там есть вот такая вот тема:
//width2.cpp
//применение манипулятора setw
#include <iostream>
#include <iomanip>              // для использования setw
using namespace std;
int main()
{
long pop1 = 8425785, pop2 = 47, pop3 = 9761;
cout << setw(9) << "Город" << setw(12)
<< "Население" << endl
<< setw(9) << "Москва" << setw(12) << pop1 << endl
<< setw(9) << "Киров" << setw(12) << pop2 << endl
<< setw(9) << "Угрюмовка" << setw(12) << pop3 << endl;
return 0;
Вывод с этой программы должен получиться такой:
Город          Население
Москва           8425785
Киров                            47
Угрюмовка           9761

ну и далее текст:"Манипулятор setw печатает число или строку, следующую за ним в потоке,
в поле фиксированной длины n, где n — аргумент манипулятора setw(n). Значе-
ние переменной, помещаемой в поле, выравнивается справа."

Почему setw не производит выравние, а работает как операция сдвига? т.е. если я компилирую програмку получаю вот такой результат,:
Москва     8425785
Киров          47
Угрюмовка        9761
вместо указанного в книжке(см. рез выше)??

Чтобы привести вывод к виду указанному в книжке при помощи этого манипулятора решил изменить значение (n) и сделал вот так:
#include <iostream>     // for cout
#include <iomanip>      // for setw
int main()
{
        long pop0=8425785, pop1=47, pop3=9761; 
        std::cout << std::setw(9)<<"Город"<<std::setw(60)<<"население"<<std::endl
        <<std::setw(9)<<"Москва"<<std::setw(50)<<pop0<<std::endl
        <<std::setw(9)<<"Киров"<<std::setw(51)<<pop1<<std::endl
        <<std::setw(9)<<"Угрюмовка"<<std::setw(47)<<pop3<<std::endl;
        return 0;
}

Кароче не увидел я никакого выравнивания "справа". мб я чет не так сделал или не так что то понял?
P.S.: Я работаю на debian.
« Последнее редактирование: 26 Октября 2012, 09:41:36 от NetFly »

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: Программирование на С++
« Ответ #50 : 26 Октября 2012, 10:04:56 »
Дядюшка Ау, любой ЯП избыточен. Однако чем ниже уровень ЯП (самый низкий он у Си и Асма) тем больше возможностей... Однако большие возможности увеличивают объем кода необходимого для их реализации... Сколько нужно писать функций и библиотек... Это особенности, а не достоинства или недостатки.

Пользователь решил продолжить мысль 26 Октября 2012, 10:13:38:
NetFly, вот с
Цитировать
Чисто как лузер в программирование
я соглашусь, потому что дальнейшее, что Вы написали в посте является расшифровкой процитированного.
Цитировать
Кароче не увидел я никакого выравнивания "справа". мб я чет не так сделал или не так что то понял?
А проблема выравнивания в консоли не только у Вас. Это распространенная проблема.

Кстати 2004 год - это слишком старая книга.
« Последнее редактирование: 26 Октября 2012, 10:13:38 от astrobeglec »
Я вернулся...

Оффлайн NetFly

  • Новичок
  • *
  • Сообщений: 9
  • работаю с debian, учу с++
    • Просмотр профиля
Re: Программирование на С++
« Ответ #51 : 26 Октября 2012, 11:06:59 »
Цитировать
Кстати 2004 год - это слишком старая книга.
рекомендации есть по книжкам? буду признателен.

Оффлайн mastepaner

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Программирование на С++
« Ответ #52 : 26 Октября 2012, 15:33:17 »
А теперь проблему в студию: Дошел до манипулятора setw
Я копнул вашу проблему, и отрыл следующее:
Заведён баг http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33852 про ваш пример.
Но понимающие люди в комментариях разъяснили, что это вовсе и не баг,
и посоветовали обратить внимание на sync_with_stdio(false)
Я погуглил по этому слову и отрыл довольно свежую, октября этого года, статью:
http://www.cyberforum.ru/blogs/99405/blog807.html
Вчитайтесь в неё, ужаснитесь, и добавьте себе в программу как минимум вот это
Цитировать
    std::locale::global( std::locale( "ru_RU.UTF8" ) );
    std::ios_base::sync_with_stdio( false );
А скорее всего, и class wformat тоже потребуется.


А я пока буду с замиранием сердца ждать "с++11 way" работы с русскими буквами в utf-8 :(

Lifewalker

  • Гость
Re: Программирование на С++
« Ответ #53 : 26 Октября 2012, 20:51:33 »
Потому, что С++ дает скорость работы программы.
Свежо преданьице... Скорость даёт не язык, а компилятор. И тут вырисовывается банальная закономерность: чем проще и логичнее язык, тем проще его компилировать-оптимизировать, тем проще и короче выходит машинный код, тем быстрее он выполняется. :) Конечно, можно написать оптимизирующий компилятор Си++, но какой ценой.

Оффлайн gerk787

  • Автор темы
  • Любитель
  • *
  • Сообщений: 99
    • Просмотр профиля
Re: Программирование на С++
« Ответ #54 : 26 Октября 2012, 21:53:31 »
Я в полном ступоре не знаю какой же все таки язык выбрать, глаза бегут, хотел начать с паскаля но подумал что его мало где можно применит, потом долго придется от него отвыкать. Программисты посоветуйте пожалуйста с чего начать? Сразу скажу хочу научиться программированию для заработка денег.

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: Программирование на С++
« Ответ #55 : 26 Октября 2012, 22:40:02 »
Я в полном ступоре не знаю какой же все таки язык выбрать, глаза бегут, хотел начать с паскаля но подумал что его мало где можно применит, потом долго придется от него отвыкать. Программисты посоветуйте пожалуйста с чего начать? Сразу скажу хочу научиться программированию для заработка денег.
Малые деньги быстро - бейсик, большие деньги, но долго учиться - си. По середине - Перл, Питон, Ява, ну и пхп с хтмл.
Я вернулся...

Lifewalker

  • Гость
Re: Программирование на С++
« Ответ #56 : 27 Октября 2012, 00:47:46 »
Сразу скажу хочу научиться программированию для заработка денег.
1С:Предприятие.

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Re: Программирование на С++
« Ответ #57 : 27 Октября 2012, 00:59:39 »
gerk787,
Язык не имеет значения...
Извините, я все еще учусь

Lifewalker

  • Гость
Re: Программирование на С++
« Ответ #58 : 27 Октября 2012, 01:08:45 »
SergeyIT,
Вы не совсем правы. Б.Страуструп посвятил главу в монографии обсуждению соображений о неразрывном единстве языка и хода мыслей программиста. Одни языки дисциплинируют, другие дают ощущение ложного могущества. Настаивал, настаиваю и буду настаивать, что Паскаль - гениальный язык для обучения и создания небольших проектов. В этом качестве ему нет равных и скорее всего никогда не будет.

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Re: Программирование на С++
« Ответ #59 : 27 Октября 2012, 01:33:11 »
Lifewalker,
Это почему не прав? Чтобы зарабатывать деньги надо найти работу. Но язык при этом значения не имеет.
Лучше знать их несколько, не обязательно глубоко... или нет?
Извините, я все еще учусь

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.