• Как стать программистом в банке?

    @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 комментария
  • Какой смысл типа union?

    Olej
    @Olej
    инженер, программист, преподаватель
    Какой смысл типа union? Я знаю что это ну не видел нигде где его используют.

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

    Главное применение union - это наложение разного типа данным на одну общую область памяти, т.е. представление одной области памяти как разные типы данных. Это идёт ещё от блоков COMMON в FORTRAN и вариантных записей Pascal.

    Применяется очень широко в системном программировании - например, весь код ядра Linux пестрит union-ами.
    Ответ написан
    Комментировать
  • Ошибка std::bad_alloc - из-за чего?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ну а я повторю свой оригинальный ответ: без полного исходного текста можно сказать только то, что ошибка, скорее всего, где-то в другом месте. И замена объектов ссылками просто замаскировала проблему на время.

    Хотя у меня есть одно предположение: возможно вы неправильно строите дерево и некоторые его узлы являются своими собственными детьми.
    Ответ написан
    Комментировать
  • Где лучше включать заголовочные файлы?

    @teugen
    Призрак алкоголизма.
    Вот, например, хороший ответ.

    This rule means that if the header uses a type - such as 'FILE *' or 'size_t' - then it must ensure that the appropriate other header ( or for example) should be included. A corollary, often forgotten, is that the header should not include any other header that is not needed by the user of the package in order to use the package. The header should be minimal, in other words.


    Вкратце: включений в заголовке должно быть как можно меньше, при этом в нём должны быть включены все заголовки, необходимые для беспрепятственной работы кода, в нём описанного.

    В вашем случае, если vector используется исключительно в реализации и в описании blackbox'a никак себя не проявляет, включать его нужно в .cpp
    Ответ написан
    Комментировать
  • Правильно ли составлена блок-схема программы, и что нужно изменить, чтобы она стала идеальной?

    Olej
    @Olej
    инженер, программист, преподаватель
    Правильно ли составлена блок-схема, и что нужно исправить, чтобы она стала идеальной?

    Блок-схема не может быть идеальной, хотя бы просто потому, что многие авторитетные авторы, и давно пришли к убеждению, что сама практика составления блок-схем порочна и есть зло.
    Ответ написан
  • Учебник по математике, при почти нулевых знаниях?

    @SeptiM
    Мне кажется, то, с чего нужно начинать, это дискретная математика. Можно сказать, это азбука для программиста. Я ниже приложил некоторый список книг. Стоит, правда, понять, хотите вы самостоятельно изучать предмет или иметь менторов и готовую программу...

    Дискретная математика

    Есть здоровская книжка Андерсона "Дискретная математика и комбинаторика". Она довольно толстая, но главы можно читать почти в случайном порядке. Некоторые математики жалуются, что она не очень строгая и много воды, но для начала самое то.

    По дискретной математике есть русский онлайн-курс на Stepic-е.

    Если идти чуть глубже, есть неплохая книжка Кнута и др. "Конкретная математика".

    Алгоритмы и структуры данных

    Кормен "Алгоритмы: построение и анализ" в переводе А. Шеня. Осилить первые две главы, потом можно идти почти в случайном порядке. Написано достаточно просто и понятно.

    Дасгупта, Пападимитриу, Вазирани "Алгоритмы".

    Онлайн-курс по алгоритмам.

    О математике

    МЦНМО свободно распространяет много интересных книг: www.mccme.ru/free-books
    Посмотрите там в первую очередь Шеня и Арнольда. Например, В. И. Арнольд. Задачи для детей от 5 до 15 лет.

    И разумеется не упустите замечательного писателя Мартина Гарднера "Математические головоломки и развлечения".

    Задачники

    Попрактиковаться в решении с проверкой можно здесь.

    www.braingames.ru -- по математике
    https://projecteuler.net/ -- среднее, ближе к программированию
    acm.timus.ru -- по программированию

    Очные программы

    Умение самоорганизоваться -- это хорошо, но иногда нужен ментор и готовая программа.
    Если вы живете в Москве или Петербурге, попытайте счастье в этих двух организациях:
    https://yandexdataschool.ru/
    https://compscicenter.ru/
    Если нет, но есть возможность на два года уйти в учебу, попробуйте поступить в магистратуру СПбАУ на SE-направление:
    mit.spbau.ru

    Посмотрите задания на собеседования. Скорее всего вам будет что повторить или изучить, прежде чем поступить.

    Удачи!
    Ответ написан
    3 комментария
  • Какие рекомендуете обфускаторы erlang кода, которые не ломаются?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Мне кажется вас стоит забанить уже.

    Компилятор Erlang компилирует в байт код. Уберите вставку дебаг-информации при компиляции, и декомпилировать код (получить исходники) будет сложновато.
    Ответ написан
    1 комментарий
  • Как сделать 200 update c#/mssql ещё быстрее (с#/mssql) ?

    @Sumor
    Для того, чтобы оценить где можно улучшить нужно в первую очередь посмотреть планы выполнения update и времена в профайлере SQL-сервера.
    1. Каждый индекс отнимает время на своё обновление. Возможно можно уменьшить количество индексов. Иногда выгодней их удалять и заводить заново после операций обновления. Тоже касается вычислимых полей, значения которых хранятся в таблице. Если переделать ключ таблицы в кластерный индекс, то это может улучшить время поиска и обновления записей.
    2. Тригеры. Их можно также отключить перед выполнением пакета и включить после выполнения.
    3. Уменьшить количество операций Update путём их объединения по каким-то признакам. Уменьшить количество обновлений в одной транзации.
    4. Если позволяет структура базы данных, то возможно быстрее будет работать связка delete/insert. В этом случае можно включить режим Bulk Insert, который пишет данные сразу в таблицы минуя лог транзакций.
    5. Модель восстановления — simple, full или bulk logged. Возможно в вашем случае модель full даст выигрыш в обновлении данных, но вы можете потерять в месте на жёстком диске и времени сохранения базы данных.
    6. Физическое расположение контейнеров. Можно физически разнести таблицы, индексы и лог на три разных диска - тогда могут улучшиться временные показатели.
    7. Использование секционированных таблиц и индексов. Возможно, если обновление происходит только в определённой части огромной таблицы, например, только в записях последнего года, то имеет смысл разбить её на секции.

    В любом случае нужно исследовать каждую задачу оптимизации индивидуально. Нужно попробовать исключить каждый фактор и замерить время без него. Например, временно удалить все индексы в таблице и запустить пакет обновления.
    Ответ написан
    Комментировать
  • Java vs C++. Что полезнее?

    bogolt
    @bogolt
    Удивляюсь почему в сравнении Java vs C++ многие упоминают, что Java кросс-плафторменна. Си++ тоже кросс-платформенный ЯП. Программа написанная на нем может быть скомпилирована практически под любой платформой. Да, программу на си++ нельзя перенести на уровне бинарников, но часто ли вы видели универсальные бинарники?
    Для Си++ есть множество очень полезных библиотек позволяющих писать красивый и быстрый GUI ( единственная известная мне хорошая GUI программа написанная на Джаве - Eclipse ). Большинство же десктопных приложений пишется именно на плюсах.
    В новом стандарте появилась нативная многопоточность ( впрочем раньше никто не мешал использовать одну из множества кросс-платформенных библиотек для достижения тех же целей ).

    Из основных недостатков си++ скажу что первые 2 года работы с этим языком программист больше вредит, нежели помогает. Это учитывая что он неплохо уже знает синтаксис и уже пишет на нем какие-то программы. Огромное количество скрытых ям, граблей, заряженный ружей - заботливо разложены создателями нескольких версий стандартов, в безумной мечте об обратной совместимости языка ( что конечно очень круто ).
    Ответ написан
    7 комментариев
  • Что почитать об алгоритмах нормализации слов?

    icelaba
    @icelaba
    Знаю и умею всё
    Для русского языка есть несколько вариантов часть из них только получение базовой формы, часть выдает помимо базовой формы еще и какая это часть речи:
    По пунктам от самого простого к сложному, и я не в курсе работают ли эти инструменты под windows, сам я использую osx и linux

    1) Инструменты стеммеры - stemmer, обрезают слово выдирая из него по некоторым правилам то что они принимают за - окончания, суффиксы, приставки.
    Лично мне очень нравится стеммер для русского языка из пакета https://github.com/NaturalNode/natural
    Тут простой код для понимания как работает стеммер https://github.com/NaturalNode/natural/blob/master...
    Достоинства стеммеров: очень быстрые, подходят для предварительного анализа в 100% случаев
    Недостатки: базовая словоформа периодами весьма далека от реальной базовой словоформы

    ==========================================================
    2) использовать aspell - линуксовый пакет для проверки орфографии
    пример echo ехала криса на велосипеде | aspell -a -d russian --sug-mode=ultra
    вывод:

    + ехать
    & криса 13 6: киса, риса, ириса, краса
    *
    + велосипед

    Достоинства: большой набор словарей, можно добавлять свои, есть suggestion mode - выдает похожие слова на слова написанные с ошибкой и/или отсутствующие в словаре см выше & криса 13 6: киса, риса, ириса, краса
    Недостатки: медленный, не говорит какая часть речи

    ======================================================
    3) Лучший в номинации TreeTagger www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux

    пример: echo 'баба сеяла горох' | cmd/tree-tagger-russian
    вывод:
    баба Ncfsny
    сеяла Vmis-sfa-e
    горох Ncmsan

    разшифровка записей вида Ncfsny тут corpus.leeds.ac.uk/mocky/msd-ru.html
    то есть помимо того какая это часть речи и базовой словоформы эта штука еще и выдает кучу дополнительной информации - от падежей и до ....
    Достоинства: великолепен!, определяет часть речи даже если не имеет слова в словаре
    Недостатки: части речи то он определяет а вот с базовой словоформой невсегда, приходится использовать в паре с aspell или стеммером. Самый медленный.

    ========================================================
    Есть еще какие то продукты от яндекса https://company.yandex.ru/technologies/mystem/
    я не пользовался.

    Удачи!
    Ответ написан
    Комментировать
  • Как тестировать internal-классы?

    @bearded_guy
    Самый хороший вариант все же дописать в тестируемую сборку
    [assembly: InternalsVisibleTo("MyTest")]
    Ответ написан
    6 комментариев
  • Интересен ли анализ алгоритмов?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Нужно всё. Можете писать -- пишите.
    Никогда не будет такого, что все отпишутся "не нужно".

    Зачем задавать такие глупые вопросы.
    Ответ написан
    Комментировать
  • Какие самые популярные, относительно, алгоритмы, их количество и т.п.?

    tsarevfs
    @tsarevfs
    C++ developer
    Вот вики составленное студентами ИТМО (и проверенное преподавателями).
    Ответ написан
    Комментировать
  • Какие самые популярные, относительно, алгоритмы, их количество и т.п.?

    Начинается всё с Дискретной математики, Логики, Вычислительной алгебры и геометрии.
    Есть Кормен, Седжвик, Скиена

    Изучение алгоритмов заключается в анализе их сложности и определении частных случаев использования, в зависимости от задач и структур данных которыми нужно оперировать.

    Спросить сколько всего алгоритмов, равносильно что спросить: сколько формул в математике ?
    Ответ - много!

    Можно глянуть довольно толковые курсы по алгоритмизации на Coursera.
    Также на рутрекере хватает крутых видеолекций.
    Ответ написан
    Комментировать
  • Возможно ли без подключения специфических библиотек C++, а используя только стандартные прочитать файл из сети?

    Monnoroch
    @Monnoroch
    В стандартной библиотеке нет работы с сетью. Сеть -- это всегда платформозависимый код. Либо буст, Poco, или еще что на выбор.
    Ответ написан
    Комментировать
  • Существуют ли трансляторы кода из С в C++?

    fornit1917
    @fornit1917
    по идее, после трансляции читаемость кода не ухудшится

    Вы совершенно правы. И для того чтобы оттранслировать код из с в с++ вам всего навсего нужно ничего с ним не делать)).
    Ответ написан
    Комментировать
  • C++ список файлов текущего каталога

    sdevalex
    @sdevalex
    По стандарту, сейчас, STL такого не умеет. Используйте API OS или Boost.Filesystem.
    Ответ написан
    1 комментарий
  • Что такое аудио с точки зрения программы

    Finesse
    @Finesse
    Согласно условию теоремы Котельникова, у аудиосигнала берётся дискретная выборка мгновенных значений параметра (с частотой дискретизации, наверно ты где-то слышал это словосочетание), которая представляет собой вектор (массив). На выходе по нему восстанавливается исходный неприрывный сигнал. В зависимости от формата этот массив сжимается разными способами.
    Ответ написан
    2 комментария
  • Python как язык для собеседования в Google?

    nochkin
    @nochkin
    Задачи бывает разные. Есть задачи, которые на любом современном языке можно выразить в правильное решение. А есть задачи, которые более специфичны в этом плане. Просто «выучить» язык будет недостаточно что бы решать такие, тут нужен достаточный опыт и понимание почему эту задачу надо решить именно на этом языке.
    Ответ написан
    Комментировать