Блок схема выбора языка программирования

Выбор языка программирования

На начальном этапе создания программы так или иначе становится вопрос выбора языка программирования. Кто-то выбирает язык только из личных предпочтений, кто-то только потому, что знает только этот язык, кто-то об этом даже не задумывается. Однако, данный этап разработки является очень важным, так как от него в будущем могут возникнуть проблемы, а могут и не возникнуть — смотря как подойти к вопросу.

Сразу хочу заметить, что данная статья упрощенная, она не содержит 100% точных схем, принципов работы. Все описано упрощенно и схематично для понимания сути, а не всех тонкостей. Данная статья подойдет для новичков, которым перебирать уйму сложной литературы не очень хочется, а так же для тех, кто только собирается ступить на путь программирования.

Введение
На данный момент существует огромное количество языков на любой, как говорится, вкус и цвет. Есть и компилируемые и интерпретируемые языки, есть очень простые и просто таки мозгодробительные языки, есть серьезные и шуточные языки. Много их, в общем, есть. И каждый из них создавался с определенной целью. Выбор языка программирования во время создания программы является очень важным моментом, от которого зависит очень и очень многое – скорость создания программы, скорость тестирования, возможность переноса на другие платформы, возможность быстрого внесения изменений, быстрота выполнения конечного продукта и так далее. При этом стоит помнить, что идеального языка не существует, все они обладают своими положительными и отрицательными качествами, которые будут так или иначе влиять на процесс разработки.
Итак, по каким же критериям выбирать язык для своего проекта?

  1. Скорость работы конечного продукта.
    Требовательным к скорости выполнения могут быть программы с большим объемом математических вычислений, например моделирование физических систем, расчеты большого объема экономических данных, выведение трехмерной графики и прочее. Для данных целей хорошо подойдут компилируемые языки: ассемблер, С/С++, фортран и т.д. Почему именно такие? После сборки программа не требует (грубо говоря) ничего лишнего и содержит в себе машинные команды, которые выполняются без лишних задержек. Схема работы таких программ такая: 1) программа исполняется сразу, так сказать она самодостаточна и не требует дополнительных библиотек; 2) программа кроме своего кода содержит вызовы библиотек с машинным кодом (как системных, так и входящих в проект), поэтому, кроме исполнения собственно своих команд, программа вызывает функции из библиотек; 3) в дополнение случаям 1 и 2, программа может работать через прослойку драйверов, которые написаны на языках низкого уровня и работают по умолчанию быстро. Как видно, максимум в схеме возможны 4 блока: программа -> библиотеки -> драйвера -> железо.
  2. Объем занимаемой оперативной памяти.
    Данное требование появляется, когда программа разрабатывается для встраиваемых систем, мобильных платформ, микроконтроллеров и так далее. В данных случаях, чем меньше памяти расходует программа на данном языке – тем лучше. К таким языкам, опять же, относятся ассемблер, С/С++, Objective-C и другие. Список языков подобен списку пункта 1, так как чем меньше функциональных блоков в схеме исполнения, тем меньше занимается и памяти компьютера.
    Если данное требование некритично, то можно использовать «истинно высокоуровневые языки».
  3. Скорость разработки программы.
    Данное требование возникает тогда, когда начальник говорит «программа нужна не позже, чем вчера!» или еще какая срочность. Тогда выбор падает на высокоуровневые языки с максимально человеколюбивым синтаксисом. Это, например, Java, Flash и подобные. На данных языках время разработки может существенно сокращаться из-за обилия сторонних библиотек, максимально «очеловеченного» синтаксиса, и подобных вещей. Скорость выполнения программ, написанных на данных языках страдает, причем порой весьма ощутимо. Схема выполнения на примере Java:
    Программа в виде байт-кода -> виртуальная машина-анализатор -> системные библиотеки -> драйвера -> железо.
    Самым медленно работающим блоком в данной схеме является анализатор – он должен байт-код программы транслировать «на лету» в машинный код, при этом потратив много времени на точное определение инструкции. Поэтому быстрая разработка зачастую означает медленное выполнение.
  4. Ориентированность на компьютер или человека
    С кем будет работать программа в первую очередь? С человеком, или с компьютером? В пером случае программа должна обладать мощной графической частью, отвечающей требованиям дизайна и юзабилити. Разработка графической части зачастую требует достаточно много времени, т.к. отличается немалой сложностью. Здесь сложность возникает в том, что вывод графики – это немало математики, а значит присутствует требовательность к скорости исполнения, а из-за сложности разработки присутствует необходимость в высокоуровневом языке. В данном случае, на мой взгляд, очень хорошо подходит С++/C# с их одновременной и высокоуровневостью, и скоростью выполнения программ на них. Однако, если ГИП не очень сложный, но красивый, возможно использование Java и Flash, на которых создание красивых интерфейс гораздо проще, нежели на С++ и, тем более, С. Если программа ориентирована в первую очередь на «скрытую работу» с минимумом взаимодействия с пользователем, тогда выбор должен ложиться в сторону быстрых языков (ASM, C)
  5. Кроссплатформенность.
    Кроссплатформенность – возможность работы программы на различных платформах, в различных ОС с минимальными изменениями. В этой сфере можно выделить такие языки: Java, C#,Flash,C++ с различными библиотеками и другие, менее используемые, языки.
    Java создавался с тем условием, что программы на данном языке должны работать на любой платформе, где есть JVMJava Virtual Machine. Программы на Java вообще не требуют никаких изменений – после компиляции получается .jar файл, который будет работать и на Windows, и на Mac OS, и на Linux и еще немало где. Аналогичная ситуация и с Flash, только список платформ гораздо менее обширный. С С++ дело обстоит труднее. На чистом С++ написать кроссплатформенную программу довольно трудно, у кода возникает обширная избыточность, теряется достоинство в скорости выполнения. Облегчают задачу кроссплатформенные библиотеки, например, Qt, которые позволяют добиться принципа «один код на все платформы», однако на каждую платформу нужно программу собирать отдельно (при этом разными компиляторами).
    В этот раздел так же можно включить интерпретируемые, скриптовые языки – для их работы нужно наличие интерпретатора языка в системе. Данные языки очень удобны в плане разработки, но достаточно медлительны. Схема их работы напоминает схему работы Java/Flash, только анализатор стал еще медленнее – полумашинный байт код анализировать «на лету» гораздо проще, чем человеческий код. Так же, это влечет к большему потреблению памяти.
  6. Скорость внесения изменений, скорость тестирования
    Проект стремительно развивается, в него постоянно вносятся изменения, порой немало? Тогда выбор должен падать на высокоуровневые языки, где любой функциональный блок можно быстро переписать. Для подтверждения – я думаю, гораздо проще дебажить тот же С++, чем ассемблер. А еще проще Java. Но тут очень много тонкостей, которые таятся даже не сколько в языке, сколько в разработчике с его стилем программирования и компиляторах. Тем не менее, язык вносит свою долю в это дело, так или иначе упрощая/осложняя работу программиста.
Читайте также:  Программирование бизнес процессов битрикс24

P.S. Хочется видеть в первую очередь конструктивные комментарии, которые могут дополнить статью или исправить мои ошибки (но так как топик из песочницы, комментарии выделить не смогу). Данная статья не основана на каких-либо источниках, писалась исключительно из своих соображений и из своей головы.

Источник

Блок схема выбора языка программирования

Язык программирования C# вобрал лучшие черты целого ряда своих предшественников. Кроме языка C#, необходимо указать еще несколько знаковых для настоящего времени языков программирования, а именно, Java и VisualBasic.

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

Принципиально важным отличием от предшественников является изначальнаяориентация на безопасность кода (что особенно заметно в сравнении с языками C и C++), данная безопасность прежде всего соблюдена в самой платформе.net, но о ней поговорим позже. Расширенная поддержка событийно-ориентированного программирования выгодно отличает язык программирования C# от целого ряда предшественников. Объединение лучших идей современных языков программирования (Java, C++, VisualBasic и др.) делает язык C# не просто суммой их достоинств, а языком программирования нового поколения.

Несмотря на значительное количество принципиальных преимуществ по сравнению с существующими аналогами, язык программирования C# не лишен и отдельных недостатков, которые, весьма вероятно, носят субъективный, локальный, временный характер. Прежде всего, необходимо отметить то обстоятельство, что язык программирования C# имеет довольно сложный синтаксис (можно утверждать, что примерно 75% его синтаксических возможностей аналогичны языку программирования Java, 10% — подобны языку программирования C++, а 5% — заимствованы из языка программирования VisualBasic). Объем действительно свежих концептуальных идей в языке C# относительно невысок (по мнению некоторых исследователей, он, составляет около 10% от общего объема конструкций языка).

До настоящего времени компилятор и среда разработки программного обеспечения, поддерживающие язык C#, обладают относительно невысокой производительностью (т.е. код программы на языке C# компилируется и выполняется примерно в 100 раз медленнее, чем тот же код на языке C). Справедливости ради нужно отметить, что производительность программ на C# вполне сравнима с тем же показателем для языка Java.

Читайте также:  Сколько видов языков программирования

И так подведём краткие итоги по преимуществам языка программирования С#:

1. Компонентно-ориентированное программирование;

2. Безопасный (по сравнению с языками C и C++) код;

3. Унифицированная система типизации;

4. Поддержка событийно-ориентированного программирования;

5. «Родной» язык для создания приложений в среде.net;

6. Объединение лучших идей современных языков программирования: Java, C++, VisualBasic и др.

Недостатки языка программирования C#:

1. Довольно сложный синтаксис (75% из Java, 10% из C++, 5% из VisualBasic);

2. Относительно немного свежих концептуальных идей (вероятно, менее чем 10% конструкций языка);

3. Относительно невысокая производительность (~ в 100 раз медленнее, чем язык C, хотя и сравнимая с языком Java).

Источник

Оцените статью