Russian Qt Forum
Ноябрь 22, 2024, 20:48
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Так что же надо изучать?
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Так что же надо изучать? (Прочитано 20251 раз)
Igors
Джедай : наставник для всех
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
Сообщений: 452
Re: Так что же надо изучать?
«
Ответ #1 :
Май 13, 2014, 13:10 »
имхо:
- базовые знания архитектуры железа и ОС для кот. пишешь проги, напр. кэши процессора как работают, что такое переключение контекста, big/little-endian системы и сотни других вещей - вобщем помнить то, о чем учат в ВУЗах
- язык C, язык С++ 2003 и язык C++11 - уже прошло достаточно времени с его появления, грешно не знать что там добавилось и как это юзать.
- STL. Структуры данных и методы/алгоритмы - понимать и уметь объяснить где какая сложность и почему
- паттерны проектирования - маст хэв знать, уметь объяснить что дает и что забирает применение каждого из десятка-полутора паттернов
- boost - вещь объемная, надо знать хотя бы что там есть, чтобы при необходимости вернуться, посмотреть глубже и заюзать, если подходит.
- какие-нибудь системы сборки (CMake, scons, ...)
- компилятор, его опции (напр. чем отличаются уровни оптимизации)
- дебаггинг, профайлинг, статический анализ кода - знать как это делается, какие тулзы лучшие
- doxygen-документирование
Записан
Bepec
Гость
Re: Так что же надо изучать?
«
Ответ #2 :
Май 13, 2014, 13:23 »
Т.е. вы описали курс длиной лет так в 20-25
А работать когда?
Я считаю что нужно знать где можно всё это посмотреть
А применять на практике по надобности.
Записан
OKTA
Гость
Re: Так что же надо изучать?
«
Ответ #3 :
Май 13, 2014, 15:32 »
Поддерживаю мнение о необходимости знания "где посмотреть", а не досконального заучивания.
А джентельменские наборы всплывают из современных вакансий в больше степени я считаю - посмотришь порой, так глаза на лоб лезут, сколько всего знать надо
. Конечно, хорошее знание библиотек это несомненный плюс, но часто это и дикий минус (когда знание это поверхностное, что является частым явлением). Все знакомы с ситуацией, когда на форум приходит новичок и начинает спрашивать, что лучше Qt или C++..
Или, что еще хуже, когда человек имеет какие-то знания о языке и почитав пару статей, что, к примеру, std и boost дают нереальные преимущества в программировании, начинает везде совать увиденные им конструкции, не задумываясь о том, а как на самом деле работает, а как сделать оптимизированней, а как будет в конце концов просто лучше и т.д. Я вот сейчас сижу и спокойно программирую без boost-a к примеру, но знаю, что там есть такие-то и такие-то вещи, которые то-то и то-то могут упросить, но до сих пор не было необходимости даже вчитываться, т.к. обхожусь стандартными средствами самого языка. У меня честно говоря вообще присутствует неприязнь к всевозможным хитроумным библиотекам и постоянная мысль, что любой код должен быть максимально простым и при этом эффективным, не дает мне спать
Наверно на меня повлиял С, в котором все по-спартански аскетично, но я считаю, это хорошее влияние. Каждый раз, когда например надо работать со строкой, я 10 раз думаю, что использовать QString (ну или тот же std::string) или же просто char*. Конечно, многие меня обвинят, что это глупо и надо забыть о char*, раз работаешь с С++, но я уверен с таких простых вещей все и начинается - или ты думаешь, что используешь или просто используешь. Ну, а вообще, мое последнее мнение - настоящий программист должен иметь хорошее алгоритмическое мышление и все. А знать 10 паттернов, 10 систем сборки, 10 библиотек, и еще кучу всего всего - абсолютно бесполезно. Извиняюсь за небольшой оффтоп, но как-то накипело
Записан
vipet
Бывалый
Offline
Сообщений: 452
Re: Так что же надо изучать?
«
Ответ #4 :
Май 13, 2014, 16:44 »
Цитата: Bepec от Май 13, 2014, 13:23
Т.е. вы описали курс длиной лет так в 20-25
А работать когда?
Я считаю что нужно знать где можно всё это посмотреть
А применять на практике по надобности.
конечно, шлифовать мастерство можно и нужно всю жизнь. Но то, что я описал - это, знаючи С++ 2003, без С++11, буста и паттернов, это скорее 1 год, а не 25 лет
Записан
Bepec
Гость
Re: Так что же надо изучать?
«
Ответ #5 :
Май 13, 2014, 16:58 »
Если без реального применения знаний, просто затюкать как в школе/институте, то и недели хватит. Затюкал, сдал, забыл. А я под знанием имею в виду глубокое знание. Когда знание есть и подтверждено практическим пользованием. А чтобы попользоваться в реальных задачах тем же бустом - как минимум нужно проектов 80+ поднять и серьёзных.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Так что же надо изучать?
«
Ответ #6 :
Май 13, 2014, 17:04 »
Цитата: Bepec от Май 13, 2014, 16:58
А чтобы попользоваться в реальных задачах тем же бустом - как минимум нужно проектов 80+ поднять и серьёзных.
Очередной бред. Посмотрите на m_ax, он освоил spirit за несколько дней и спокойно применяет его в реальных задачах.
А в бусте есть ещё 100500 удобных и простых библиотек, которыми можно пользоваться посмотрев пару примеров.
Сами придумываете страшилки и сами их боитесь.
Записан
Bepec
Гость
Re: Так что же надо изучать?
«
Ответ #7 :
Май 13, 2014, 17:11 »
to Old: m_ax освоил 1/4 часть спирита и освоил её % на 20 где то, не более
Надо видеть весь потенциал. У спирита возможностей дофигища
Даже обычный Си++ функционал не используется полностью никем. О некоторых зарезервированных словах многие узнают только когда учебник открывают
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Так что же надо изучать?
«
Ответ #8 :
Май 13, 2014, 17:18 »
Цитата: Bepec от Май 13, 2014, 17:11
to Old: m_ax освоил 1/4 часть спирита и освоил её % на 20 где то, не более
Это не имеет значения, главное он уже им пользуется и получает от этого профит, потратив на это несколько дней. А дальше можно шлифовать и знания и решения.
Цитата: Bepec от Май 13, 2014, 17:11
У спирита возможностей дофигища
Ну так поделитесь со мной, что там у него за возможности.
Записан
Bepec
Гость
Re: Так что же надо изучать?
«
Ответ #9 :
Май 13, 2014, 17:22 »
Он изучил qi.
Остались
Classic. Старая версия Spirit для слоупоков. Продокументирована очень хорошо, но от некоторых хаков и синтаксиса мозги заворачиваются трубочкой.
Karma. Генератор генераторов. Позволяет выводить структуры данных с помощью того же самого синтаксиса, которым они разбираются из текста. Из девелоперского maillist можно сделать вывод, что Karma даже быстрее, чем boost::format.
Lex. Генератор лексических анализаторов.
PS хе хе хе, вы не знали этого? я удивлен.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Так что же надо изучать?
«
Ответ #10 :
Май 13, 2014, 17:42 »
Вы мне статью с хабра процитировали?
Не, вы мне своими словами расскажите, что там за "возможностей дофигища"? Где удобно применять, когда, для чего? Может и правда стоящая вещь?
Записан
Bepec
Гость
Re: Так что же надо изучать?
«
Ответ #11 :
Май 13, 2014, 18:15 »
100% бессмысленный комментарий от Old. Old - я с вами не хочу общаться
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Так что же надо изучать?
«
Ответ #12 :
Май 13, 2014, 18:22 »
Цитата: Bepec от Май 13, 2014, 18:15
100% бессмысленный комментарий от Old. Old - я с вами не хочу общаться
Понимаю. Для вас он бессмысленный потому, что сказать вам нечего.
Вы думаете мне хочется опровергать весь этот бред, который вы несете чуть ли не в каждой теме?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Так что же надо изучать?
«
Ответ #13 :
Май 14, 2014, 09:22 »
Ну вот напр OpenGL. Хочу я его учить или нет - значения не имеет, пока я не выучу и не выпишу все вызовы - работать не будет. А рисовать без OpenGL сейчас несерьезно. GLSL - то же самое, нет GLSL - нет нормального шейдинга. Остается выбор "обертки", но он не так уж велик. Таким же образом жизнь заставляет меня учить и др вещи, напр скоро придется заниматься Objective-C, обойти его никак не удается.
Но вот зачем так рьяно изучать std/boost - хз. Нет, конечно понятие иметь надо, с этим никто не спорит. Но зачем же делать эти вещи "культовыми"? Никаких оснований для этого я лично не видел. Далеко не все open-source юзают буст, а многие даже обходятся без std. Кто знает, может эти ветки просто тупиковые?
Что касается практических примеров их использования - то каждый раз ситуация одна и та же. Богатырская сила тулзов охотно демонстрируется там где и без них проблем никаких. Если бы человек просто сказал что ему это изучение интересно - нема квешнзов, на здоровье. Но вместо этого он упорно доказывает как хорош тул, и как плохо (совершенно невозможно) жить без него. Но это производит совсем не то впечатление - возникает (обоснованное) подозрение что он не может решить простую задачку средствами языка
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Так что же надо изучать?
«
Ответ #14 :
Май 14, 2014, 09:34 »
Цитата: Igors от Май 14, 2014, 09:22
Но вот зачем так рьяно изучать std/boost - хз.
А кто их так рьяно изучает?
Их нужно рьяно изучать только "программистам среднего уровня", остальные ими просто пользуются.
Цитата: Igors от Май 14, 2014, 09:22
Что касается практических примеров их использования - то каждый раз ситуация одна и та же. Богатырская сила тулзов охотно демонстрируется там где и без них проблем никаких.
Ага, как только нужно два инта из строки достать или финдреплейс на QString сделать, желающих толпа, а как только телефонный номер разобрать или паспортные данные, сразу остаются единицы, а если еще попросить от QString отказаться, то все - нет никого.
Цитата: Igors от Май 14, 2014, 09:22
Но вместо этого он упорно доказывает как хорош тул, и как плохо (совершенно невозможно) жить без него.
Не знаю про кого именно речь, но если инструмент хорошо справляется с определенными задачами и я это лично проверял, то я всегда советую его в качестве одного из возможных решений.
Цитата: Igors от Май 14, 2014, 09:22
Но это производит совсем не то впечатление - возникает (обоснованное) подозрение что он не может решить простую задачку средствами языка
Точно, многие вообще ничего не смогут сделать средствами языка, если у них Qt отобрать с его QString.
«
Последнее редактирование: Май 14, 2014, 09:46 от Old
»
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...