Современные языки программировния — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «== Ajax == 1.Возник 18 февраля 2005 года( первое упоминание в статье Джесси Джеймса Гарретта "Новый…»)
 
Строка 120: Строка 120:
 
Ajax: Новый подход к веб-приложениям : http://www.codenet.ru/webmast/js/ajax/AJAX-New.php
 
Ajax: Новый подход к веб-приложениям : http://www.codenet.ru/webmast/js/ajax/AJAX-New.php
 
Programmer's Klondike http://www.proklondike.com/
 
Programmer's Klondike http://www.proklondike.com/
 +
 +
== Python ==
 +
=== История языка ===
 +
Создание Python было начато '''Гвидо ван Россумом (Guido van Rossum)'''
 +
в '''1991''' году. <br />
 +
За основу были взяты ABC и Модула-3. <br />
 +
В качестве названия было выбрано Python в честь комедийных серий BBC "Летающий цирк Монти-Питона".
 +
 +
=== Особенности ===
 +
* Управление памятью - полностью автоматическое — ненужно волноваться относительно распределения или освобождения памяти, и никакой опасности относительно “опасной ссылки ”. Java - единственный язык, который предлагает это.
 +
 +
* Типы связаны с объектами, а не с переменные. Это означает, что переменной может быть назначено значение любого типа, и что (например) массив может содержать объекты различных типов. Традиционные языки не предлагают это. Java делает это, но не идеально.
 +
 +
* Операции обычно выполняются в более высоком уровне абстракции. Это частично результат того, как написан язык, и частично результат расширенной стандартной библиотеки кодов, которая поставляется вместе с Python
 +
 +
* Любой объект может быть напечатан при использовании оператора print. Это очень полезно при отладке.
 +
 +
* Python поддерживает целые числа с бесконечной точностью.
 +
 +
* Управление памятью автоматическое, то есть Python использует " garbage collector (коллектор мусора) ", чтобы освобождать память, и это не нужно делать явно
 +
 +
* Переменные Python не нужно объявлять — они появляются, когда им присваивают что-то. Но, делая попытку использовать переменную прежде, чем что-либо присвоено, вылезет ошибка во время выполнения программы.
 +
 +
=== Управляющие конструкции ===
 +
<xh4> Оператор «если» </xh4>
 +
'''if''' <условие1>: <оператор1>
 +
    [ '''elif''' <условие2>: <оператор2>]*
 +
  [ '''else''': <оператор3> ]</code>
 +
 +
Часть в квадратных скобках является необязательной. Следующий за скобками символ «*» означает, что заключенная в скобки часть может быть записана неоднократно одна за другой. <br />
 +
Здесь, при истинности <tt><условия1></tt> будет выполнен <tt><оператор1></tt> и проигнорированы ветки <tt>elif</tt> и <tt>else</tt>. В противном случае, если истинно <tt><условие2></tt>, то выполняется <tt><оператор2></tt>, ветка <tt>else</tt> игнорируется. Иначе выполняется <tt><оператор3></tt>.
 +
 +
<xh4> Цикл «пока» </xh4>
 +
 +
'''while''' <условие>:
 +
    <оператор1>
 +
['''else''': <оператор2>]
 +
 +
<tt><Оператор1></tt> будет выполняться все время, пока истинно <tt><условие></tt>. При нормальном завершении цикла, т.е. без применения <tt>break</tt>, выполнится <tt><оператор2></tt>.
 +
 +
<xh4> Цикл «для» </xh4>
 +
 +
'''for''' <переменная> '''in''' <список>:
 +
    <оператор1>
 +
['''else''': <оператор2>]
 +
 +
<tt><Переменная></tt> пробегает все элементы <tt><списка></tt> и для каждого текущего значения <переменной> выполняется <tt><оператор1></tt>. При нормальном завершении цикла, т.е. без применения <tt>break</tt>, выполнится <tt><оператор2></tt>.
 +
 +
<xh4> break </xh4>
 +
'''break'''
 +
 +
Осуществляет немедленное завершение циклов <tt>while</tt> и <tt>for</tt>.
 +
 +
<xh4> continue</xh4>
 +
'''continue'''
 +
 +
Вызывает немедленное выполнение следующей итерации циклов <tt>while</tt> и <tt>for.</tt>
 +
 +
<xh4> return </xh4>
 +
'''return''' [<результат>]
 +
 +
Осуществляет возврат из функции или метода класса, возвращая значение <tt><результат></tt>.
 +
 +
=== Примеры кода ===
 +
<xh4> Классика: Hello World! </xh4>
 +
<source lang="python">
 +
print 'Hello World!'
 +
</source>

Версия 08:08, 3 сентября 2009

Ajax

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

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

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

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


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

  • Экономия трафика

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

  1. Уменьшение нагрузки на сервер.

AJAX позволяет несколько снизить нагрузку на сервер. К примеру, в Gmail, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.

  1. Ускорение реакции интерфейса

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

Недостатки:

  • Интеграция со стандартными инструментами браузера
    Динамически создаваемые страницы не регистрируются браузером в истории посещения страниц, поэтому не работает кнопка "Назад" предоставляющая пользователям возможность вернуться к просмотренным ранее страницам, но существуют скрипты которые могут решить эту проблему.
    Другой недостаток изменения содержимого страницы при постоянном 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 позволяет делать динамические запросы к серверу без видимой перезагрузки веб-страницы: пользователь не замечает, когда его браузер запрашивает данные.

5.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 и более поздние версии.

6.Источники материала и полезные ссылкиВикипедияhttp://ru.wikipedia.org/wiki/Ajax Основы работы с Ajax : http://designformasters.info/posts/start-with-ajax

Модель Ajax : http://www.codenet.ru/webmast/js/ajax/

Перевод статьи "Новый подход к веб-приложениям" : http://ajax-development.narod.ru/ajax-article.html

Викиучебника : http://ru.wikibooks.org/wiki/AJAX Ajax: Новый подход к веб-приложениям : http://www.codenet.ru/webmast/js/ajax/AJAX-New.php Programmer's Klondike http://www.proklondike.com/

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!'