Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
WoL
Вчера, 13:13
 Darthman
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
TESTAMENT - Тактичес…
15.11.2023
 KregHek
RES - Движок для пик…
27.09.2023
 rimush
177 - One Button Str…
20.09.2023
 VoroneTZ
JS 13k contest
13.09.2023
 Mefistofel
184 - Arcade II
14.08.2023
 tiger1025
184 - ?
14.07.2023
 Kaps
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 1,789
новичок: NickName
Обсуждение «Изучение C++»
Страница 2 из 3 < 1 2 3 >
Daemon
Avatar пользователя

Опубликовано 24.07.2014 11:15 (10 лет назад)    #
Daemon написал:
Я бы тоже посоветовал не начинать с С++, особенно если это первый серьезный язык для тебя. Лучше, имхо, C#.
DRON
Avatar пользователя

Опубликовано 24.07.2014 11:33 (10 лет назад)    #
Я наоборот считаю что учиться надо с С потом С++, тогда любой другой язык никогда учить не придется. Просто будешь брать и на нем писать через 2 часов знакомства. Примерно такой же логики придерживаются все нормальные вузы, которые готовят программистов.
Мне когда-то очень тяжело давался переход с Delphi на C++, потом после того, как таки разобрался с С++ (мне потребовалось года 2-3, чтобы чувствовать себя в нем уверенно), очень быстро освоил еще языков 5 наверное.
Сейчас занимаясь продюсированием тупею и потихоньку забываю языки, использую только С++, C# и ObjC в последнее время, порядка 1 000 строк кода в месяц в среднем пишу :)
Darthman
Древний организм
Avatar пользователя

Опубликовано 24.07.2014 11:46 (10 лет назад)    #
DRON, это всё потому, что ты выше написал - книг не читал и вообще ты не программист. Пишу на делфи очень давно. Месяца хватило, чтобы разобраться и начать писать на шарпе. Глупости ты говоришь. Если человек программист, то ему достаточно хорошо, а лучше отлично, знать один ЯП, тогда другие даются легко. И тут нет разницы С это или бейсик.
Считаю что сейчас ценно учить шарп, а не плюсы, если уж на то пошло.

ObjC в последнее время, порядка 1 000 строк кода в месяц в среднем пишу :)

Это не говорит ни о чем.
Анекдот вспоминается: "О... я умею набирать 600 знаков в минуту! - правда? - правда! Но такая херня получается"

У ЯП бывают серьезные отличия, которые заставляют чутка напрячься при их изучении. Но это обычно означает разные области. Например С++ хоть и похож на HLSL, но привыкать придется всеравно. И дело не в синтаксисе. T-SQL тоже не похож ни на яву, ни на делфи. Причем ни синтаксисом, ни принципом.

редакция от Darthman, 24.07.2014 11:51

ZblCoder
Главный Говнюк
Avatar пользователя

Опубликовано 24.07.2014 11:55 (10 лет назад)    #
DRON, при переходе с Delphi на С++ на каком уровне у тебя были знания Delphi раз ты 2-3 года изучал С++ и как ты учил С++? Может ты заходил в С++ пару раз в месяц.
Когда я изучал новые языки я спокойно мог пользоваться другими языками на том же уровне, что и язык с которого перехожу. Это было доказано при изучении PHP, JavaScript, Delphi и C#. Изучал в такой последовательности. Но при познании ООП при работе уже с Delphi я тут же уже мог юзать ООП и в JavaScript, и PHP. Так что не вижу проблемы перехода между языками. Если ты не вундеркинд какой :D

редакция от ZblCoder, 24.07.2014 11:56

DRON
Avatar пользователя

Опубликовано 24.07.2014 14:23 (10 лет назад)    #
Darthman написал:
ObjC в последнее время, порядка 1 000 строк кода в месяц в среднем пишу :)

Это не говорит ни о чем.
Анекдот вспоминается: "О... я умею набирать 600 знаков в минуту! - правда? - правда! Но такая херня получается"

Это было написано к тому, что я считай вообще не прогрммирую, это же крайне маленький объем кода, когда я серьезно занимался работой то это была норма для нескольких дней, как правило для реализации какой-то таски требуется около 500 строк.

Если говорить про языки, то я не соглашусь. С++, как и Delphi например (хоть и в меньшей степени) и еще некоторые языки, заставляет разобраться с тем как устроена работа с памятью и так далее. Если ты будешь писать на С# сразу, то многое ты рискуешь так никогда и не узнать. Собеседовал я в этом году программиста, который использовал только готовые контейнеры на С# и уверен в том что они просто "растягиваются", добиться от него асимптотики ставки в конец вектора или хотя бы понимание про реалоцирование памяти, конечно не удалось. А вообще я много таких вот говнокодеров повидал.

2ZЫ
Ну я на дельфи писал лет 5 наверное к тому моменту. И в один момент отказался от него и начал писать на С++. Писать конечно я начал сразу же и к дельфи уже не возвращался. С первого захода сделал игру на OpenGL вот она http://dronprogs.org/files/sources/kkkill.rar (в каком-то конкурсе участвовала IGDC). Но нормально пользоваться шаблонами, указателями, лямбдами, STL и прочей лажей я начал через несколько лет. Тем более некоторые вещи вроде тех же шаблонов не были доступны тогда в Delphi. Вот спустя года 3 после изучения почувствал что собрал все грабли и могу вроде нормально что-то проектировать и разрабатывать на языке, тогда собственно DGLE2 и начал делать. Шишки собирал на DeeProEngine на котором было сделано только 2 игры в 2008 и 2009 году. А в 2010 появился DGLE2, как-то так. Потом я только подтвердил свои знания уже когда в Wargaming пошел работать, по этому и сужу что 3 года достаточно (при наличие опыта на другом языке), чтобы потом работать С++ программерос с зп выше среднего, скажем так.
ZblCoder
Главный Говнюк
Avatar пользователя

Опубликовано 24.07.2014 14:40 (10 лет назад)    #
DRON написал:
чтобы потом работать С++ программерос с зп выше среднего, скажем так.


Я и еще один знакомый программист получаем выше среднего ЗП за Delphi. Это не зависит от языка, скорей от опыта!
Darthman
Древний организм
Avatar пользователя

Опубликовано 24.07.2014 14:43 (10 лет назад)    #
это же крайне маленький объем кода

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

Если ты будешь писать на С# сразу, то многое ты рискуешь так никогда и не узнать.

Как раз с Мефом обсуждали сегодня. Начинать однозначно лучше с языков с четкой типизацией. Никто не спорит. Но плюсы это плохой старт, он слишком перегружен. Есть языки проще, см. тот же делфи.

А вообще я много таких вот говнокодеров повидал.

А сколько я повидал говнокода, сколько его правил и правлю до сих пор не представляешь. И всё это тоже на ЯП с четкой типизацией, где казалось бы программист должен знать что да как. Однако стоит посмотреть на утечки и видя цифры в сотни и тысячи утекших списков становится плохо. Если человек не понимает что он делает, то разницы с чего он начал нет. Я вот C# начал изучать с книжки CLR via C# чтобы понять что же там внутри и как оно работает. Почему 2.0 это дабл, а 2 это интеджер и не приводится автоматом как в делфях к флоату ни то ни другое. Прочитал и мне всё очень понятно и очень даже логично кажется. А если сразу брать и писать без книжек, то за 2-3 года ты только синтаксис дай Бог весь поймешь.
DRON
Avatar пользователя

Опубликовано 24.07.2014 15:14 (10 лет назад)    #
Так чтобы тема не переходила в холивар, сделаем поправку. Я высказывал свое ИМХО и при нем же и остаюсь.
Как я понял меня неверно поняли я з.п. к языку не привязываю ни в коем разе. Я хотел сказать что 3-х лет изучения С++ было достаточно, чтобы получать зп выше среднего _для_ С++ разработчика. При этом самый высокооплачиваемый язык это Java в интерпрайзе, ну и само собой всегда есть исключения.
С точки зрения кем проще найти работу я погуглил hh по запросам на кол-во вакансий по Питеру:
C++: 293
Delphi: 36
C#: 175
Java: 407 <- сюда много Java Script примешалось

Если вас интересют зарплаты в геймдеве,, то свежие данные по России тут: https://docs.google.com/spreadsheets/d/1b5Nb10wXZy82nhts5Fwi49JHx-cIO17p5y54vUbR24E/edit

редакция от DRON, 24.07.2014 15:15

Wookie
Avatar пользователя

Опубликовано 26.07.2014 03:29 (10 лет назад)    #
"Для чайников" крайне уныло читается, имхо, слишком много воды (серия обязывает :D ), Либерти пока начал читать, потом, скорее всего, перейду на Страуструпа.
Daemon
Avatar пользователя

Опубликовано 26.07.2014 07:27 (10 лет назад)    #
Я изучал С++ с помощью Шилдта, ибо его книжка по C# мне в свое время помогла. Так вот, его книгу по С++ крайне не советую. Полна ошибок даже в первых главах. Проблема в переводе или в первоисточнике - неизвестно.

Страуструпа не читал.
ProSergeant
Avatar пользователя

Опубликовано 26.07.2014 10:08 (10 лет назад)    #
Я вот не пойму чем вам так тяжек с++? По мне он логичен и поэтому прост, если бы мне сразу не говорили типа:"Не начинай с с++, он слишком тяжелый и бла бла бла", то я бы давно начал бы изучать его, мой совет: начинай с с++, и изучай его как в изображении ZbI, я не имею в виду путешествия во времени, а то что сначала начни с переменных, потом функции, структуры, классы, динамические переменные и классы и т.д., а слишком тяжелый бывает ассемблер

Но это лишь мое ИМХО
ProSergeant
Avatar пользователя

Опубликовано 26.07.2014 10:12 (10 лет назад)    #
Да и ассемблер не столько тяжел, сколько его долго расписывать
DRON
Avatar пользователя

Опубликовано 27.07.2014 21:04 (10 лет назад)    #
Ассемблер в современных реалиях уже не нужен. Только чтобы в дебаге понять что случилось (но для этого не нужно на нем уметь писать, достаточно понимать) или если уже что-то очень специфичное, мне за все время ни разу не приходилось его использовать, например. Сейчас С++ в современном мире выступает заменой асму ,)
Dan
Avatar пользователя

Опубликовано 29.07.2014 08:41 (10 лет назад)    #
DRON, посоветуй пару вопросов для собеседования на позицию программиста игр. а то я этим всё чаще и чаще занимаюсь, а одни и те же вопросы задавать уже не интересно.
AtomKrieg
Avatar пользователя

Опубликовано 29.07.2014 18:23 (10 лет назад)    #
По теме: читал Прата. Ок.
Но считаю вначале надо прочитать "Совершенный код" Макконелла, чтобы прочистить чакры.
Если все что советуют не переваривается - смотри на гугле и на хабре. В поисковиках тема топовая.

Для геймдева из контейнеров надо знать: vector, string, map.

Простое двигло для игр на С++ - HGE.

ProSergeant написал:
Я вот не пойму чем вам так тяжек с++? По мне он логичен и поэтому прост, если бы мне сразу не говорили типа:"Не начинай с с++, он слишком тяжелый и бла бла бла", то я бы давно начал бы


Сержант, ты мой кумир. До сих пор не могу отойти от кода на конкурс пиратов :)
pelmenka
Avatar пользователя

Опубликовано 29.07.2014 18:29 (10 лет назад)    #
Ради интереса решил почитать его код. Это копипаста?

редакция от pelmenka, 29.07.2014 20:41

Wookie
Avatar пользователя

Опубликовано 30.07.2014 02:51 (10 лет назад)    #
Какой код? "Совершенный"?
pelmenka
Avatar пользователя

Опубликовано 30.07.2014 03:07 (10 лет назад)    #
сержанта
ProSergeant
Avatar пользователя

Опубликовано 30.07.2014 14:34 (10 лет назад)    #
pelmenka писал:
это копипаста?


Нет, сам писал, кроме images.h там 85% скомуниздил
DRON
Avatar пользователя

Опубликовано 30.07.2014 15:18 (10 лет назад)    #
2ProSergeant
Выложи код на paste code куданить, хочу почитать :))) Если не сложно конечно ) или отдельным архивом.

2Dan
Мой шортлист для собеседования программера, это заметки для меня самого, так что они сумбурны и без пояснений, не обессудьте (:

Математика
Векторы, матрицы, подпространства, базисы, линейные операторы - что про них известно?
Скалярное и векторное произведение, их смысл? (бонус за вывод векторного через определитель смешанной матрицы)
Повернуть вектор - способы? (бонус за гиперкомплексные ака кватернионы)
Какие алгоритмы известны вообще, семейства алгоритмов, например на графах (название и что делает, зачем применяется)?
Асимптотика что такое? O(n)? (бонус за o(n) и tetha(n))

Программирование
Бинарный поиск, сортировка пузырьком, квиксорт и их скорости? (бонус за пирамидальную и еще другие сортировки)
Какие структуры данных есть в STL и чем они отличаются? (бонус за понимание что у них внутри и когда какие используются)
Деревья, зачем? (красно-черное дерево, куча, сортировка кучей)
Алгоритмы из STL, хотя бы 5 любых?
Максимальная сложность вставки N элементов в конец vector (бонус за накопление "монеток")?
Выравнивание полей данных в структурах (пример: struct t { int i; bool b; char c; double d;}; sizeof(t) = ?)? (бонус если понимает как это зависит от компилятора/архитектуры и задает уточняющий вопрос)
Классы что такое, парадигма ООП? (если все правильно ответил, то на бонус спросить про ромбовидное наследование)
Уровни доступа к полям класса (public, private, protected), virtual методы и наследование (public, private и virtual)
VTable, pure virtual что такое?
Модификаторы (static, const, mutable, volatile (если знает, ловим на deadlock'ах ниже))?
Приведение типов cast'ы CPP vs С-style (в чем разница, когда как?)
new vs malloc?
Потоки, кооперативная и вытесняющая многозадачность? (бонус за deadlock и volatile)
Рефакторинг, реинженеринг, const - safe код, это про что?

Графика

Графический конвеер, как устроен?
Как хранить и выводить на экран геометрию?
Модели освещения чем отличаются? (бонус за формулу к любой на выбор, бонус за анизотропную)
Bump Mapping какие бывают, как работает и как реализовать? (бонус за Occlusion parallax mapping на пальцах)
Постобработка изображения, какие бывают? (рассказать как сделать простой Depth of field)
Какие постэффекты можешь придумать с использованием depth buffer?
Forward и Defered lighting?

Задания

Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz».
Что такое односвязный список? Какое время занимает вставка? За 10 минут на бумажке написать ф-ю, которая переставляет задом наперед односвязный список.

Наша любимая задачка про вагоны.

Задания для сениоров

Про указатели.
#include <boost\preprocessor\cat.hpp>

struct Foo
{
int i;
};

int Foo::**p;

namespace _1
{
int const *const *p;
volatile const void *NEXT_P = p;
}

#define NEXT_P BOOST_PP_CAT(p, __COUNTER__)

namespace _2
{
int ***p;
int *const *const *NEXT_P = p;
int **const *NEXT_P = p;
int *const **NEXT_P = p;
int *volatile *volatile *NEXT_P = p;
}

#undef NEXT_P
Что здесь обозначает "int Foo::**p;".
Какие из NEXT_P скомпилируются.

Написать рекурсивный реверс односвязного списка и объяснить, почему такой вариант медленнее итеративного.
Реализовать функцию возведения в степень "template T pow(T x, unsigned n);" за время O(log(n)) (рекурсивный и итеративный варианты).
Как организовать рекурсию в лямбде. (бонус за ответ почему это будет медленнее чем рекурсия в функции)
Страница 2 из 3 < 1 2 3 >
Перейти на форум:
Конкурсы
Открытые конкурсы:
Активных нет
Недавние конкурсы:
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 181 - Pixel Craft 128
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

25,357,582 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.