Файл: Современные языки программирования (Теоретические основы языков программированияя).pdf
Добавлен: 25.05.2023
Просмотров: 226
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Теоретические основы языков программирования
1.1. Содержание понятия и классификация языков программирования
1.2. История создания языков программирования
Глава 2. Современные языки программирования
2.1. Анализ современных языков программирования
Я выбираю (для примера Java) именно этот вариант от David Eck and Richard Palais.
Теперь всё готово для создания ещё одного приложения:
Листинг 3. Реализация Java (файл triangle.java):
import java.io.*;
import java.util.StringTokenizer;
import java.lang.Double.*;
class Tric { // класс треугольник
public static final int nodes = 3;
Complex [] pt = new Complex[ nodes ];
public String toString() {
String ret = "";
for( int i = 0; i < nodes; i++ )
ret += "[" + ( new Double( pt[ i ].re ) ).toString() + "," +
( new Double( pt[ i ].im ) ).toString() + "] ";
return ret;
}
public double perimeter() {
double summa = 0.0;
for( int i = 0; i < nodes; i++ )
summa += pt[ i ].minus( pt[ nodes - 1 == i ? 0 : i + 1 ] ).r();
return summa;
}
public double square() {
Complex side1 = pt[ 1 ].minus( pt[ 0 ] ),
side2 = pt[ 2 ].minus( pt[ 0 ] );
return side1.r() * side2.r() *
Math.abs( Math.sin( side1.theta() - side2.theta() ) ) / 2.;
}
}
public class triangle {
public static void main( String[] args ) {
Console cons = System.console();
while( true ) {
String szStr = "";
Tric polygon = new Tric();
System.out.println( "координаты вершин в формате: X Y" );
for( int i = 0; i < Tric.nodes; ) {
szStr = cons.readLine( "%s%d%s", "вершина № ", i + 1, " : " );
if( null == szStr ) { // ^D
System.out.println( "завершение работы" );
System.exit( 0 );
}
StringTokenizer st = new StringTokenizer( szStr, " \r\n" );
try {
double x = ( new Double( (String)st.nextElement() ) ).doubleValue(),
y = ( new Double( (String)st.nextElement() ) ).doubleValue();
polygon.pt[ i ] = new Complex( x, y );
}
catch( java.util.NoSuchElementException ex ) {
System.out.println( "ошибка ввода!: " + ex.toString() );
continue;
}
catch( java.lang.NumberFormatException ex ) {
System.out.println( "ошибка ввода!: " + ex.toString() );
continue;
}
i++;
}
System.out.println( "вершин " + Tric.nodes + " : " + polygon.toString() );
System.out.println( "периметр = " + polygon.perimeter() );
System.out.println( "площадь = " + polygon.square() );
System.out.println( "---------------------------------" );
}
}
}
Компиляция в байт-код формата .class:
$ javac triangle_java.java
$ ls *.class
Complex.class triangle.class Tric.class
Независимо от того, помещены ли коды классов в один файл (как triangle и Tric) или импортируются из раздельных файлов как модули (как Complex), для каждого класса создаётся свой файл байт-кода.
Java существенно более объектный язык, чем рассмотренный ранее C++: здесь всё обязано быть классом, или не быть вовсе. Именно поэтому для запуска приложения Java мы обязаны создать фиктивный стартовый класс triangle, по существу не нужный.
$ java triangle
координаты вершин в формате: X Y
вершина № 1 : 1 1
вершина № 2 : 2 1
вершина № 3 : 1 2
вершин 3 : [1.0,1.0] [2.0,1.0] [1.0,2.0]
периметр = 3.414213562373095
площадь = 0.5
---------------------------------
координаты вершин в формате: X Y
вершина № 1 : 1
ошибка ввода!: java.util.NoSuchElementException
вершина № 1 : 1 2 3
вершина № 2 : 1 ff
ошибка ввода!: java.lang.NumberFormatException: For input string: "ff"
вершина № 2 : завершение работы
Выводы по Главе 2
Судя по тому, какую динамику роста популярности занял Java в 2017 году, посоперничать с ним другим языкам программирования в ближайшей перспективе будет непросто.
Из всех охваченных в обзоре языков только два языка — C и C++ используют технику «нативной» компиляции в машинный код используемой платформы. Все же остальные, в той или иной мере и технике, используют виртуальную исполняющую машину (среду выполнения). Это, очевидно, становится тенденцией последнего десятилетия. Все ранние проекты языков программирования (Algol, FORTRAN, COBOL, Pascal) предполагали компиляцию именно в исполнимый машинный код. Требование наличия исполняющей виртуальной машины может показаться, на первый взгляд, некоторым ограничивающим фактором. Но и чисто компилирующие реализации (C, C++) давно уже не исполняются как абсолютный бинарный код — невозможно перенести файл .exe из Windows в Linux, или наоборот, файл ELF-формата из Linux в Windows. Так что, с некоторой натяжкой, ядро операционной системы можно также считать исполняющей виртуальной машиной для бинарных форматов (ещё до недавнего времени ядро Linux содержало код для непосредственного запуска и выполнения файлов .class бит-кода Java, что было позже устранено за ненадобностью).
Заключение
На сегодняшний день, любое среднее и крупное предприятие, имеет в своем штате группу программистов, обладающими знаниями программирования различными языками, которые редактируют, изменяют, и модифицируют программы используемыми сотрудниками предприятия. Это говорит о том, что на рынке труда пользуются спросом обладающими знаниями и опытом работы с различными языками программирования.
В данной курсовой работе, нами были рассмотрены самые распространенные языки программирования, такие как: JAVA, С, С++, которые используется для научных вычислений, для обучения программированию начинающих программистов.
Рассмотрены так же реализации одной и той же задачи в совершенно различных языках программирования. В обзор включены практически все широко используемые языки, по крайне мере, на платформе операционной системы Linux. Сюда вошли 5 языков, во всех рейтингах называемые в числе наиболее используемых в реальных проектах: C, C++, Java, C#, Python.
Языков программирования в наше время великое множество. Мы рассмотрели лишь самые популярные из них.
Каждый имеет свои достоинства и недостатки из - за того, что они ориентированы на различные сферы программной деятельности. Один отлично работает с браузерами, но совершенно не подходит для написания Flash, другой – совсем наоборот. Каждый программист начинает с самых простых из них и в конце обучения выбирает или тот, который больше всего подходит ему из-за направления его деятельности, и становится специалистом в этой области, или же продолжает понемногу использовать каждый из них.
Список литературы
- Java. Методы программирования / под ред. Блинов И. Н., Романчик В. С. М. Четыре четверти, 2013. 34 с
- Афонин В.В., Никулин В.В. Методы моделирования и оптимизации с параметрами на языке С/С++ и MATLAB: в 2 ч. Саранск: Изд-во Мордов. ун-та, 2015. 184 с
Брайан У. Язык программирования C. 2-е издание. Пер. с англ. / Брайан У., Керниган, Деннис М., Ритчи. – М.: Издательский дом «Вильямс», 2009. – 304 с.
- Магамедова А.З, Дадаев А.М. Применение базовых алгоритмов обработки массивов в задачах по программированию на С++ // Информатизация образования и науки. 2016. № 1(29). С. 156. 161.
- Неклюдова С.А., Балса А.Р. Парадигмы программирования как инструменты разработ- чика программных систем // Информационные технологии и системы : межвузовский сбор- ник научных трудов. Выпуск 1 (12). – СПб., 2014.
- Пирс Б. Типы в языках программирования. М.: Лямбда пресс; Добросвет, 2012. 656 с.
- Серебряков В.А. Теория и реализация языков программирования / В.А. Серебряков. – М.: Физматлит, 2012. – 236 c.
- Крупнейший в Европе ресурс для IT-специалистов. [Электронный ресурс]. Режим доступа: https://habrahabr.ru/company/hh/blog/318450/ (дата обращения: 07.11.2017).
McALLISTER N. InfoWorld. «10 языков программирования, которые могут перевернуть мир IT» // Компьютерные вести [Электронный ресурс]. URL: http://www.kv.by/content/325498-10-yazykovprogrammirovaniya-kotorye-mogut-perevernut-mir-it (дата обращения: 08.11.2017).
PYPL Index [Электронный ресурс]. – Режим доступа: https://pypl.github.io/PYPL.html. (дата обращения: 09.11.2017).
Sketch – новый язык программирования, способный самостоятельно оптимизировать и завершать незаконченные участки кода // DailyTechInfo [Электронный ресурс]. URL: http://www. dailytechinfo.org/infotech/5691-sketch-novyy-yazyk-programmirovaniya-sposobnyy-samostoyatelnooptimizirovat-i-zavershat-nezakonchennye-uchastki-koda.html (дата обращения: 09.11.2017).
TIOBE Index [Электронный ресурс]. – Режим доступа: https://www.tiobe.com/tiobe-index//.(дата обращения: 09.11.2017).
Wyvern – новая система, позволяющая использовать несколько разных языков программирования при создании одной программы // DailyTechInfo [Электронный ресурс]. URL: http://www.dailytechinfo.org/infotech/6167-wyvern-novaya-sistema-pozvolyayuschaya-ispolzovat-neskolko- raznyh-yazykov-programmirovaniya-pri-sozdanii-odnoy-programmy.html (дата обращения: 08.11.2017).
Индекс TIOBE [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Индекс_TIOB. (дата обращения: 09.11.2017).
- Язык Wolfram Alpha – революция в области программирования // DailyTechInfo [Электронный ресурс]. URL: http://www.dailytechinfo.org/infotech/5709-yazyk-wolfram-alpha-revolyuciya-voblasti-programmirovaniya.html (дата обращения: 09.11.2017).
-
Неклюдова С.А., Балса А.Р. Парадигмы программирования как инструменты разработ- чика программных систем // Информационные технологии и системы : межвузовский сбор- ник научных трудов. Выпуск 1 (12). – СПб., 2014. ↑
-
Пирс Б. Типы в языках программирования. М.: Лямбда пресс; Добросвет, 2012. 656 с. ↑
-
Афонин В.В., Никулин В.В. Методы моделирования и оптимизации с параметрами на языке С/С++ и MATLAB: в 2 ч. Саранск: Изд-во Мордов. ун-та, 2015. 184 с ↑
-
Крупнейший в Европе ресурс для IT-специалистов. [Электронный ресурс]. Режим доступа: https://habrahabr.ru/company/hh/blog/318450/ (дата обращения: 07.11.2017). ↑
-
Java. Методы программирования / под ред. Блинов И. Н., Романчик В. С. М. Четыре четверти, 2013. 34 с ↑
-
Магамедова А.З, Дадаев А.М. Применение базовых алгоритмов обработки массивов в задачах по программированию на С++ // Информатизация образования и науки. 2016. № 1(29). С. 156. 161. ↑
-
Языки программирования [Электронный ресурс]. URL: http://life-prog.ru (дата обращения: 08.11.2017). ↑
-
McALLISTER N. InfoWorld. «10 языков программирования, которые могут перевернуть мир IT» // Компьютерные вести [Электронный ресурс]. URL: http://www.kv.by/content/325498-10-yazykovprogrammirovaniya-kotorye-mogut-perevernut-mir-it (дата обращения: 08.11.2017). ↑
-
McALLISTER N. InfoWorld. «10 языков программирования, которые могут перевернуть мир IT» // Компьютерные вести [Электронный ресурс]. URL: http://www.kv.by/content/325498-10-yazykovprogrammirovaniya-kotorye-mogut-perevernut-mir-it (дата обращения: 08.11.2017). ↑
-
Wyvern – новая система, позволяющая использовать несколько разных языков программирования при создании одной программы // DailyTechInfo [Электронный ресурс]. URL: http://www.dailytechinfo.org/infotech/6167-wyvern-novaya-sistema-pozvolyayuschaya-ispolzovat-neskolko- raznyh-yazykov-programmirovaniya-pri-sozdanii-odnoy-programmy.html (дата обращения: 08.11.2017). ↑
-
Sketch – новый язык программирования, способный самостоятельно оптимизировать и завершать незаконченные участки кода // DailyTechInfo [Электронный ресурс]. URL: http://www. dailytechinfo.org/infotech/5691-sketch-novyy-yazyk-programmirovaniya-sposobnyy-samostoyatelnooptimizirovat-i-zavershat-nezakonchennye-uchastki-koda.html (дата обращения: 09.11.2017). ↑
-
Язык Wolfram Alpha – революция в области программирования // DailyTechInfo [Электронный ресурс]. URL: http://www.dailytechinfo.org/infotech/5709-yazyk-wolfram-alpha-revolyuciya-voblasti-programmirovaniya.html (дата обращения: 09.11.2017). ↑
-
Индекс TIOBE [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Индекс_TIOB. ↑
-
TIOBE Index [Электронный ресурс]. – Режим доступа: https://www.tiobe.com/tiobe-index//. ↑
-
PYPL Index [Электронный ресурс]. – Режим доступа: https://pypl.github.io/PYPL.html. ↑
-
Брайан У. Язык программирования C. 2-е издание. Пер. с англ. / Брайан У., Керниган, Деннис М., Ритчи. – М.: Издательский дом «Вильямс», 2009. – 304 с. ↑