Выбор программной среды для обучения и разработки прикладных программ в вузе 

В статье рассматриваются вопросы эффективного обучения студентов языку программирования. Приводится пример простейшей программы на Java и Delphi, разбираются этапы создания программы.

Исследуем вопрос о том, какой программной среде лучше учить будущих разработчиков прикладного программного обеспечения в вузе. Обратимся к рейтингам языков программирования, приведенным на сайте  http://www.tiobe.com  и  http://www.eweek.com/.  Данные  рейтинги  показывают (на февраль 2012г.), что на первом месте находится Java – 17%, на втором C – 16%, на третьем C# – 9%, на 11 месте Delphi – 2%. Означает ли это, что на Java в 11 раз удобней и быстрее разрабатывать программы и другими средами можно пренебречь в обучении?

Рассмотрим, к примеру, задачу создания оконного приложения, рассчитывающего формулу «z=x/y», на Java и Delphi. 

Для разработки программы на Java и на Delphi необходимы следующие этапы:

 Для разработки программы на Java и на Delphi необходимы следующие этапы:

Рассмотрим теперь наглядность и сложность реализации поставленной задачи. Основной  код модуля программы на Java следующий: 

package demo; 

import java.awt.Dimension; import java.awt.Font; import java.awt.Rectangle; import java.awt.Toolkit;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.JButton;

import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; 

public class Frame1 extends JFrame { private JButton jButton1 = new JButton();

private JTextArea jTextArea1 = new JTextArea(); private JTextArea jTextArea2 = new JTextArea(); private JTextArea jTextArea3 = new JTextArea(); private JLabel jLabel2 = new JLabel();

private JLabel jLabel3 = new JLabel(); private JLabel jLabel4 = new JLabel(); private JLabel jLabel5 = new JLabel(); 

public Frame1() { try { jbInit();

} catch (Exception e) { e.printStackTrace(); }

}

 

private void jbInit() throws Exception { this.getContentPane().setLayout(null); this.setSize(new Dimension(302, 216)); this.setTitle(«Простейшая программа на Java»); this.setResizable(false); 

jButton1.setText(«РЕШИТЬ»); jButton1.setBounds(new Rectangle(35, 100, 205, 40)); jButton1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e);

} });

jTextArea1.setBounds(new Rectangle(95, 15, 140, 20));

jTextArea1.setFont(new Font(«Tahoma», 0, 12));

jTextArea2.setBounds(new Rectangle(95, 40, 140, 20));

jTextArea2.setFont(new Font(«Tahoma», 0, 12));

jTextArea3.setBounds(new Rectangle(95, 70, 140, 20));

jTextArea3.setFont(new Font(«Tahoma», 0, 12)); jTextArea3.setEditable(false); jLabel2.setText(«a=«);

jLabel2.setBounds(new Rectangle(40, 15, 34, 14)); jLabel3.setText(«b=«);

jLabel3.setBounds(new Rectangle(40, 40, 35, 15)); jLabel4.setText(«c=a/b»);

jLabel4.setBounds(new Rectangle(40, 65, 35, 15)); jLabel5.setText(«by Talipov SN, Pavlodar, 2012»); jLabel5.setBounds(new Rectangle(65, 155, 165, 15)); this.getContentPane().add(jLabel5, null); this.getContentPane().add(jLabel4, null); this.getContentPane().add(jLabel3, null); this.getContentPane().add(jLabel2, null); this.getContentPane().add(jTextArea3, null); this.getContentPane().add(jTextArea2, null); this.getContentPane().add(jTextArea1, null); this.getContentPane().add(jButton1, null);

private void jButton1_actionPerformed(ActionEvent e) {

// ОСНОВНОЙ КОД ПРОГРАММЫ

String a, b, c; // Строковые переменные Double x, y, z; // Вещественные переменные

a = jTextArea1.getText(); // Получение значения из окна 1 b = jTextArea2.getText(); // Получение значения из окна 2 try { // Начало защищенного блока

x = Double.parseDouble(a); // Преобразование текстового значения в вещественное y = Double.parseDouble(b); // Преобразование текстового значения в вещественное z = x / y; // Вычисление выражения

// Проверка на: 0/0, z/0

if ((Double.isNaN(z) == true) || Double.isInfinite(z) == true) {

throw new Exception(«error»); // Если нет решения, то генерирование ошибки

}

DecimalFormat df = new DecimalFormat(«#0.00»); // Описание формата вещественного числа c = String.valueOf(df.format(z)); // Преобразование числа в строку

jTextArea3.setText(c); // Вывод ответа в окошко

} catch (Exception ee) { // Обработчики ошибок защищенного блока Toolkit.getDefaultToolkit().beep(); // Звуковой сигнал

jTextArea3.setText(«Неверные данные!»); // Обработка ошибки ввода или вычисления

} // Конец защищенного блока

}

Рассмотрим аналог программы на Delphi: unit Demo;

interface 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; 

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel;

Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

 

var Form1: TForm1; implementation

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

// ОСНОВНОЙ КОД ПРОГРАММЫ

var x,y,z: real; // Описание переменных begin

try // Начало защищенного блока

x:=strtofloat(edit1.Text); // Получение значения x из окна 1 y:=strtofloat(edit2.Text); // Получение значения y из окна 1 z:=x/y; // Вычисление выражения edit3.Text:=formatfloat('#0.00',z);

except // Обработчики ошибок защищенного блока

edit3.Text:='Неверные данные!';// Обработка ошибки ввода или вычисления beep; // Звуковой сигнал

end; // Конец защищенного блока end; 

end. 

При сравнении двух программ получается, что на Java необходимо написать 353 слова-примитива, на Delphi - 116 слов, что более чем в 3 раза меньше. Выходит, что на Java в три раза больше текста в коде программы и в три раза больше этапов в создании готовой программы, причем в программе на Java больше слов-примитивов не из-за синтаксиса, а из-за сложности языка программирования. А если было бы необходимо решить задачу с использованием баз данных, то сложность различалась бы не в разы, а в десятки раз.

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

Фамилия автора: С.Н. Талипов
Год: 2012
Город: Павлодар
Категория: Информатика
Яндекс.Метрика