Я студент 2-го курса компьютерной инженерии в Эфиопии, Африка . Мы взяли C и C ++, и я научил себя HTML, CSS, PHP (также фреймворк cakePHP) и немного javascript, JQUERY и mySQL для разработки небольших систем, таких как блог. Но я хочу создавать большие системы, которые будут безопасными и надежными. Я очень рад видеть здесь, в SO, очень умных и опытных разработчиков. Я сомневаюсь, что делать с самого начала, то есть (ASP.NET или PHP) и какие другие языки или системы мне следует изучить, чтобы это произошло. Заранее спасибо.
PS. Я могу справиться с любым типом математики.
В больших системах существует связь между компонентами и тестированием.
Предполагается, что такие курсы, как «архитектура программного обеспечения» и «программная инженерия», научат вас проектировать системы (правильно обеспечивать связь и связь между компонентами). Меня немного разочаровал подход моего университета к этому, но это поможет вам, по крайней мере, думать о правильных вещах.
Затем для тестирования начните рассматривать методологию разработки через тестирование. Тестовое покрытие очень важно, когда речь идет о надежности и безопасности.
Наконец, я мог бы даже порекомендовать взглянуть на Haskell, хотя бы для того, чтобы проникнуться более «формальным» режимом работы. Haskell более или менее заставляет вас быть более формальным в том, как вы выражаете проблемы через свою систему типов. (Кроме того, если вам действительно нравится продвинутая математика, вам, вероятно, понравится Haskell :))
Я думаю, дело не в языке или системе. Если вы хороший программист, вы легко адаптируетесь к любому существующему языку программирования или фреймворку.
Для того типа системы, которую вы хотите запрограммировать, необходимо рассмотреть множество фреймворков. все со своими плюсами и минусами.Я бы посоветовал вам попробовать поучиться у людей, которые делали это раньше, посмотреть, что используют крупные компании, и больше учиться.
Я чувствую себя стариком, говоря это, но со временем вы поймете, что две самые большие проблемы в разработке программного обеспечения:
Как это отвечает на ваш вопрос?
Сосредоточьтесь на том, чтобы стать лучше в этих двух. Выбирайте любые библиотеки/фреймворки/платформы/языки, которые вам нравятся и которые вы считаете подходящими для выполнения ваших задач. ИМХО PHP - не лучший язык по ряду причин, но, в конце концов, вы должны использовать то, что вам нравится и с чем вам хорошо. Лично я использую Haxe для своих проектов. Возможно, вы захотите попробовать. В конце концов, я думаю, вам следует попробовать множество языков и фреймворков, чтобы понять разные концепции. Большинство вещей, которые вы будете изучать, выходят за рамки конкретных языков и фреймворков, но вы можете изучить их, только очень хорошо изучив некоторые из них.
Прежде чем закончить, я хотел бы указать вам на мои 5 заповедей ;)
Здесь две цели. Решайте их по отдельности:
Построение больших сложных систем:
Большие сложные системы возникают в результате двух вещей:
Достижение этого может означать партнерство с другими людьми. Ясно, ты интересуетесь технической стороной дела - в этом ваша сила. Возможно, вам придется найти других людей, которые разделяют ваше видение, чтобы помочь управлять нетехнической стороной дела. Это будет включать такие вещи, как привлечение капитала, продвижение и маркетинг. Каждый член вашей группы должен привнести другую силу ядра.
Как техническому руководителю, вам нужно хорошо разбираться в применении архитектура. Это не столько проблема с навыками программирования, сколько это понимание того, как можно использовать различные шаблоны и технологии проектирования для достижения Ваши цели. Изучите как можно больше фреймворков и шаблонов проектирования. Вам не нужно станьте экспертом по любому из них, пока не почувствуете сильные стороны и слабость каждого по отношению к приложению, которое вы ищете строить.
Развитие общих навыков CS
Теория никогда не устаревает. Получите сильный опыт в научной части вашей программа компьютерной инженерии. Пройдите курсы по теории языка, дискретной математике, разработка/анализ алгоритмов, компьютерная архитектура, архитектура приложений и т. д. Они сослужат вам хорошую службу до конца вашей карьеры.
Затем следует практическая сторона вопроса: какие языки, технологии и фреймворки следует изучить прямо сейчас. использовать свою карьеру (в надежде сделать что-то действительно большое). В этом смысле вы уже на правильном пути. Будьте любопытны, подвергайте себя как можно больше инструментов. Чем больше вещей вы знаете, тем легче учиться новые. Потратьте время, чтобы понять модель, на которой основан каждый инструмент, и то, как он похож на другие инструменты, которые вы использовали, но отличается от них.
Имейте в виду, что языки программирования - это всего лишь "инструменты торговли", а не сама торговля. Со временем вы будете найти новые инструменты и отказаться от других.
Собираем все воедино
Дайте волю своему воображению, чтобы придумать это «убойное приложение». Подружиться с люди, имеющие наборы навыков, дополняющие ваши собственные. Говорите и мечтайте о больших вещах вместе.
Работайте над развитием своих основных навыков CS.
Познакомьтесь с таким количеством различных инструментов и языков, с которыми вам удобно работать. Получить хорошее практическое знание только тех немногих, которые вы считаете наиболее полезными для того, что вы делаете в момент. На овладение каким-либо одним инструментом могут уйти годы, но пусть ваш текущие потребности будут вашим проводником. Будьте готовы к тому, что ваш набор технических инструментов со временем будет развиваться.