Язык программирования
В дальнейшем под языком программирования будет пониматься язык программирования высокого уровня, поскольку вопрос о выборе языка низкого уровня практически не возникает. Языки низкого уровня обычно вводятся в рассмотрение тогда, когда всю программу либо ее специфическую часть не удается реализовать на языке высокого уровня. Например версия Бейсика на персональной ЭВМ может оказаться очень ограниченной и ограничивающей, поэтому приходится использовать машинные коды или добавления машинного уровня к Бейсику, такие как РЕЕК и РОКЕ, для микро- ЭВМ может оказаться, что весь выбор состоит только из Бейсика и машинного кода.
Однако это всего лишь повод для того, чтобы попытаться установить на микро-ЭВМ более мощный язык высокого уровня, типа Паскаля. Для тех же, кто рассматривает возможность применения машинного кода или ассемблера, совет может быть только один — не делать этого. Если к этому не принуждает абсолютная недоступность других средств, то единственным оправданием использования машинного кода является невозможность получения результата каким-либо другим путем. Обычно такие ситуации возникают лишь в специфических областях применения вычислительной техники, таких как системное программирование или управление в реальном масштабе времени.
Преимущества машинного кода (детализация управления, максимальная эффективность) значительно перекрываются недостатками (трудности написания кода, его тестирования и последующего сопровождения). Люди, использующие языки низкого уровня, существенно недооценивают эти трудности, так же как и те, кто программирует на довольно примитивных языках высокого уровня, тапа Бейсика или Фортрана, обычно существенно недооценивают преимущества перехода на более мощный язык. Сегодня большинство мощных языков высокого уровня наряду с преимуществами конструкций и управления высокого уровня располагают большинством возможностей языков низкого уровня. В дальнейшем будут сделаны оговорки в тех местах, где может быть выбран язык ассемблера, но основное внимание будет уделено выбору языка высокого уровня.
Критерии выбора. Так много мнений о языках программирования и об их относительных преимуществах существует потому, что имеется множество критериев их оценки. Есть много различных равноправных путей задания относительных весов и приоритетов для этих критериев, и в действительности могут возникать в лучшем случае потенциальные, а иногда идеальные конфликты, например между читабельностью и краткостью или между эффективностью и защищенностью от ошибок.
Программисту следует: во-первых, сознательно выбирать критерии, пользоваться ими рационально й не увлекаясь ; во-вторых, присвоив им относительные веса, соотносить их с требованиями решаемой задачи. Насколько возможно, он должен пытаться сознавать и учитывать сбои собственные пристрастия и к отдельным языкам, и к определенным критериям. Программисты так же, как и другие люди, склонны доверять инстинкту и интуитивным доводам. Вопреки Вашему естественному стремлению добиться уменьшения времени прогона или увеличения надежности и защищенности от ошибок будут встречаться ситуации, когда эти критерии окажутся менее важными, чем другие, или же цела их выполнения будет слишком высока.
С критериями оценки неразрывно связаны критерии разработки языков. Понимание целей разработки различных языков дает возможность выбирать язык, соответствующий конкретным условиям, хотя, конечно же, целей разработки для разных языков удалось добиться в разной степени. Вообще говоря, имеет значение возраст языка — чем он больше, тем менее четко язык описан: одни цели разработки (имеются в виду неочевидные цели разработки), по всей видимости, раньше считались само собой разумеющимися в то время как другие возможные критерии не рассматривались вообще.

