Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (10)

Наибольший вклад в теги

Все теги (34)

Лучшие ответы пользователя

Все ответы (29)
  • Какие знания необходимы перед изучением php фреймворка?

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

    Помимо еще и специфику, PHP - это Backend, а он впервую очередь получает запрос от клиента, обрабатывает его, если нужно запрашивает из BD нужные данные и возвращает ответ.

    Соответственно: На какие вопросы надо ответить чтобы решать эти задачи в виде данных? Получить запрос (Обработать запрос (Что за запрос, удаление, апдейт, создание или фильтр какой, посмотреть его входящие параметры, прочитать HTTP заголовки, запрос можно классифицировать сложным URL адресом, который в свою очередь можно классифицировать и соотнести к какой-то реально сущность book/1?new=true&filter=asc, соответственно есть у вас есть Front Controller - то запрос по книжкам можно отнести к контроллеру Books (А контроллер часть паттерна MVC, контроллер будет работать с моделью, модель может напрямую общаться с BD или передаваться какому-то сервису который общается с BD (ORM, SQL with Driver). Соответственно вы в модели запрашиваете данные, проверяете данные, обновляете, внедряете бизнесс логику и только когда это сделали, возращаете данные готовые для пользователя, но только данные пользователю не интересны, вам нужно обернуть данные в HTML, проставить значения, интегрировать в верстку, тут уже приходят на помощь вьюшки, шаблонизаторы, так как ответ может быть не HTML, то модель нужно сериализовать в JSON. Соответственно все эти объекты у которых есть данные имеют методы для работы со своими данными. А общение между объектами путем отправки друг-другу сообщений (petya.give(beer, vasya). Отношение между ними будет осуществляться либо вложение объектов в друг-друга (композиция), либо копированием свойств между объектами (иерархия, наследование). Определять то что умеет объект, будет его интерфейс (где уже вступают в силу модификаторы доступа).

    Соответственно кратко:

    Обработка данных внутри методов (Алгоритмы и структуры данных)
    Общение между объектами ООП (Объектно ориентированное программирование)
    Архитектура приложения на уровне объектов (Дизайн паттерны, композиция, агрегация)
    Выполнение последовательных операций (Императивное программирование)
    Получение A и превращение A в B с хитроумными сплетениями (Функциональное программирование)
    Выполнение двух операций одновременно и синхронизация между ними (Параллельное программирование)

    Удачи!
    Ответ написан
    Комментировать
  • Как побороть боязнь чистого листа?

    @larionov_n
    1) Начните с простого изучения языка на CodeAcademy.com. Java - слишком сильно завязан на ООП. Выбирайте - Python, он проще для начала. Пройдите все задания на академии.
    2) Изучите мат.часть и принцип работы встроенных в язык базовых функций и конструкций (Идеально желательно).
    3) Попробуйте сфокусировать свое мышление не на результат (Готовая программа, игра, редактор), а на последовательность действий с помощью которых вы напишите одну функцию (Но она будет идеально выполнять свою единственную задачу).
    4) Необходимо понимать, что у нас есть данные и методы работы с данными. Для этого вам нужно изучить структуры данных и лучшие практики по работе с ними. (В помощь школьный PASCAL - Олимпиадные задачи, к примеру реализация алгоритма быстрого поиска, найти меньший элемент, наибольший). - Советую на это потратить больше всего сил. При реализации какого либо алгоритма, советую на бумажке подставлять значения вместо переменных и самому его проигрывать в голове.
    5) Изучите основные алгоритмы - Только после того как вы будете готовы работать со структурами данных и будете уверенны в знании выбранного языка. Советую перед этим прочитать книги по множествам, вспомнить базовую алгебру, четко самому вывести понятие конечной суммы в математике, логарифма. - Как минимум. Начинайте читать Вирта. (Это тяжело но помогает научиться думать как следует).
    6) Читайте SourceCode, это самый интересный и самый полезный вариант для получения представления о структуре программ. С библиотек не советую начинать. Когда будет сами уже писать маленькие программы без нужды заходить в гугл или stackoverflow. Можете переходить на библиотеки. Зарегистрироваться в GitHub и читать открытый код. Когда поймете, что это помогло. Можете стать контрибутором одной из любимых библиотек. (Любой работодатель это ценит).
    7) ООП - После всех пунктов, можете почитать Буча и попробовать труды Банды четырех. Шаблоны проектирования, Мартин Фаулер (Рефакторинг, Шаблоны корпоративных приложений).
    8) БД (Проектирование, выборки, нормализация, SQL язык).
    9) Полет вниз (Переходите на C, потом на C++). Реализуете уже написанные map, reduce, изучаете более подробно структуры данных, алгоритмы, понимаете указатели, работаете с памятью, высчитываете эффективность алгоритмов. Напишите большую программу на C/C++ - которая будет выполнять 20 разных функций (Смотреть API вконтакте, выводить в окно информацию с АПИ, реагировать на кнопки и прочее). Можете попробовать GameDev.
    10) Функциональное программирование.
    11) Параллельное программирование.
    12) Системное программирование (Unix, напишите свой интерпретатор, почитайте книгу драконов, посмотрите как работают различные компиляторы с вашим кодом).
    13) Завалите все кто вас обидел в этом посте.

    Удачи!
    Ответ написан
    1 комментарий
  • Насколько глупое решение, бросить все и начать новую IT карьеру в мегаполисе?

    @larionov_n
    Из востребованных направлений: Frontend (NodeJs, RIA SPA, RealTime App, Isomorphic) - В Москве в питере мечтают найти нормального специалиста от 100к зп). Java (Big Data, Machine Learning, Java EE (Hibernate JPA (WEB), Processing (Activity), Playframework, Spring, GlassFish) - В москве Middle Developer от 100к. C++ (OpenGL, OpenCL, Системное программирование, сети, оптимизация) от 100к.

    В чем собственно вопрос? Вы смотрели рынок? HH.RU? Зачем использовать PHP который в 60% используется в интернет магазинах, соц-сетях, сайтиках?

    Если есть математическая база, то можно заниматься спокойно графикой, моделированием процессов, нужна в основном (Линейная алгебра, дискретная математика, тригонометрия, численные методы). Причем эти знания так-же помогут и в области разработки интерпретаторов, компиляторов (Добавиться теория множеств, рядов, булева алгебра), используемые ЯП (C, C++). Так вообще можно и стажером в НИИ какой-нибудь от 60-80к пойти. Опять же если с математикой все окей, то это прямая дорога к опыту использованию и анализу алгоритмов, структур данных на очень хорошем уровне, спортивное программирование открывается для вас.

    Я так думаю вы не спешите рисковать, пробывать, изучать и не знаете себе цену. Впервую очередь надо с этими вопросами разобраться и научиться оценивать информацию самостоятельно и принимать на ее основе взрослые смелые решения.

    Например у меня аналогичные мысли про силиконовую долину, GameDev. Сижу математику изучаю, язык, рынок, компании которые могут быть в будущем потенциальным работодателями, законы страны, рынок труда, книжки читаю о том как пройти собеседование на позицию С++ инженера. И думаю не о зарплате 100к рублей в месяц, а 100к килобачей в год. Но не спешу действовать, так как есть семья, ее тоже придется за собой вести. Пока у вас семейных ограничений нету, советую не медлить, а укреплять свою жизненную, гражданскую позицию, получать интересный опыт и решать самому задачи дома, а не ждать пока вы придете в компанию и вам придумают интересную задачу за интересные деньги.
    Ответ написан
  • Путь будущего математика, не ошибочен ли?

    @larionov_n
    Почитайте биографию и труды Готфрида Вильгельма Лейбница. Все что можно узнайте о этой магической личности, возможно на математику после этого с другой стороны посмотрите. У вас конечно планы грандиозные, но цели для которых эти планы строятся - не видно. Поэтому мне сложно вам что-то сказать, я хочу идти учиться на ВМК МГУ. А работаю программистом 5 лет, я приблизительно понимаю, что мне даст такое образование и что нечто удивительное я смогу переводить в собственные программы. У меня есть очень много знакомых уже бабушек и дедушек с мат. образованием, одни были учителями, другие просто застали период перфокарт и огромных компьютеров, третьи стали профессорами. Но все в итоге с возрастом загнались поиграть в семью. А профессия математика, достаточно долгая история по затратам времени и без востребованного с точки зрения бизнеса, науки, общества - мало оплачиваемая. Так как платят за прикладную и за точные результаты, которые передней ставятся. Для общего развития, как прикладное умение - полезно, но не достаточно для крутизны. А набрать крутизну в прикладной математике ну лет 5-7. Научиться программировать тоже лет 5. Стать врачом лет 10. Задумайтесь какие у вас цели... Самостоятельно оцените перспективы. Мне кажется истинный математик, способен ответить на все ваши вопросы самостоятельно. А так кажется что вы просто прикидываете и страдаете романтикой перед сложным выбором.

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

    По поводу информатики, вот читаю и понимаю что я похоже плохо знаю информатику, хотя я программирую и вроде бы знаю все о железе, представляю как работает BigData. Но, такое ощущение, что информатику вы как-то буржуазно воспринимаете, это просто теория о информации. Тут программирование далеко. А если брать образование, то скорее общей прикладной сферой задач информатики являются: Хранение, обработка информации, защита информации. Что является малой частью Computer Science. Так как обрабатывать информацию вам учебники Кнута больше помогут и математика, чем просто какие-то отдельные ветки информатики. Да в российских вузах ее изучают поверхностно, а в Standford это скорее обозначение Computer Science, чем отдельной науки.

    По поводу экономики, да прикладной матан, мат анализ, статистика, теория вероятностей, чисел - открывают дороги к аналитики, финансовому менеджменту, просто удобной и умной работой над бумажками. Но... у меня как раз диплом экономиста, я с уважением отношусь к Марксу, Адам Смиту и прочим экономическим героям. Бытие, ну тут все от человека зависимо, один как художник найдет применение сухим мат.законам и аппаратам и будет инвестировать, поднимать, создавать. Причем он будет всегда творить деньгами, здания, компании, ценные бумаги и ему это будет нравиться. Другой будет сидеть в 1C создавать годовой отчет или оценивать налоговые сборы и бюджет гос учреждения за год и ненавидеть свою работу. Третий просто возмет гуманитарную математику из вуза применит пару давно всем известных теорий и формул и посчитает окупаемость предприятия, его финансовые показатели, статьи бюджетов и будет доволен что знает математику.

    В программировании (Computer Science), астрологии, инженерном деле - есть все шансы использовать всю суть математики. Поэтому я считаю что это более правильный с точки зрения востребованности и сферы применения путь для совмещения математического образования.

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

    И кстати зачем Германия? МГУ Мехмат, покруче будет я думаю :) И математики столько будет, что немцы сами потом еще позовут.

    Да и лучше перед тем как делать такие грандиозные шаги, сходить в МГУ там могут протестировать проф пригодность, я сколько с математикой не бьюсь, понимаю что образ мышления у меня не математический, а скорее интуитивный и креативный, это конечно не мешает математику изучать, но прорыва в этой области мне точно не сделать.

    Кстати примеров кто мат. карьеру успешно построил, с точки зрения применения своих знаний: Касперский, основатели Google, Yandex, почти у всех мат образование. Просто в нужное время в нужном месте оказались...
    Ответ написан
    2 комментария
  • Область применения C, C++, C#?

    @larionov_n
    GameDevelopment - Enterprise.
    System Programming.
    Compilers Programming.
    Unix command line tools programming (streaming, sockets, wan, lan).
    Optimizations.
    Software Development (DB, OS, Hardware Drivers, IO, etc)

    Учитесь лучше :) не ассемблер же дают.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (17)