Russian Qt Forum
Ноябрь 23, 2024, 02:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Так что же надо изучать?  (Прочитано 20290 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Май 09, 2014, 11:06 »

Добрый день

Тема http://www.prog.org.ru/index.php?topic=26958.msg194787#msg194787 безнадежно свалилась в холивар. Насколько я понимаю, утверждается следующее: "настоящий" программист на С++ ОБЯЗАН в совершенстве владеть

- std, boost и template (дополняйте)

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

А не посмотреть ли как делают другие? Возьмем open-source которые доказали свою силу на деле и посмотрим чего там и сколько. Ну судя по исходникам Qt - там все совсем темные Улыбающийся Ладно, пусть это исключение. Вот мне предстоит задействовать это  http://graphics.pixar.com/opensubdiv/. С чем-то (из того что там используется) я знаком, с чем-то только поверхностно. Но, странное дело, при чтении исходников я ни разу не ощутил "недостаток знаний" Улыбающийся Я не увидел там ни одной монструозной конструкции которая выбила бы меня из колеи.

Больше примеров (с той и другой стороны) приветствуется.
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #1 : Май 13, 2014, 13:10 »

имхо:
- базовые знания архитектуры железа и ОС для кот. пишешь проги, напр. кэши процессора как работают, что такое переключение контекста, big/little-endian системы и сотни других вещей - вобщем помнить то, о чем учат в ВУЗах
- язык C, язык С++ 2003 и язык C++11 - уже прошло достаточно времени с его появления, грешно не знать что там добавилось и как это юзать.
- STL. Структуры данных и методы/алгоритмы - понимать и уметь объяснить где какая сложность и почему
- паттерны проектирования - маст хэв знать, уметь объяснить что дает и что забирает применение каждого из десятка-полутора паттернов
- boost - вещь объемная, надо знать хотя бы что там есть, чтобы при необходимости вернуться, посмотреть глубже и заюзать, если подходит.
- какие-нибудь системы сборки (CMake, scons, ...)
- компилятор, его опции (напр. чем отличаются уровни оптимизации)
- дебаггинг, профайлинг, статический анализ кода - знать как это делается, какие тулзы лучшие
- doxygen-документирование


Записан
Bepec
Гость
« Ответ #2 : Май 13, 2014, 13:23 »

Т.е. вы описали курс длиной лет так в 20-25 Улыбающийся А работать когда?
Я считаю что нужно знать где можно всё это посмотреть Улыбающийся А применять на практике по надобности.
Записан
OKTA
Гость
« Ответ #3 : Май 13, 2014, 15:32 »

Поддерживаю мнение о необходимости знания "где посмотреть", а не досконального заучивания.  Улыбающийся
А джентельменские наборы всплывают из современных вакансий в больше степени я считаю - посмотришь порой, так глаза на лоб лезут, сколько всего знать надо  Смеющийся. Конечно, хорошее знание библиотек это несомненный плюс, но часто это и дикий минус (когда знание это поверхностное, что является частым явлением). Все знакомы с ситуацией, когда на форум приходит новичок и начинает спрашивать, что лучше Qt или C++..  Плачущий Или, что еще хуже, когда человек имеет какие-то знания о языке и почитав пару статей, что, к примеру, std и boost дают нереальные преимущества в программировании, начинает везде совать увиденные им конструкции, не задумываясь о том, а как на самом деле работает, а как сделать оптимизированней, а как будет в конце концов просто лучше и т.д. Я вот сейчас сижу и спокойно программирую без boost-a к примеру, но знаю, что там есть такие-то и такие-то вещи, которые то-то и то-то могут упросить, но до сих пор не было необходимости даже вчитываться, т.к. обхожусь стандартными средствами самого языка. У меня честно говоря вообще присутствует неприязнь к всевозможным хитроумным библиотекам и постоянная мысль, что любой код должен быть максимально простым и при этом эффективным, не дает мне спать  Смеющийся Наверно на меня повлиял С, в котором все по-спартански аскетично, но я считаю, это хорошее влияние. Каждый раз, когда например надо работать со строкой, я 10 раз думаю, что использовать QString (ну или тот же std::string) или же просто char*. Конечно, многие меня обвинят, что это глупо и надо забыть о char*, раз работаешь с С++, но я уверен с таких простых вещей все и начинается - или ты думаешь, что используешь или просто используешь. Ну, а вообще, мое последнее мнение - настоящий программист должен иметь хорошее алгоритмическое мышление и все. А знать 10 паттернов, 10 систем сборки, 10 библиотек, и еще кучу всего всего - абсолютно бесполезно. Извиняюсь за небольшой оффтоп, но как-то накипело  Смеющийся
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #4 : Май 13, 2014, 16:44 »

Т.е. вы описали курс длиной лет так в 20-25 Улыбающийся А работать когда?
Я считаю что нужно знать где можно всё это посмотреть Улыбающийся А применять на практике по надобности.

конечно, шлифовать мастерство можно и нужно всю жизнь. Но то, что я описал - это, знаючи С++ 2003, без С++11, буста и паттернов, это скорее 1 год, а не 25 лет Улыбающийся
Записан
Bepec
Гость
« Ответ #5 : Май 13, 2014, 16:58 »

Если без реального применения знаний, просто затюкать как в школе/институте, то и недели хватит. Затюкал, сдал, забыл. А я под знанием имею в виду глубокое знание. Когда знание есть и подтверждено практическим пользованием. А чтобы попользоваться в реальных задачах тем же бустом - как минимум нужно проектов 80+ поднять и серьёзных.

Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Май 13, 2014, 17:04 »

А чтобы попользоваться в реальных задачах тем же бустом - как минимум нужно проектов 80+ поднять и серьёзных.
Очередной бред. Посмотрите на m_ax, он освоил spirit за несколько дней и спокойно применяет его в реальных задачах. Улыбающийся
А в бусте есть ещё 100500 удобных и простых библиотек, которыми можно пользоваться посмотрев пару примеров.
Сами придумываете страшилки и сами их боитесь. Улыбающийся
Записан
Bepec
Гость
« Ответ #7 : Май 13, 2014, 17:11 »

to Old: m_ax освоил 1/4 часть спирита и освоил её % на 20 где то, не более Улыбающийся Надо видеть весь потенциал. У спирита возможностей дофигища Улыбающийся
Даже обычный Си++ функционал не используется полностью никем. О некоторых зарезервированных словах многие узнают только когда учебник открывают Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #8 : Май 13, 2014, 17:18 »

to Old: m_ax освоил 1/4 часть спирита и освоил её % на 20 где то, не более Улыбающийся
Это не имеет значения, главное он уже им пользуется и получает от этого профит, потратив на это несколько дней. А дальше можно шлифовать и знания и решения.

У спирита возможностей дофигища Улыбающийся
Ну так поделитесь со мной, что там у него за возможности.
Записан
Bepec
Гость
« Ответ #9 : Май 13, 2014, 17:22 »

Он изучил qi.
Остались
Classic. Старая версия Spirit для слоупоков. Продокументирована очень хорошо, но от некоторых хаков и синтаксиса мозги заворачиваются трубочкой.
Karma. Генератор генераторов. Позволяет выводить структуры данных с помощью того же самого синтаксиса, которым они разбираются из текста. Из девелоперского maillist можно сделать вывод, что Karma даже быстрее, чем boost::format.
Lex. Генератор лексических анализаторов.

PS хе хе хе, вы не знали этого? я удивлен.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #10 : Май 13, 2014, 17:42 »

Вы мне статью с хабра процитировали? Улыбающийся
Не, вы мне своими словами расскажите, что там за "возможностей дофигища"? Где удобно применять, когда, для чего? Может и правда стоящая вещь? Улыбающийся
Записан
Bepec
Гость
« Ответ #11 : Май 13, 2014, 18:15 »

100% бессмысленный комментарий от Old. Old - я с вами не хочу общаться Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #12 : Май 13, 2014, 18:22 »

100% бессмысленный комментарий от Old. Old - я с вами не хочу общаться Улыбающийся
Понимаю. Для вас он бессмысленный потому, что сказать вам нечего. Улыбающийся
Вы думаете мне хочется опровергать весь этот бред, который вы несете чуть ли не в каждой теме?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Май 14, 2014, 09:22 »

Ну вот напр OpenGL. Хочу я его учить или нет - значения не имеет, пока я не выучу и не выпишу все вызовы - работать не будет. А рисовать без OpenGL сейчас несерьезно. GLSL - то же самое, нет GLSL - нет нормального шейдинга. Остается выбор "обертки", но он не так уж велик. Таким же образом жизнь заставляет меня учить и др вещи, напр скоро придется заниматься Objective-C, обойти его никак не удается.

Но вот зачем так рьяно изучать std/boost - хз. Нет, конечно понятие иметь надо, с этим никто не спорит. Но зачем же делать эти вещи "культовыми"? Никаких оснований для этого я лично не видел. Далеко не все open-source юзают буст, а многие даже обходятся без std. Кто знает, может эти ветки просто тупиковые?

Что касается практических примеров их использования - то каждый раз ситуация одна и та же. Богатырская сила тулзов охотно демонстрируется там где и без них проблем никаких. Если бы человек просто сказал что ему это изучение интересно - нема квешнзов, на здоровье. Но вместо этого он упорно доказывает как хорош тул, и как плохо (совершенно невозможно) жить без него. Но это производит совсем не то впечатление - возникает (обоснованное) подозрение что он не может решить простую задачку средствами языка  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Май 14, 2014, 09:34 »

Но вот зачем так рьяно изучать std/boost - хз.
А кто их так рьяно изучает? Улыбающийся
Их нужно рьяно изучать только "программистам среднего уровня", остальные ими просто пользуются. Улыбающийся

Что касается практических примеров их использования - то каждый раз ситуация одна и та же. Богатырская сила тулзов охотно демонстрируется там где и без них проблем никаких.
Ага, как только нужно два инта из строки достать или финдреплейс на QString сделать, желающих толпа, а как только телефонный номер разобрать или паспортные данные, сразу остаются единицы, а если еще попросить от QString отказаться, то все - нет никого. Улыбающийся

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

Но это производит совсем не то впечатление - возникает (обоснованное) подозрение что он не может решить простую задачку средствами языка  Улыбающийся
Точно, многие вообще ничего не смогут сделать средствами языка, если у них Qt отобрать с его QString. Улыбающийся
« Последнее редактирование: Май 14, 2014, 09:46 от Old » Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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