Есть много факторов, которые могут повлиять:
Конечно, это предполагает, что у вас есть выбор языков. Один язык может лучше всего подходить для решения задачи, но если вы не знаете его в достаточной мере, то это практически не вариант, если только у вас нет времени на изучение.
Если только это не задание, которое кричит вам о том, на каком языке его лучше выполнять, вы должны выбрать тот, которым владеете лучше всего... Я полагаю.
Все зависит от ваших интересов и опыта. Если вы хорошо разбираетесь в Java, то хотите ли вы тратить время на кодирование на C/c++/C#?
Что касается меня, то я буду исходить из целесообразности. Если решение выполнимо в .Net, я буду использовать .Net.
Также следует учитывать платформы, на которых будут реализованы задачи. Если целевые серверы могут быть Linux/Mac/Windows, то выбирайте Java. Если задача требует слишком много работы на уровне системы, выбирайте c. и т.д. и т.п.
Я всегда смотрю на несколько разных аспектов. По большей части это связано с поддерживаемыми языками библиотеками, окружающей средой и человеческими факторами, а не с самим языком. При этом разные языки имеют разные сильные стороны, и важно выбрать язык, который соответствует тому, что вам нужно делать. Ниже приведены некоторые моменты, которые я принимаю во внимание при запуске нового проекта.
В реальном мире вы почти всегда строите библиотеки и фреймворки, созданные другими людьми. Поэтому первый вопрос, который я часто задаю, - какие библиотеки и фреймворки лучше всего использовать, а затем опираться на них. Что разбивается на примерный порядок, в котором я их использую:
C ++ для интенсивной обработки графики и изображений, некоторой числовой работы и высокоуровневых интерпретаторов.
Java + XSLT для веб-сервера (хотя я не очень много работал в Интернете около шести лет и мог бы использовать Ruby для некоторых вещей там или .net в магазине MS)
C # для бизнеса формы и менее интенсивная графика
Python для очень маленьких скриптов, иногда небольших приложений с графическим интерфейсом.
C99, если я хочу использовать библиотеки нижнего уровня, интерпретаторы нижнего уровня и иногда PIC или встроенные системы.
Я также немного занимался обслуживанием Fortran, но никогда не инициировал проект Fortran.
Они никоим образом не являются окончательными, но я нашел то, что хорошо работает в этих областях. Отчасти это суждение - хочу ли я пожертвовать долгим временем компиляции и простой модульностью, чтобы получить сочетание производительности и выразительности (C ++)? Я хочу очень быстро создавать современные графические интерфейсы на основе форм (C #)? Хочу ли я манипулировать указателями и писать свои собственные процедуры сборки мусора (C)? Кому я хочу быстро попробовать алгоритм, чтобы увидеть, работает ли он (Python)?
Я думаю, что вопрос заключается в следующем: «Как узнать, какой инструмент подходит для работы?»
Отчасти это зависит от требований. Если они говорят о веб-интерфейсе или базе данных, вам, вероятно, понадобится некоторый опыт работы с SQL и HTML. Если они упоминают высокопроизводительные графические дисплеи, это может означать C / C ++ и OpenGL / DirectX. Если в требованиях говорится о высокоскоростной числовой обработке, вам может понадобиться ... ммм ... что-то еще. ;)
Следующее, что вам нужно сделать, это то, что вам доступно. Если вы работаете в команде, которая в основном имеет опыт работы с Java, вы, вероятно, будете придерживаться Java, если у вас нет ОЧЕНЬ веской причины для перехода, или если у вас уже есть дюжина лицензий на Visual Studio, это, вероятно, будет своего рода .NET-решение.
Первое, на что я обращаю внимание, это: какие языки / парадигмы я знаю? Основываясь на этом ответе, я бы спросил себя, какие сильные стороны языка / парадигмы играют роль в проблеме. Вот пример:
Я знаю JavaScript, Java и Python (для целей этого разговора). Проблема связана с сетью? Огромный аргумент в пользу JavaScript. Будет ли полезным для решения этой проблемы легко опробовать новые идеи? Большой аргумент в пользу Python. Это долго и зависит от производительности? Это аргумент в пользу Java.
Ключ - это резервирование. Я бы выбрал язык, который мне больше всего знаком, потому что я буду намного продуктивнее.
Попробуйте выбрать один язык и овладеть им. Конечно, знать большинство языков - это хорошо, тогда вы можете выбрать тот, который подходит вам лучше всего.
Тогда остановитесь на своем любимом.
Для меня это Asp.Net C # / jQuery.
У PHP есть хорошее сообщество, и он бесплатный. Если вы новичок, я бы начал с этого.
Я смотрю на проблему и на очень высоком уровне думаю, как бы реализовать ее на некоторых из известных мне языков. Скажем, например, я знал, что для реализации диалогового окна в MFC / C ++ мне потребуется вдвое больше кода, чем для его реализации на C #, и что моя Java немного заржавела. Я бы предпочел программировать его на C #.
Однако, поскольку вы студент, вы можете выбрать язык, с которым вы НЕ ТОЛЬКО знакомы, и реализовать проект на этом языке. Я мотивировал это тем, что я поступил в колледж, очень хорошо зная C ++. Мне не очень хорошо реализовывать на C ++ что-то, что я знаю, что могу. Однако реализация его на C #, с которым я был не очень хорошо знаком, позволила бы мне получить больше знаний из программы, чем я бы получил в противном случае. Сохраняйте эту концепцию в течение многих лет в школе, и в конечном итоге вы узнаете намного больше.
Таким образом, в основном ваш выбор сводится к тому, хотите ли вы кодировать его на самом простом языке, который вы знаете, или хотите ли вы кодировать его на языке, который хотите выучить. У каждого решения есть свои преимущества.