Файл: Описание и сравнительные особенности наиболее популярных языков.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%