Современные языки программировния

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск

Ajax

Возник 18 февраля 2005 года( первое упоминание в статье Джесси Джеймса Гарретта "Новый подход к веб-приложениям" )

Создал: Джесси Джеймс Гарретт.

Особености

1. Использование технологии динамического обращения к серверу "на лету", без перезагрузки всей страницы полностью,например:

  • с использованием XMLHttpRequest (основной метод);
  • через динамическое создание дочерних фреймов;
  • через динамическое создание тега <script>.

2. Использование DHTML для динамического изменения содержания страницы.

Преимущества

  • Экономия трафика
    Использование AJAX позволяет значительно сократить трафик при работе с веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только небольшую изменившуюся часть.
  • Уменьшение нагрузки на сервер.
    AJAX позволяет несколько снизить нагрузку на сервер. К примеру, в Gmail, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.
  • Ускорение реакции интерфейса
    Поскольку нужно загрузить только изменившуюся часть, то пользователь видит результат своих действий быстрее.

Недостатки

  • Интеграция со стандартными инструментами браузера
    Динамически создаваемые страницы не регистрируются браузером в истории посещения страниц, поэтому не работает кнопка "Назад" предоставляющая пользователям возможность вернуться к просмотренным ранее страницам, но существуют скрипты которые могут решить эту проблему.
    Другой недостаток изменения содержимого страницы при постоянном URL заключается в невозможности сохранения закладки на желаемый материал. Частично решить эти проблемы можно с помощью динамического изменения идентификатора фрагмента (части URL после #), что позволяют многие браузеры.
  • Динамически загружаемое содержимое недоступно поисковикам (если не проверять запрос, обычный он или XHttpRequest)
    Поисковые машины не могут выполнять JavaScript, поэтому разработчики должны позаботиться об альтернативных способах доступа к содержимому сайта.
  • Старые методы учёта статистики сайтов становятся неактуальными.
    Многие сервисы статистики ведут учёт просмотров новых страниц сайта, для сайтов страницы которых широко используют AJAX, такая статистика теряет актуальность.

Что такое Ajax

Ajax - не технология. На самом деле это несколько технологий преуспевающих каждая в своей области, собранных в новое сильное направление. Ajax объединяет:

  • стандартизованное представление с использованием XHTML и CSS;
  • динамическое отображение и взаимодействие при помощи Document Object Model;
  • обмен и управление данными через XML и XSLT;
  • асинхронные получение данных с использованием XMLHttpRequest;
  • и JavaScript, связывающий всё это воедино.

Классическая модель веб-приложения действует следующим образом: большинство действий пользователя отправляют обратно на сервер HTTP-запрос. Сервер производит необходимую обработку - получает данные, обрабатывает числа, взаимодействует с различными унаследованными системами и затем выдаёт HTML страницу клиенту. Эта модель заимствована из первоначального применения веба как гипертекстовой среды, но те кто читали книгу знают, то что делает веб подходящим для гипертекста не обязательно делают его хорошим для программных приложений.

Как работает AJAX

Если вы когда-либо пользовались веб-клиентом Gmail или Google Maps, то замечали возможность проверки правописания и прокрутки по всему изображению, соответственно, без обновления страниц. AJAX — это технология, которая обрабатывает операции в JavaScript и асинхронно запускает на стороне сервера операции, предоставляющие желаемый результат.

В основе технологии AJAX лежит объект XMLHttpRequest. Изначально он появился в Internet Explorer, а затем — в Mozilla/Safari. Opera в свое время отличилась нестабильностью с точки зрения реализации XMLHttpRequest.

AJAX обеспечивает динамичность и асинхронность web-разработок при отсутствии необходимости обновления страниц. AJAX позволяет делать динамические запросы к серверу без видимой перезагрузки веб-страницы: пользователь не замечает, когда его браузер запрашивает данные.

AJAX в действии

Действие AJAX легче всего показать на портальном сценарии: просмотр сообщений электронной почты. Большинство веб-порталов позволяют пользователям предварительно просматривать содержимое почтового ящика с основной страницы. Однако, чтобы просмотреть содержимое сообщения, необходимо отдельно щелкнуть на каждом сообщении, при этом страница должна обновляться каждый раз. На этом примере можно увидеть возможность осуществления более богатого поведения, подобно аналогичному в Outlook Express и Mozilla Thunderbird, при этом задействовав существующие веб-технологии AJAX.

На основе этого строится портлет, предоставляющий не только доступ к списку недавних сообщений, но также обеспечивающий предварительный просмотр самих сообщений -всех из главной страницы без необходимости их обновления.

Чтобы получить доступ к содержимому сообщения, нужен серверный компонент, предоставляющий доступ к сообщениям. В нашем примере есть простой сервлет в качестве имитатора, который показывает сообщения через точку с запятой в следующей последовательности: от кого, тема, дата и тело сообщения::

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  if ("1".equals(req.getParameter("message_id"))) {
    resp.getWriter().println( "John Doe,Greetings,10 10-2005, Hi.I am doing good" ) ;
  } else if ("2".equals(req.getParameter("message_id"))) {
    resp.getWriter().println( "Joanna Doe,Hi,10-10-2005,Document is complete." );
  } else if ("3".equals(req.getParameter("message_id"))) {
    resp.getWriter().println("Joanna Doe,Hi,10-10-2005,Meeting is at 3.");
    ...
  } else {
    resp.getWriter().println( ",NA ,NA ,NA ,Nothing to display" );
  } //end else
} //end service


Пример

Вызов AJAX. Обратите внимание на то, что для различных браузеров требуются разные методы реализации для объекта XMLHttpRequest:

function getHTTPRequestObject() {
  var xmlHttpRequest;
  /*@cc_on
  @if (@_jscript_version >= 5)
  try {
    xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (exception1) {
    try {
      xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (exception2) {
      xmlHttpRequest = false;
    }
  }
  @else
    xmlhttpRequest = false;
  @end @*/
 
  if (!xmlHttpRequest && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlHttpRequest = new XMLHttpRequest();
    } catch (exception) {
      xmlHttpRequest = false;
    }
  }
  return xmlHttpRequest;
}
 
var httpRequester = getHTTPRequestObject(); /* Когда страница
                            загрузилась, создаем xml http объект */

В данном коде используются аннотации Internet Explorer для реализации объекта AJAX. Другие браузеры, выполняющие данный сценарий, будут просто игнорировать разделы с аннотациями к функции getHTTPRequestObject(). Помните о том, что ваш браузер должен поддерживать JavaScript v1.5 и более поздние версии.

Источники материала и полезные ссылки

Python

История языка

Создание Python было начато Гвидо ван Россумом (Guido van Rossum) в 1991 году.
За основу были взяты ABC и Модула-3.
В качестве названия было выбрано Python в честь комедийных серий BBC "Летающий цирк Монти-Питона".

Особенности

  • Управление памятью - полностью автоматическое — ненужно волноваться относительно распределения или освобождения памяти, и никакой опасности относительно “опасной ссылки ”. Java - единственный язык, который предлагает это.
  • Типы связаны с объектами, а не с переменные. Это означает, что переменной может быть назначено значение любого типа, и что (например) массив может содержать объекты различных типов. Традиционные языки не предлагают это. Java делает это, но не идеально.
  • Операции обычно выполняются в более высоком уровне абстракции. Это частично результат того, как написан язык, и частично результат расширенной стандартной библиотеки кодов, которая поставляется вместе с Python
  • Любой объект может быть напечатан при использовании оператора print. Это очень полезно при отладке.
  • Python поддерживает целые числа с бесконечной точностью.
  • Управление памятью автоматическое, то есть Python использует " garbage collector (коллектор мусора) ", чтобы освобождать память, и это не нужно делать явно
  • Переменные Python не нужно объявлять — они появляются, когда им присваивают что-то. Но, делая попытку использовать переменную прежде, чем что-либо присвоено, вылезет ошибка во время выполнения программы.

Управляющие конструкции

<xh4> Оператор «если» </xh4>

if <условие1>: <оператор1>
    [ elif <условие2>: <оператор2>]*
  [ else: <оператор3> ]</code>

Часть в квадратных скобках является необязательной. Следующий за скобками символ «*» означает, что заключенная в скобки часть может быть записана неоднократно одна за другой.
Здесь, при истинности <условия1> будет выполнен <оператор1> и проигнорированы ветки elif и else. В противном случае, если истинно <условие2>, то выполняется <оператор2>, ветка else игнорируется. Иначе выполняется <оператор3>.

<xh4> Цикл «пока» </xh4>

while <условие>:
    <оператор1>
[else: <оператор2>]

<Оператор1> будет выполняться все время, пока истинно <условие>. При нормальном завершении цикла, т.е. без применения break, выполнится <оператор2>.

<xh4> Цикл «для» </xh4>

for <переменная> in <список>:
    <оператор1>
[else: <оператор2>] 

<Переменная> пробегает все элементы <списка> и для каждого текущего значения <переменной> выполняется <оператор1>. При нормальном завершении цикла, т.е. без применения break, выполнится <оператор2>.

<xh4> break </xh4>

break 

Осуществляет немедленное завершение циклов while и for.

<xh4> continue</xh4>

continue

Вызывает немедленное выполнение следующей итерации циклов while и for.

<xh4> return </xh4>

return [<результат>]

Осуществляет возврат из функции или метода класса, возвращая значение <результат>.

Примеры кода

<xh4> Классика: Hello World! </xh4>

print 'Hello World!'

<xh4> Пример сложения двух чисел </xh4>

a = 2
b = 3
print a+b

<xh4> Пример сравнения чисел a, b </xh4>

a = 3
b = 5
 
if a > b:
    print 'a > b'
elif a == b:
    print 'a = b'
else:
    print 'a < b'

<xh4> Пример работы со строками </xh4>

r1 = 'my string 1'
str2 = 'my string 2'
 
# результат: сумма двух строк
print str1 + str2
# результат: вывод значений элементов строки str1 с индекса 0 до 1 включительно
print str1[0:2]

Язык сегодня

Python используется для разработки приложений и делает это гораздо быстрее, чем традиционные языки типа C, C++ или Java . Этот язык работает в равной степени хорошо на Windows, UNIX, Macintosh, и OS/2. Он может использоваться, чтобы легко разрабатывать малые приложения или сценарии и чтобы разрешать развитие(развертку) больших программ. Python предлагает доступ к мощному и легкому в использовании комплекту инструментальных средств графического интерфейса пользователя. Распространяется бесплатно.

Со времени первой разработки данный язык развивался при поддержке тех организаций, в которых Гвидо работал. Особенно активно язык совершенствуется в настоящее время, когда над ним работает не только команда создателей, но и целое сообщество программистов со всего мира. И все-таки последнее слово о направлении развития языка остается за Гвидо ван Россумом.

Топик написан по материалам:

Из современной истории

9 сентября 2006 года версии Python 2.5 присвоен статус FINAL. Утверждается,что в сравнении с версией 2.4 было наложено свыше 350-ти заплаток и исправлено более 450-и ошибок.

18 октября 2006 года появилась версия Python 2.4.4 FINAL От предыдущих версий ветки 2.4 она отличается только исправлениями ряда ошибок; никаких новых возможностей не добавлено.

Предыдущая версия Python 2.4 выпущена 30 ноября 2004 года. По утвержнениям разработчиков Python 2.4 стал значительно быстрее своего предшественника, благодаря тому, что часть стандартных модулей была переписана на C. Появился новый ключ командной строки "-m modulename", предназначенный для вызова модуля из стандартной библиотеки. Произошли изменения и в синтаксисе языка. Так, Python 2.4 поддерживает многострочные конструкции import, выражения-генераторы, декораторы функций, имеет новый встроенный тип decimal (десятичное число). Windows-версия теперь распространяется в форме пакета MSI.

О новом Pythonе

В сентябре 2008 года должны выйти сразу две версии языка Python – 2.6 и 3.0. Версия 3.0 потеряет обратную совместимость с линейкой 2.x. Облегчить переход на новую ветку должна версия 2.6, в которой будут реализованы основные возможности из Python 3.0, но в которой еще сохранится обратная совместимость с предыдущими версиями. Таким образом, в версии 2.6 уже можно будет пользоваться многими возможностями Python 3.0, но в то же время старый код будет продолжать работать, и будет время для перехода на Python 3.0.

Далее приведены основные изменения, произошедшие в языках 2.6 и 3.0 по сравнению с версией 2.5:

  • Python 2.6. Появился новый параметр командной строки -3 для предупреждений об использовании конструкций, которые не будут работать в Python 3.0.
  • Python 2.6, 3.0. Появился новый способ форматирования строк с помощью метода format().
  • Python 2.6, 3.0. Появился новый способ создания свойств.
  • Python 2.6, 3.0. Появилась возможность создавать абстрактные классы с абстрактными методами и свойствами.
  • Python 2.6, 3.0. Изменился синтаксис обработки исключений. Классы вызываемых исключений в Python 3.0 должны быть производными от базового класса BaseException.
  • Python 2.6, 3.0. with теперь полноценное ключевое слово.
  • Python 2.6, 3.0. Введены особые числа с плавающей точкой – nan, -inf и +inf.
  • Python 2.6, 3.0. Появились новые функции для работы с комплексными числами.
  • Python 3.0. Все строки теперь используют Unicode, класса unicode больше нет.
  • Python 3.0. print теперь является функцией (в Python 2.6 возможно использование print и как функции, и как ключевого слова).
  • Python 3.0. Разделены операторы дробного (/) и целочисленного (//) деления.
  • Python 3.0. Функция xrange() заменила функцию range().
  • Python 3.0. Новый способ документирования функций и методов.
  • Python 3.0. Оператора <> больше нет, вместо него != .

Visual Basic

Общие сведения

Visual Basic .NET – это ЯП, который предназначен для достаточно быстрого и эффективного создания приложений, имеющих удобный интерфейс. С помощью Visual Basic 2008 можно создавать приложения для операционной системы Windows, Веб, портативных устройств (КПК) и других сред. Среда разработки VB.net - Microsoft Visual Studio. Одним из её важнейших преимуществ является соединение воедино сред разработки для нескольких популярных сегодня языков Microsoft Visual Basic, Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual J#. Доступна и бесплатная версия Visual Studio Express, которая умещается всего на одном CD, но разработчик начального и среднего уровня разницы между Express и Professional не найдёт. Платформа .NET позволяет использовать в своих проектах колоссальное количество встроенных библиотек, что очень сильно упрощает разработку.

Немного истории

Visual Basic .NET – это новый этап развития Visual Basic, который, в свою очередь, основывается на ЯП Basic, разработанном в 1963 году. Конечно сегодняшний VB.net лишь немногим напоминает Basic 1963 года, но именно постоянная эволюция позволила ему дожить до своего 45-летия. Первая версия Visual Basic .NET была выпущена в феврале 2002 г. Второй релиз в марте 2003 г., третий в конце 2005 г., в начале 2008 года стала доступна и 2008 версия.

Пример кода (из Wikipedia)

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Графика
Me.CreateGraphics.DrawBezier(New System.Drawing.Pen(Color.Blue), 0, 0, 100, 100, 600, 600, 0, 400)
Me.CreateGraphics.DrawBezier(New System.Drawing.Pen(Color.Blue), 0, 0, 600, 600, 100, 100, 400, 0)
Me.CreateGraphics.DrawLine(New System.Drawing.Pen(Color.Blue), 0, 0, 600, 600)
'Система
MessageBox.Show("User name: " + My.User.Name.ToString + vbCrLf + _
"Screen name: " + My.Computer.Screen.DeviceName.ToString + vbCrLf + _
"Ports count: " + My.Computer.Ports.SerialPortNames.Count.ToString, _
"Box Caption", MessageBoxButtons.OK, MessageBoxIcon.Error)
'Сеть
Dim WC As New System.Net.WebClient
WC.DownloadFile("http://server.net/filename.exe", "C:\myfile.exe")
WC = Nothing
End Sub
End Class

Вывод

VB – это, безусловно, один из самых популярных, простых и мощных ЯП. Интуитивно понятный синтаксис сильно упрощает и ускоряет процесс разработки. А платформа .net и среда разработки Visual Studio расширяют возможности языка практически до бесконечности. Алексей Саатчи 2008 www.Sa-IT.ru