Файл: Описание и сравнительные особенности наиболее популярных языков.pdf
Добавлен: 30.03.2023
Просмотров: 69
Скачиваний: 2
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом легким для использования непрограммистами.
Программа-приветствие выглядит так:
<!DOCTYPE HTML>
<html>
<body>
<script>
alert( 'Hello, world!' );
</script>
</body>
</html>
Одним из достоинств JavaScript является гибкость языка, которая позволяет использовать множество шаблонов программирования применительно к конкретным условиям. Взаимодействие с приложением может осуществляется даже через текстовые редакторы. К недостаткам относят безопасность: JavaScript может использовать систему пользователя, поэтому вредоносный код может быть запущен на клиентской машине. Также JavaScript иногда интерпретируется по-разному разными браузерами. Различные механизмы компоновки могут отображать JavaScript по-разному, что приводит к несогласованности с точки зрения функциональности и интерфейса. К недостаткам часто относят и систему наследования – в JavaScript реализовано наследование, основанное на прототипах.
В практической части данной работы будут отмечены особенности языка JavaScript будут изучены подробнее.
C# - объектно-ориентированный язык программирования. Мультипарадигмальный. Разработан в 2000 году. Относится к семье языков Си, его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщенные типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Это относительно простой, удобный и современный язык, по мощности не уступающий С++, но существенно повышающий продуктивность разработок.
Приведем в качестве примера синтаксиса ту же программу-приветствие:
using System;
namespace HelloWorld
{
class Hello
{
static void Main()
{
Console.WriteLine("Hello World!");
}
}
}
Следует отметить, что указанный год разработки для каждого из рассмотренных языков относится к первой выпущенной версии, при этом обозначенные особенности изложены для актуальных на сегодняшний день версий (прежде всего, мультипарадигмальность). Анализ истории развития языков программирования и сравнительных классификаций показывает, что среди десятков актуальных на сегодняшний день языков можно выделить ряд взаимосвязей, обусловленных их предшественниками. Ни один из языков не является абсолютно уникальным лексически, синтаксически и семантически, языки исторически связанны между собой, и наиболее популярные из них обладают свойством мультипарадигмальности, даже при условии, что изначально разрабатывались строго в одной парадигме. Языки Java, JavaScript, Pascal и C# , созданные в период с 1991 по 2000 год и увидевшие с даты создания несколько своих версий, являются примерами такой мультипарадигмальности, расширяемой в новых выпусках. Они уверенно занимают верхние строчки рейтингов и несомненно имеют перспективы и в будущем программирования.
Особенности языка программирования на примере JavaScript
Сравнительные особенности JavaScript, примеры синтаксиса
Как уже было изложено в рамках предыдущей главы, язык JavaScript мультипарадигмален: он объединяет в себе объектно-ориентированное (прототипное), обобщенное, функциональное, императивное, аспектно-ориентированное и событийно-ориентированное программирование.
Структурно JavaScript можно представить в виде объединения трех четко различимых друг от друга частей:
- ядро (ECMAScript)
- объектная модель браузера (BOM)
- объектная модель документа (DOM)
Если рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная модель документа могут не поддерживаться.
Имена переменных и функций в JavaScript должны начинаться с буквы, $ или символа подчеркивания. Они могут даже содержать эмодзи или иероглифы! Идентификаторы зависимы от регистра: example и Example – это разные переменные.
Нельзя использовать в качестве имен зарезервированные слова языка: break, do, instanceof, typeof, case, else, new, var, catch, finally, return, void, continue, for, switch, while, debugger, function, this, with, default, if, throw, delete, in, try, class, enum, extends, super, const, export, import, implements, let, private, public, interface, package, protected, static, yield.
Выражения – это структурные единицы кода, которые можно вычислить и преобразовать в значение.
Логические значения true и false используются в сравнениях, условиях и циклах. Все остальные типы данных могут быть приведены к логическому значению.
Функция – это самостоятельный блок кода JavaScript, который можно повторно использовать в программе. Особенность функций в том, что их можно вызывать, передавать им аргументы и получать некоторое новое значение.
Пример кода на JavaScript №1
Рассмотрим программу, предлагающую сыграть в примитивный аналог игры AngryBirds. Пользователю предлагается ввести цифру, угадав запрограммированное значение нужного угла выстрела.
Рисунок. 3 Выполнение кода программы примера №1
Код:
<meta charset="utf-8">
<script>
alert("Попади птицей по свинье!");
var angle=parseInt(prompt("У тебя есть только одна птица. Перед тобой - две свиньи: одна повыше, другая пониже. Введи угол, под которым ты будешь стрелять:"));
if (isNaN(angle)){
alert("Ты проиграл! В следующий раз вводи число");
}
else if (angle==0) {
alert("Ты проиграл! Угол, равный нулю? Серьезно?");
} else if (angle<0 || angle>=180) {
alert("Ты проиграл! Такой угол невозможен");
} else if (angle>90 && angle<180) {
alert("Какая неудача! Ты выстрелил в противоположную сторону! Свиньи все еще впереди - и они торжествуют.");
} else if (angle==90) {
alert("Тысяча чертей! Ты выстрелил птицей прямо вверх, и она упала обратно прямо на тебя");
} else if (angle<90 && angle>75){
alert("Проклятые свиньи! Птица пролетела слишком высоко");
} else if (angle<=75 && angle>=65){
alert("Победа! Твоя птица поразила верхнюю свинью и падая, сбила вторую свинью тоже");
} else if (angle<65 && angle>45) {
alert("Проклятые свиньи! Птица пролетела ровно между ними, не задев ни одну");
} else if (angle==45) {
alert ("Прямо в свинью! К сожалению, та свинья, что повыше, все еще хрюкает");
} else {
alert("Тысяча чертей! Птица пролетела слишком низко, и проклятые свиньи издевательски хрюкают над тобой");
}
alert("Конец игры")
</script>
В данном случае, для удобства тестирования кода на веб-ресурсе https://js.do используется опция языка встроить код непосредственно в веб страницу, используя HTML теги <script>, но вместо указания файла в атрибуте src, код помещается между тегами. В ином случае начальный тег бы выглядел так:
<!-- Код записан в .js файле и включен через атрибут src тега script. -->
<script src="C:\Users\Raenel\Desktop\Курсовая пример 1 свиньи.js">
</script>
В приведенном примере множественно используется блок else if – для он служит для проверки нескольких вариантов условий. Выигрыш соответствует условию ввода пользователем значения в диапазоне от 65 до 75 включительно.
Рассмотрим более сложный пример.
Пример кода на JavaScript №2
Игра в очко (карты). Игроку предлагается набрать карты, значение которых в сумме будет больше, чем у дилера, но не более 21.
Рисунок. 4 Выполнение кода программы примера №2
Рассмотрим код.
<meta charset="utf-8">
<script>
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getCard() {
var cards =
return cards[getRandomInt(0, cards.length - 1)];
}
function getSum(arr) {
var sum = arr.length;
var sumCard = 0;
for (var i=0; i<=(sum-1); i++) {
var n = arr[i];
if ( isNaN(n) && n != 'A') {
sumCard = sumCard + 10;
}
else if (n != 'A') {
sumCard = sumCard + parseInt(n);
}
}
for (var i=0; i<=(sum-1); i++) {
var n = arr[i];
if (n == 'A' && sumCard<=10) {
sumCard = sumCard + 11;
}
else if (n == 'A') {
sumCard = sumCard + 1;
}
}
sum = sumCard;
return sum;
}
function getStatus() {
return 'Дилер: ' + dealer.join(' ') + ' Игрок: ' + player.join(' ') + '.';
}
var dealer = [getCard()];
var player = [getCard(), getCard()];
var answer = ' ';
do {
answer = prompt(getStatus() + ' Хотите еще карту? 1 - да, любое другое значение - нет')
if (answer == '1') {
player.push(getCard());
}
if (getSum(player) > 21) {
answer = '0';
alert('У вас перебор ' + getStatus());
} else if (getSum(player) == 21) {
alert('У вас Black Jack');
alert('Дилер берет карту');
dealer.push(getCard());
if (getSum(dealer) == 21) {
answer = '0';
alert('У вас ничья ' + getStatus() + ' У дилера: ' + getSum(dealer) + ' и у вас: ' + getSum(player));
} else {
do {
alert(getStatus() + ' У дилера меньше, он берет еще карту.');
dealer.push(getCard());
answer = '1';
if (getSum(dealer) > 21) {
answer = '0';
alert('Вы выиграли! ' + getStatus() + ' У дилера перебор: ' + getSum(dealer));
}
} while (answer == '1')
}
} else {
if (answer != '1' && answer != '0') {
answer = '1';
alert('Дилер берет карту');
dealer.push(getCard());
alert(getStatus());
if (getSum(dealer) == getSum(player)) {
answer = '0';
alert('У вас ничья ' + getStatus() + ' У дилера: ' + getSum(dealer) + ' и у вас: ' + getSum(player));
} else if (getSum(dealer) < getSum(player)) {
do {
alert(getStatus() + ' У дилера меньше, он берет еще карту.');
dealer.push(getCard());
answer = '1';
if (getSum(dealer) > 21) {
answer = '0';
alert('Поздравляю, Вы выиграли! ' + getStatus() + ' У дилера перебор: ' + getSum(dealer));
}
} while (answer == '1')
} else {
answer = '0';
alert('Сожалею, Вы проиграли! ' + getStatus() + ' У дилера больше: ' + getSum(dealer));
}
}
}
} while (answer == '1');
</script>
Аналогично предыдущему примеру, используются условные операторы. Также используется оператор цикла while, позволяющий игроку продолжать. Генератор использует объявленные варианты значений карт - '6', '7', '8', '9', '10', 'J', 'Q', 'K', "A" – и возвращает одно новое значение для каждого шага игры.
Рассмотренные примеры позволяют сделать выводы об основных особенностях лексики, синтаксиса и семантики языка программирования JavaScript, а также подтверждают классификацию данного языка программирования как обладающего низким порогом вхождения.
Заключение
В настоящей работе было проведено исследование современных языков программирования в контексте их общих и отличительных черт. В процессе ознакомления с историей возникновения и развития языков программирования был сделан вывод о том, что многие языки переживают выход нескольких версий и существенную переработку, не теряя своей популярности. В определенный период исторического развития (80-е годы 20 века) на смену появления новых парадигм пришла тенденция консолидации и приобретения языками, переживающими развитие и выпуски обновленных версий, некоторых черт, заимствованных у конкурентов. Постепенное развитие данном направлении привело к тому, что четыре наиболее популярных языка, лидирующие в рассмотренных рейтингах, являются мультипарадигмальными. Также следует отметить выявленную общую тенденцию на повышение уровня языков, появление языков т.н. сверхвысокого уровня, а также появления языков, доступных для понимания непрограммистам. При исследовании вопроса об измерении популярности языков было установлено, что языки программирования, расположенные в верхних 5 или 10 строчках индексов популярности, не уходят на протяжении многих лет, лишь периодически меняясь друг с другом местами. Анализ истории развития языков программирования и сравнительных классификаций показывает, что среди десятков актуальных на сегодняшний день языков можно выделить ряд взаимосвязей, обусловленных их предшественниками. Иными словами, ни один из языков не является абсолютно уникальным лексически, синтаксически и семантически, языки исторически связанны между собой. Языки Java, JavaScript, Pascal и C# , созданные в период с 1991 по 2000 год и увидевшие с даты создания несколько своих версий, являются примерами возрастающей с новыми версиями универсальности. Они уверенно занимают верхние строчки рейтингов и несомненно имеют перспективы и в будущем программирования.
В работе были исследованы общие характеристики четырех наиболее распространенных языков программирования и приведены примеры программного кода на одном из этих языков – JavaScript. Это позволило подтвердить условную, но распространенную в профессиональном сообществе классификацию данного языка программирования как языка, обладающего низким порогом вхождения. Также приведенные примеры кода, представляющие собой две простые игры, позволяют наглядно продемонстрировать особенности лексики, синтаксиса и семантики языка программирования JavaScript.
Приложение 1. Индекс TIOBE на октябрь 2019 года
Октябрь 2019, место |
Октябрь 2018, место |
Изменение |
Язык программирования |
Рейтинг |
Изменение |
1 |
1 |
- |
Java |
16.884% |
-0.92% |
2 |
2 |
- |
C |
16.180% |
+0.80% |
3 |
4 |
Python |
9.089% |
+1.93% |
|
4 |
3 |
C++ |
6.229% |
-1.36% |
|
5 |
6 |
C# |
3.860% |
+0.37% |
|
6 |
5 |
Visual Basic .NET |
3.745% |
-2.14% |
|
7 |
8 |
JavaScript |
2.076% |
-0.20% |
|
8 |
9 |
SQL |
1.935% |
-0.10% |
|
9 |
7 |
PHP |
1.909% |
-0.89% |
|
10 |
15 |
Objective-C |
1.501% |
+0.30% |
|
11 |
28 |
Groovy |
1.394% |
+0.96% |
|
12 |
10 |
Swift |
1.362% |
-0.14% |
|
13 |
18 |
Ruby |
1.318% |
+0.21% |
|
14 |
13 |
Assembly language |
1.307% |
+0.06% |
|
15 |
14 |
R |
1.261% |
+0.05% |
|
16 |
20 |
Visual Basic |
1.234% |
+0.58% |
|
17 |
12 |
Go |
1.100% |
-0.15% |
|
18 |
17 |
Delphi/Object Pascal |
1.046% |
-0.11% |
|
19 |
16 |
Perl |
1.023% |
-0.14% |
|
20 |
11 |
MATLAB |
0.924% |
-0.39% |