Ответы пользователя по тегу C++
  • Какие есть хорошие онлайн ресурсы по изучению С++?

    @LowCoder
    Takoi
    Често говоря не совсем понимаю зачем вам нужен именно онлайн ресурс? Есть книги - кончно же Стауструп, я считаю обязателен к прочтению. Если очень сложно (Струструп с нуля будет сложен во многих случаях) то есть очень понятная книга "Моя первая программа на С/С++" автор Нейбауэр А. - очень все внятно там изложено для самых начинающих. Но Страуструп обязателен тут без вариантов. У Страуструпа в конце каждой главы есть упражнения этого будет достаточно для самого начала.
    Будет ОЧЕНЬ!!! (прям именно очень я бы считал это обязательным) полезно перед тем как изучать С++ посвятить 2-4 месяца изучению ассемблера -многие аспекты будут куда более понятно и легко. Моя личная ошибка была в свое время то что я начинал изучение программирования вообще с Паскаля. И когда я стал изучать С/С++ то многие аспекты я даже не понимал что не понимал. Это сильно затруднило жизнь.
    Далее - что бы изучать любой язык, втч и такой сложный и многогранный язык как С++ у которого очень высокий порог вхождения, единственный способ это на нем писать. После того как освоите Страуструпа (а точнее в процессе) нужно на нем писать. Много и разное. Напишие несколько программ - скажем веб-сервер многопоточный, парсер какой нибудь (например медицинских, торговых или биржевых данных), драйвер какой нибудь, что нибудь графическое то (если после этого охота не пропадет этим вообще заниматься :) советую примкнуть к какому нибудь опен сорс проекту который будет вас увлекать и реально нравится. Преимущество в том что вы бесплатно получите обратную связь от реально крутых. Если такой обратной связи нет бросайте этот проект и присоединитесь к другому.
    Еще НУЖНО прочитать Скотт Мейерс - Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов и Скотт Мэйерс - Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
    Потом уже можно прогрессировать почитать обязательно C++ Concurrency in Action, Williams A, можно с осторожностью, что бы не повредить мозг, почитать Александреску и Addison Wesley C++ Template Metaprogramming Concepts Tools and Techniques from Boost and Beyond. Конечно надо перед этим поисользовать boost (так как это наше все). Еще очень посоветую Системное программирование на C++ для Unix, Теренс Чан - очень хорошая и Linux Системное программирование, Роберт Лав.
    Онлайн вы будете все это изучать много дольше. И так путь очень непростой и небыстрый. Хотя возможно стоит того. Хотя рынок труда С++ сейчас снижается на мой взгляд под пятой жавы и это конечно печально.....
    Ответ написан
    2 комментария
  • Как стать программистом в банке?

    @LowCoder
    Takoi
    Работал.
    Устроится можно - тут совершенно правильно подсказали, что изучите требования на сайтах работодателя и постарайтесь под них подстроится. Изучите технологии, которые востребованы в описаниях вакансий. Очень советую написать несколько статей и дать в резюме на них ссылки. Этим хоть как то можно показать свою экспертность. Это ценится. Очень нелишне будут всякие сертификаты. Можно от Майкрософта, очень неплохо от Оракла - оракл часто юзают в банковской сфере. Так же как и Sybase. По MSSQL тоже можно. MCSD не помешает. Жаль по юниксу нет (скажем так лично я не знаю) представительных сертификаций но можно найти что то на BrainBench.
    Из преимуществ работы в банке могу сказать, что наверно у программистов банковских программ скорее выше зарплата. И она достаточно стабильна. На этом пожалуй все преимущества заканчиваются и начинаются недостатки.

    А именно - в банках есть некое негласное разделение золотые воротнички (высший менеджмент, который обитает в своих сферах и редко снисходит - у них там своя вселенная со своими законами своей гравитацией и законами физики) , белые воротнички - клерки и синие. Это уборщики, техперсонал и ... программисты, как правило. Я не могу сказать про все банки ... но будучи сам и белым и немного позолоченным и потом программистом могу сказать что в целом картина такая. Наверно есть оазисы ... но сейчас не могу сказать, давно ушел из мира банков, хотя сейчас работаю именно в области финансов.
    Т.е. отношение .. ну как к тех персоналу. Какая-нибудь тетя из кредитного отдела, у которой обязанности нажимать в день две кнопки, по которым получается какой-нибудь отчет для начальства будет смотреть с высоты своего положения :) немного свысока на молодого выпускника физтеха кто во сне решает дифуры сходу.
    Работа как правило тоже малоинтересная с точки зрения программиста - довольно скучные приложения в основном клиент сервер туда сюда данные, формы, формы с числом полей приближающихся к бесконечности, джава апплеты зачастую страшные как атомная война.
    Но это еще хорошо, ибо большая часть работы это поддержка. И это самый ужос. Копаться в технологиях, зачастую древних как мумие мамонта. Я сейчас работаю на американскую финансовую контору - так там даже еще майнфремы пашут. Все это было написано тогда когда еще компьютеры были большими и тепло-ламповыми и везде ползали трилобиты и трилобайты. И самое страшное, что это все работает. На эмуляторах конечно. Представьте себе эмулятор под древний майнфрейм - и причем оный эмулятор работает из под винды. А на нем проги бегут на Алголе. И ЭТО рулит реальными (по российским масштабам нереальными) деньгами. Как … никому не ведомо. Интересно? И это в то время как космические бульдозеры сравнивают Большой театр за самострой :).
    Сюда прибавить бюрократию и строгую иерархию (начальник моего начальника не мой начальник) – никаких диванчиков в стиле гугла и яндекса и детских игрушек. Все строго с 9 и до "солнце еще высоко" – обеды в офис и все такое. Никаких, как правило, удаленок и прочих элементов сладкой жизни. Опять же, как правило, никаких поездок и загранкомандировок с интеллектуальными играми, тургеневскими барышнями, ночными освежающими прогулками по Тендерлойн и Кастро в Сан Франциско (для тех кто понимает :)), веществами и напитками в номер. Для рядовых программистов конечно.
    Как правило, весь действительно интересный софт для банков пишут отдельные конторы. Хотя есть гиганты в, которых довольно мощные центры разработки. Есть в Москве такой банк из крупных международных.
    Т.е. если интересная финансовая сфера, то лучше таки пойти в контору, которая изначально программисткая и для программистов. Работа там гораздо интереснее и вы как вроде там не синий воротничок на седьмом киселе, а самая что не на есть белая кость и уважаемый человек – одним словом Программист, а не какой то там клерк :).
    В связи с массовым «импортозамещением», платными парковками и прочими радостями современных реалий (вт.ч. курсом доллара) многие конторы сейчас переводят весь персонал в какие то более теплые и спокойные страны, что конечно делает жизнь скучнее но работу плодотворнее и вообще открывает перспективы. Да и свой евро ближе к телу. Так что может повезти чего не скажешь, про работу в среднем Российском банке. Ах да из преимуществ можно еще отметить мегакорпоративы на новый год )) Но это только раз в году. Так что преимущество сомнительное тем более, если не любитель пышных женщин и вообще жизненных излишеств.
    Вот где действительно интересно – это все что связанно с биржами и трейдингом. Это некий свой особый мир, лежащий чуть в стороне от классического банкинга (читай расчеты). Это специфическая область и там все серьезно и плане математики и в плане технологий. Одна из лучших контор в которой мне довелось работать, это контора связанная с биржевыми данными и трейдингом. Контора американская, но работает в Москве. Очень высокий уровень разработки и культуры управления. Требует серьезного уровня подготовки. Все в основном на С++ и С - все остальное по скорости безнадежно сливало – работа в терминах микросекунд) под правоверный линкус. Советую, если не радует рутинная бесконечная унылая работа рваться в эту область. Еще можно попробовать оценки рисков. Но вообще советую именно программерскую контору а не банк. Кстати мир загнивающего капитализма точно такой же, а не только в России такая картина. Тока на загнивающим надо пару нулей приписать к любой цифре, ну и в долларах все, а так в принципе то же самое.
    Но в трейдинговых конторах интересно, особенно если допустят до торговых алгоритмов. Для этого нужна хорошая мат. подготовка и программерская тоже. Но там зарплаты бывают ну очень большими и бонусы еще.. бонусы
    На хабре есть цикл статей от ITinvest – можно поискать .. почитать проникнутся. Написано очень интересно. Я проработал в этой области много лет но и сам много чего нового и интересного нахожу. Так на всякий случай я с ITinvest никак не связан вообще – так что с них стакан мангового сока за рекламу.

    Если сухой остаток то советую C C++ (Страуструп, Мейерс, Александреску, Саттер помогут и подскажут стандарты 11, 14, 17, boost и stl само собой после всего советую C++ Concurrency in Action, Williams - THE MUST и совершенно адскую книжищщу Addison.Wesley.C++.Template.Metaprogramming.Concepts.Tools.and.Techniques.from.Boost.and.Beyond - вырыв мозга с корнем), к сожалению много стало Java (не люблю жаву но реальность данная нам в ощущениях такова), хорошее ... очень хорошее знание Linux (само собой bash и Perl, Linux.in.a.Nutshell.6th.Edition - хорошая), Python совсем не лишен, алгоритмы - особенно на загнивающем - страсть как любят алгоритмы, 80% времени собеседований не про языки а про алгоримы ( советую скачать Introduction to Algorithms 3th, Cormen, Leiserson, Rivest, Stein.pdf ну и Кнута конечно) и очень хорошо это знание стека протоколов TCP/IP (UNIX._Network_Programming._3rd_ed Стивенса). Еще POSIX многопоточность - я лично учился по Системное программирование на C++ для Unix, Теренс Чан - книжка старая но по моему не потеряла актуальность и Unix Взаимодействие процессов, Уильям Стивенс и QNX-UNIX. Анатомия параллелизма, Цирюлик .О - последняя написанна просто и толково). С этим багажом можно уже выходить на очень приличный уровень. Конечно сразу не взять такой объем но в целом как то так. Ах да .. и английский конечно. На нормльном разговорном уровне.

    Вообще очень хорошая выжимка - короткая но четкая из брошюры по собеседованию для гугла. Она свободна доступна но вот из нее выдержка

    "Coding: You should know at least one programming language really well, preferably C++ or Java. For specific projects, we do also use C
    and Python but these are normally secondary languages at Google. You will be expected to write code in most of your interviews. You will
    be expected to know a fair amount of detail about your favorite programming language. Make sure to check out our Google code style
    guides. You will be expected to know about API’s, OOD/OOP, how to test your code, as well as come up with corner cases and edge cases
    for yours and other peoples code.

    Algorithms: You will be expected to know the complexity of an algorithm and how you can improve/change it. Big-O notations also
    known as the run time characteristic of an algorithm. If you get a chance, try to study up on fancier algorithms, such as Dijkstra and A*. For
    more information on algorithms you can visit TopCoder.

    Sorting: What common sorting functions are there? On what kind of input data are they efficient, when are they not? What does
    efficiency mean in these cases in terms of runtime and space used? E.g. in exceptional cases insertion-sort or radix-sort are much better
    than the generic QuickSort / MergeSort / HeapSort answers.

    Data structures: You should study up on as many other structures and algorithms as possible. You should especially know about the
    most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem. Be able to recognize them when an
    interviewer asks you in disguise. Find out what NP-complete means. You will also need to know about Trees, basic tree construction,
    traversal and manipulation algorithms, hash tables, stacks, arrays, linked lists, priority queues.

    Mathematics: Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies
    because counting problems, probability problems and other Discrete Math 101 situations surrounds us. Spend some time before the
    interview refreshing your memory on (or teaching yourself) the essentials of elementary probability theory and combinatorics. You should
    be familiar with n-choose-k problems and their ilk – the more the better.
    "

    Всего дело то :))
    Ответ написан
    2 комментария