Розробка програмного забезпечення для організації віддаленого адміністрування web-сервером

Мережне адміністрування: загальні відомості та область управління. Віддалене управління засобами Telnet. Можливості програм Radmin та File Manager v1.01. Реліз web-сервера Tornado 2.0, використовуваного в сервісі FriendFeed. Порівняння веб-серверів.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 03.03.2013
Размер файла 980,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

>>> sin (pi * 0.5) # обчислення синуса від половини пі

1.0

>>> help (sorted) # допомогу по функції sorted

Help on built-in function sorted in module __builtin__:

sorted (…)

sorted (iterable, cmp=none, key=none, reverse=false) -> new sorted list

В інтерактивному режимі доступний дебагер pdb та система довідки(викликається за help()). Система допомоги працює для модулів, класів і функцій, тільки якщо ті були забезпечені рядками документації.

Крім вбудованої, існує й покращена інтерактивна оболонка IPython.

Об'єктно-орієнтоване програмування

Дизайн мови Python побудований навколо об'єктно-орієнтованої моделі програмування. Реалізація ООП в Python є елегантною, потужною та добре продуманою, але разом з тим, достатньо специфічною в порівнянні з іншими об'єктно-орієнтованими мовами.

Можливості та особливості:

- класи є одночасно об'єктами з усіма нижче наведеними можливостями;

- успадкування, в тому числі множинне;

- поліморфізм (всі функції віртуальні);

- інкапсуляція (два рівні - загальнодоступні та приховані методи і поля);

- особливість - приховані члени доступні для використання та помічені як приховані лише особливими іменами;

- спеціальні методи, керуючі життєвим циклом об'єкта: конструктори, деструктори, розподільники пам'яті;

- перевантаження операторів (усіх, крім is, '.', '=' і символьних логічних);

- властивості (імітація поля за допомогою функцій);

- управління доступу до полів (емуляція полів і методів, частковий доступ, тощо);

- методи для управління найбільш поширеними операціями (істинносне значення, len(), глибоке копіювання, серіалізація, ітерація по об'єкту, …);

- метапрограмування (управління створенням класів, тригери на створення класів, та ін);

- повна інтроспекція;

- класові та статичні методи, класові поля;

- класи, вкладені у функції та інші класи.

Функціональне програмування. Python підтримує парадигму функціонального програмування, зокрема:

- - функція є об'єктом;

- - функції вищих порядків;

- - рекурсія;

- - розвинена обробка списків (спискові вирази, операції над послідовностями, ітератори);

- - аналог замикань;

- - часткове застосування функції;

- - можливість реалізації інших засобів на самій мові (наприклад, каррінг).

Модулі та пакети. Програмне забезпечення (застосунок або бібліотека) на Python оформлюється у вигляді модулів, які у свою чергу можуть бути зібрані в пакунки. Модулі можуть розташовуватися як у каталогах, так і в ZIP-архівах. Модулі можуть бути двох типів за своїм походженням: модулі, написані на «чистому» Python, і модулі розширення (extension modules), написані на інших мовах програмування. Наприклад, в стандартній бібліотеці є «чистий» модуль pickle і його аналог на Сі: cPickle. Модуль оформляється у вигляді окремого файлу, а пакет -- у вигляді окремого каталогу. Підключення модулю до програми здійснюється оператором import. Після імпорту модуль представлений окремим об'єктом, що дає доступ до простору імен модуля. У ході виконання програми модуль можна перезавантажити функцією reload().

Інтроспекція. Python підтримує повну інтроспекцію часу виконання. Це означає, що для будь-якого об'єкта можна отримати всю інформацію про його внутрішню структуру.

Застосування інтроспекції (метапрограмування) є важливою частиною того, що називають «pythonic style», і широко застосовується в бібліотеках і фреймворках Python, таких як PyRO, PLY, Cherry, Django та інших, заощаджуючи час програміста, що ними користується.

Обробка винятків. Обробка винятків підтримується в Python допомогою операторів try, except, else, finally, raise , що утворюють блок обробки виключення. У загальному випадку блок виглядає наступним чином:

try:

# Тут код, в якому може викнути виключення

raise ExceptionType ("message")

except (Тип виключення1, Тип виключення2, …), Змінна:

# Код в блоці виконується, якщо тип винятку збігається з одним з типів

# (Тип виключення1, Тип виключення2, ...) або є спадкоємцем одного

# з цих типів.

# Отриманий викняток доступний в необов'язковій Змінній.

except (Тип виключення3, Тип виключення4, …), Змінна:

# Кількість блоків except не обмежено

raise # Згенерувати викняток "поверх" отриманого; без параметрів -- повторно згенерувати отримане

except:

# Буде виконано за будь-якого винятку, не обробленого типізованими блоками except

else:

# Код блоку виконується, якщо не було отримано винятків.

finally:

# Буде виконано в будь-якому випадку, можливо після відповідного

# блоку except або else

Спільне використання else, except і finally стало можливо тільки починаючи з Python 2.5. Інформація про поточний виняток завжди доступна через sys.exc_info(). Крім значення виключення, Python також зберігає стан стеку аж до точки збудження винятку -- так званий traceback.

На відміну від мов програмування, що компілюються, в Python використання винятку не призводить до значних накладних витрат (а часто навіть дозволяє прискорити виконання програм) і дуже широко використовується. Винятки узгоджуються з філософією Python (10-й пункт «дзену Python» -- «Помилки ніколи не повинні замовчувати») та є одним із засобів підтримки «качиної типізації».

Іноді, замість явної обробки винятків, зручніше використовувати блок with (доступний, починаючи з Python 2.5).

Ітератори

У програмах на Python широко використовуються ітератори. Цикл for може працювати як з послідовністю, так і з ітераторами. Усі колекції, як правило, надають ітератор. Об'єкти визначеного користувачем класу теж можуть бути ітераторами. . Модуль itertools стандартної бібліотеки містить багато корисних функцій для роботи з ітераторами.

Генератори

Однією з цікавих можливостей мови є генератори -- функції, що зберігають внутрішній стан: значення локальних змінних і поточну інструкцію (див. також: співпрограма). Генератори можуть використовуватися як ітератор и для структур даних і для ледачих обчислень.

При виклику генератора функція негайно повертає об'єкт-ітератор, який зберігає поточну точку виконання та стан локальних змінних функції. При запиті наступного значення (за допомогою методу next(), неявно викликається в for циклі) генератор продовжує виконання функції від попередньої точки зупину до наступного оператора yield або return.

У Python 2.4 з'явилися генераторні вирази -- вирази, що дають у результаті генератор. Генераторні вирази дозволяють заощадити пам'ять там, де інакше потрібно було б використовувати список із проміжними результатами:

>>> sum(i for i in xrange (1, 100) if i % 2 != 0)

2500

У цьому прикладі підсумовуються всі непарні числа від 1 до 99.

Починаючи з версії 2.5, Python підтримує повноцінні співпроцедури: тепер в генератор можна передавати значення за допомогою методу send() та збуджувати в його контексті виняток за допомогою методу throw().

Керування контекстом виконання

У Python 2.5 з'явилися засоби для керування контекстом виконання блоку коду - оператор with та модуль contextlib.

Оператор може застосовуватися в тих випадках, коли 'до' та 'після' деяких дій повинні обов'язково виконуватися деякі інші дії, незалежно від створених у блоці винятків або операторів return: файли повинні бути закриті, ресурси звільнені, перенаправлення стандартного введення/виведення закінчено тощо Оператор покращує читаємість коду, і отже, допомагає уникати помилок.

Декоратори

Починаючи з версії 2.4, Python дозволяє використовувати, так звані, Декоратори (не слід плутати з однойменним шаблоном проектування) для підтримки існуючої практики перетворення функцій та методів у місці визначення (декораторів може бути декілька). Після довгих дебатів для декораторів став використовуватися символ @ у рядках, що передують визначенню функції або методу. Наступний приклад містить опис статичного методу без застосування декоратора:

def myWonderfulMethod ():

return "Деякий метод"

myWonderfulMethod = staticmethod (myWonderfulMethod)

і за допомогою декоратора:

@staticmethod

def myWonderfulMethod ():

return "Деякий метод"

Декоратор є нічим іншим, як функцією, що одержує в якості першого аргументу декоруєму функцію або метод. Декоратори можна вважати елементом аспектно-орієнтованого програмування.

З версії 2.6 декоратори можна використовувати з класами, аналогічно функціям.

Інші можливості. У Python є ще кілька можливостей, що відрізняють його від багатьох інших мов високою гнучкістю та динамічністю.

Наприклад, клас є об'єктом, а в операторі визначення класу можна використовувати вирази в списку батьківських класів.

def getClass():

return dict

class D(getClass()):

pass

d = D()

Можна модифікувати багато об'єктів під час виконання, наприклад класи:

>>> class X(object): pass

>>> y = X()

>>> y.wrongMethod() # такого методу поки немає

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: 'X' object has no attribute 'wrongMethod'

>>> X.wrongMethod = lambda self : 'im here' # додамо його

>>> y.wrongMethod() # так як доступ до методу призводить до пошуку по __dict__ класу,

'im here' # то wrongMethod стає доступним всім екземплярам

3.3.4 Бібліотеки

Багата стандартна бібліотека є однією з привабливих сторін Python. Тут є засоби для роботи з багатьма мережевими протоколами та форматами Інтернету, наприклад, модулі для написання HTTP-серверів та клієнтів, для розбору та створення поштових повідомлень, для роботи з XML тощо Набір модулів для роботи з операційної системою дозволяє писати крос-платформні застосунки. Існують модулі для роботи з регулярними виразами, текстовими кодуваннями, мультимедійними форматами, криптографічними протоколами, архівами, серіалізацією даних, підтримки юніт-тестування та ін.

Крім стандартної бібліотеки існує безліч бібліотек, що надають інтерфейс до всіх системних викликів на різних платформах; зокрема, на платформі Win32 підтримуються всі виклики Win32 API, а також COM в обсязі не меншому, ніж у Visual Basic або Delphi. Кількість прикладних бібліотек для Python в самих різних областях без перебільшення величезна (веб, бази даних, обробка зображень, обробка тексту, чисельні методи, програми операційної системи і т. д.).

Для Python прийнята специфікація програмного інтерфейсу до баз даних DB-API 2 та розроблено відповідні цієї специфікації пакети для доступу до різних СУБД: PostgreSQL, Oracle, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server, MySQL та sqlite. На платформі Microsoft Windows доступ до БД можливий через ADO (ADOdb). Комерційний пакет mxODBC для доступу до СУБД через ODBC для платформ Windows і UNIX розроблений eGenix. Для Python написано багато ORM: (SQLObject, SQLAlchemy, Dejavu, Django), виконані програмні каркаси для розробки веб-застосунків (Django, Pylons).

Бібліотека NumPy для роботи з багатовимірними масивами дозволяє досягти продуктивності наукових розрахунків, порівнянної зі спеціалізованими пакетами. SciPy використовує NumPy і надає доступ до великого спектру математичних алгоритмів (матрична алгебра -- BLAS, level 1-3 і LAPACK; БПФ).

WSGI інтерфейс шлюзу з веб-сервером (Python Web Server Gateway Interface).

Python надає простий і зручний програмний інтерфейс C API для написання власних модулів на мовах Сі та C++. Такий інструмент як SWIG дозволяє майже автоматично отримувати прив'язки для використання C/C++ бібліотек в коді на Python. Можливості цього та інших інструментів варіюються від автоматичної генерації (C/C++/Fortran)-Python інтерфейсів за спеціальними файлів (SWIG, pyste, SIP, pyfort), до надання більш зручних API (boost::python, CXX та ін.) Інструмент стандартної бібліотеки ctypes дозволяє програмам Python безпосередньо звертатися до динамічних бібліотек/DLL, написаним на C. Існують модулі, що дозволяють вбудовувати код на С/C++ прямо у вихідні файли Python, створюючи розширення «на льоту» (pyinline, weave). Для підключення математичних функцій, особливо з застосуванням NumPy, наразі офіційно рекомендованим є Cython

Інший підхід полягає у вбудовуванні інтерпретатора Python у застосунки. Python легко вбудовується в програми на Java, C/C++, Ocaml. Взаємодія Python-застосунків з іншими системами можлива також за допомогою CORBA, XML-RPC, SOAP, COM.

За допомогою Pyrexможлива компіляція Python-подібного мови (додана можливість типізації) у еквівалентний Сі-код і зв'язування із зовнішніми модулями.

Експериментальний проект shed skin передбачає створення компілятора для трансформації неявно типізованих Python програм у оптимізований С++ код. Починаючи з версії 0.22 shed skin дозволяє компілювати окремі функції в модулі розширень. Повна компіляція (станом на 1 липня 2007) далека від завершення.

Python та переважна більшість бібліотек до нього безкоштовні й оставляються у вихідних кодах. Більше того, на відміну від багатьох відкритих систем, ліцензія ніяк не обмежує використання Python в комерційних розробках та не накладає ніяких зобов'язань крім вказівки авторських прав.

З Python поставляється бібліотека tkinter на основі Tcl/Tk для створення крос-платформних програм з графічним інтерфейсом.

Для науково-технічної мети найбільшого поширення набуло використання matplotlib -- бібліотеки з інтерфейсом, аналогічним MATLAB Plot Tool.

Існують розширення, що дозволяють використовувати всі основні GUI бібліотеки -- wxPython, засноване на бібліотеці wxWidgets, PyGTK для GTK+, PyQt та PySide для Qt та інші. Деякі з них також надають широкі можливості для роботи з базами даних, графікою та мережами, використовуючи всі можливості бібліотеки, на якій базуються.

Для створення ігор та програм, що вимагають нестандартного інтерфейсу, можна використовувати бібліотеку Pygame. Вона також надає великі засоби роботи з мультимедіа: з її допомогою можна керувати звуком і зображеннями, відтворювати відео. Надаване pygame апаратне прискорення графіки OpenGL має більш високорівневий інтерфейс в порівнянні з PyOpenGL, що копіює семантику С-бібліотеки для OpenGL. Є також PyOgr, що забезпечує прив'язку до Ogre -- високорівневої об'єктно-орієнтованої бібліотеки 3D-графіки. Крім того, існує бібліотека pythonOCC , що забезпечує прив'язку до середовища 3D-моделювання та симуляції OpenCascade.

Для роботи з растровою графікою використовується бібліотека Python Imaging Library.

Найчастіше Python порівнюють з Perl та Ruby. Ці мови також є інтерпретованими та мають приблизно однакову швидкість виконання програм. Як і Perl, Python може успішно застосовуватися для написання скриптів (сценаріїв). Як і Ruby, Python є добре продуманою системою для ООП.

Засоби функціонального програмування частково запозичені з Scheme та Icon.

У середовищі комерційних застосунків швидкість виконання програм на Python можуть порівнюювати з Java-застосунками.

Попри те, що Python має досить самобутній синтаксис, одним із принципів дизайну цієї мови є принцип найменшого подиву.

3.3.5 Недоліки

Пітон, як і багато інших інтерпретованих мов, не застосовують, наприклад, JIT-компілятори, мають загальний недолік -- порівняно невисоку швидкість виконання програм.Однак, у випадку з Python цей недолік компенсується зменшенням часу розробки програми.У середньому, програма, написана на Python, в 2-4 рази компактніше, ніж її аналог на C++ або Java. Збереження байт-коду (файли .pyc і .pyo) дозволяє інтерпретатору не витрачати зайвий час на перекомпіляцій коду модулів при кожному запуску, на відміну, наприклад, від мови Perl. Крім того, існує спеціальна JIT-бібліотека psyco, що дозволяє прискорити виконання програм (проте призводить до збільшення споживання оперативної пам'яті). Ефективність psyco сильно залежить від архітектури програми.

Існують проекти реалізацій мови Python, що вводять високопродуктивні віртуальні машини (ВМ) як компілятора заднього плану. Прикладами таких реалізацій може служити PyPy, що базується на LLVM; більш ранньої ініціативою є проект Parrot. Очікується, що використання ВМ типу LLVM призведе до тих самих результатів, що й використання аналогічних підходів для реалізацій мови Java, де низька обчислювальна продуктивність в основному подолана.

Безліч програм/бібліотек для інтеграції з іншими мовами програмування (див. вище) надають можливість використовувати іншу мову для написання критичних ділянок.

У найпопулярнішій реалізації мови Python інтерпретатор досить великий і більш вимогливий до ресурсів, ніж в аналогічних популярних реалізаціях Tcl, Forth, LISP або Lua, що обмежує його застосування у вбудованих системах. Тим не менше, Python знайшов застосування в КПК і деяких моделях мобільних телефонів.

Відсутність статичної типізації є не стільки вадою інтерпретатора, скільки вибором розроблювача мови. Справа в тому, що в Python прийнята так звана «Качина типізація». У силу цього типи переданих значень недоступні на етапі компіляції, та помилки на зразок AttributeError можуть виникати під час виконання. Відсутність статичної типізації також є однією з основних причин низького швидкодії.

Існують модулі, які дозволяють контролювати типи параметрів функцій на етапі виконання, наприклад typecheck або method signature checking decorators. Додавання необов'язковою статичної типізації параметрів функції заплановано для Python3000. При цьому, однак, безпосередньо інтерпретатор не буде перевіряти типи, а тільки додавати відповідну інформацію до метаданих функції для її (інформації) подальшого використання модулями розширень.

Відсутність статичної типізації і деякі інші причини не дозволяють реалізувати в Python механізм перевантаження функцій на етапі компіляції. Можливості Python дозволяють реалізувати динамічну перевантаження на етапі виконання, що, звичайно, уповільнює виклик, так як вирішення яку саме функцію викликати проводиться при кожному зверненні і є, в загальному випадку, досить складною процедурою. Відсутність перевантаження в Python намагаються компенсувати використанням віртуальних функцій.

len = lambda x : x.__len__() # це лише приклад

Реалізації та опис, приклад реалізації простої перевантаження також є в прикладах програм на Python.

Плани з підтримки перевантаження в Python3000.

Перевантаження функцій реалізована різними сторонніми бібліотеками, в тому числі PEAK надає надзвичайно багатий можливостями механізм перевантаження функцій з використанням довільних правил.

Неможливість модифікації вбудованих класів

У порівнянні з Ruby та деякими іншими мовами, в Python відсутня можливість модифікувати вбудовані класи, такі, як int, str, float, list та інші, що, однак, дозволяє Python споживати менше оперативної пам'яті і швидше працювати. Ще однією причиною введення такого обмеження є необхідність узгодження з модулями розширення. Багато модулів (з метою оптимізації швидкодії) перетворять Python-об'єкти елементарних типів до відповідних Сі-типів замість маніпуляцій з ними за допомогою Сі-API.

Глобальне блокування інтерпретатора (GIL). GIL (Global Interpreter Lock) - проблема, притаманна CPython, Stackless та PyPy, але відсутня в Jython та IronPython. При своїй роботі основний інтерпретатор Python постійно використовує велику кількість нитє-небезпечних даних. В основному це словники, в яких зберігаються атрибути об'єктів. Для уникнення руйнування цих даних при спільній модифікації з різних нитей перед початком виконання декількох інструкцій (за замовчуванням 100) нить інтерпретатора захоплює GIL, а після закінчення звільняє. Внаслідок цієї особливості в кожен момент часу може виконуватися тільки одна нить Python текстів, навіть якщо на комп'ютері є кілька процесорів або процесорних ядер (GIL також звільняється на час виконання блокуючих операцій, таких як введення-виведення, зміни/перевірка стану синхронізуючих примітивів та інших -- таким чином, якщо одна нить блокується, інші можуть виконуватися). Була зроблена спроба переходу до більш гранульованої синхронізації, проте через часті захоплення/звільнення блокувань ця реалізація виявилася занадто повільною. У найближчому майбутньому перехід від GIL до інших технік не передбачається, однак є python-safethread - CPython без GIL і з деякими іншими змінами (за твердженнями його авторів, на однонитевих застосунках швидкість відповідає 60-65% від швидкості оригінальному CPython).

Ця проблема має два основних варіанти вирішення. Перший - відмова від спільного використання змінюваних даних. При цьому дані дублюються в нитях і необхідність забезпечення їхньої синхронізації (якщо така потрібна) лягає на програміста. Цей підхід веде до збільшення споживання оперативної пам'яті (однак не настільки сильно, як при використанні процесів).

Другий підхід -- забезпечення більш гранульованої синхронізації - для окремих структур даних. У цьому випадку падає продуктивність внаслідок збільшення числа звільнень/захоплень блокувань.

Якщо необхідно паралельне виконання декількох нитей Python-коду, то можна скористатися процесами, наприклад, модулем processing, який імітує семантику стандартного модуля threading, але використовує процеси замість нитей. Є безліч модулів, що спрощують написання паралельних та/або розподілених застосунків на Python, таких як parallelpython, Pypar, pympi та інші. GIL звільняється при виконанні коду більшості розширень, наприклад, NumPy/SciPy, дозволяючи на час розрахунків виконуватися іншому Python-ниті. Іншим рішенням може бути використання IronPython або Jython, позбавлених даного недоліку.

3.3.6 Реалізації

Пайтон портований на всі відомі платформи -- від КПК до мейнфреймів. Існують порти під Windows, всі варіанти UNIX (включно з Linux), Plan 9, Mac OS і Mac OS X, Palm OS, OS/2, Amiga, AS/400 і навіть OS/390 і Symbian.

При цьому, на відміну від багатьох портованих систем, на кожній платформі Пайтон підтримує характерні для даної платформи технології (наприклад, Microsoft COM). Крім того, існує спеціальна версія Пайтона для віртуальної машини Java - Jython, що дозволяє інтерпретатору виконуватися на будь-якій системі, що підтримує Java, класи Java можуть безпосередньо використовуватися з Пайтона і навіть бути написаними на Пайтоні. Нещодавно почалася розробка системи, спрямованої на більш повну інтеграцію з платформою .NET - Iron Python.

Python Enhancement Proposal («PEP») - це документ зі стандартизованим дизайном, що надає загальну інформацію про мову Python, включаючи нові пропозиції, описи та роз'яснення можливостей мови. PEP пропонуються як основне джерело для пропозиції нових можливостей і для роз'яснення вибору того або іншого дизайну для основних елементів мови. Видатні PEP рецензуються і коментуються BDFL.

Серії Python 2.x і Python 3.x протягом кількох випусків будуть існувати паралельно, при цьому серія 2.x буде використовуватися для забезпечення сумісності та швидше за все в неї будуть включені деякі можливості серії 3.x. PEP 3000 містить більше інформації про плановані випуски.

Python 3.0 обернено не сумісний з попередньою серією 2.x. Код Python 2.x швидше за все буде видавати помилки при виконанні в Python 3.0. Динамічна типізація Python, разом з планами зміни декількох методів словників, робить механічний переклад з Python 2.x в Python 3.0 дуже складним. Однак, утиліта «2to3» вже здатна зробити більшість роботи з перекладу коду, вказуючи на підозрілі їй частини за допомогою коментарів і попереджень. PEP 3000 рекомендує тримати вихідний код для серії 2.x, і робити випуски для Python 3.x за допомогою «2to3». Отриманий код не слід редагувати, поки програма повинна бути працездатною в Python 2.x.

Нещодавно розробники оголосили про офіційне припинення розвитку гілки Python 2.x. Остання випущена версія Python 2.7. Далі розробка буде вестися лише у гілці Python 3.x.

Основні зміни, внесені до версії 3.0:

Синтаксична можливість для анотації параметрів і результату функцій (наприклад, для передачі інформації про тип або документування).

Повний перехід на unicode для рядків.

Введення нового типу «незмінні байти» і типу «змінюваний буфер». Обидва необхідні для подання двійкових даних.

Нова підсистема вводу-виводу (модуль io), що має окремі вигляди для бінарних і текстових даних.

Абстрактні класи, абстрактні методи (є вже в 2.6).

Ієрархія типів для чисел.

Вирази для словників і множин {k: v for k, v in a_dict} і {el1, el2, el3} (за аналогією зі спискового виразами).

Зміни print з вбудованого виразу у вбудовану функцію. Це дозволить модулям робити зміни, підлаштовуючись під різне використання функції, а також спростить код. У Python 2.6 ця можливість активується введенням from __future__ import print_function.

Переміщення reduce (але не map або filter) з вбудованого простору в модуль functools (використання reduce істотно менш читабельне в порівнянні з циклом).

Видалення деяких застарілих можливостей, які підтримуються у гілці 2.x для сумісності, зокрема: класи старого стилю, цілочисельний поділ з обрізанням результату як поведінка за вмовчанням, рядкові винятки, неявний відносний імпорт, оператор exec тощо

Змінений синтаксис присвоєння. Стало можливим, наприклад, надання (a, * rest, b) = range(5). З іншого боку, формальні параметри функцій на зразок def foo (a, (b, c)) більше неприпустимі.

На основі Python було створено кілька спеціалізованих підмножин мови, в основному призначених для статичної компіляції в машинний код. Деякі з них:

- RPython - створена в рамках проекту PyPy значно обмежена реалізація Python без динамізму часу виконання та деяких інших можливостей. RPython код можна компілювати в безліч інших мов/платформ - C, JavaScript, Lisp, .NET, LLVM. На RPython написаний інтерпретатор PyPy;

- Pyrex - обмежена реалізація Python, але трохи менше, ніж RPython;

- PyReX розширено можливостями статичної типізації типами з мови С і дозволяє вільно змішувати типізований та не типізований код. Призначений для написання модулів розширень, компілюється в код на мові С;

- Cython - розширена версія Pyrex;

- Pyastra - компілятор Python коду в асемблер для PIC архітектури;

- shed-skin - призначений для компіляції неявно статично типізованого Python коду в оптимізований код на мові С++, проект далекий від завершення.

3.3.7 Застосування

Python - стабільна та поширена мова. Він використовується в багатьох проектах та в різних якостях: як основна мова програмування або для створення розширень та інтеграції додатків. На Python реалізована велика кількість проектів, також він активно використовується для створення прототипів майбутніх програм.Python використовується в багатьох великих компаніях

ПЕРЕЛІК ПОСИЛАНЬ

мережне адміністрування сервер

1. Дрововозов В.І. Експлуатація комп'ютерних систем та мереж Навчальний посібник. - К.: НАУ, 2006, 2007 р.

2. Жабін В.І., Жуков І.А., Клименко І.А., Ткаченко В.В. Прикладна теорія цифрових автоматів Навч. посібник. - К.:Книжкове вид-во НАУ, 2007. - 364 с., 2007 р.

3. І.А. Жуков, М.А. Віноградов, В.І. Дрововозов, Н.Ф. Халімон. Основи теорії мереж передачі та розподілу даних НАУ, 2006, 2006 р.

4. Бабич М. П., Жуков І. А., Яременко К.П., Журавель С.В. Комп'ютерна схемотехніка. Курсове проектування. , р.

5. Головний сайт спільноти розробників Python

6. Віталій Півень. Безкоштовний курс «Уроки Python у відеоформаті для початківців»

7. tornado - Режим доступу: tornado web.org

8. opennet - Режим доступу: http://www.opennet.ru

9. apache - Режим доступу http://ru.wikipedia.org/wiki/Apache

10. Крис Адамс «Администрирование сервера IIS 7»

11. Станек У. «Internet Information Services (IIS) 7.0. Справочник администратора»

12. Балард Джейсон «Microsoft Internet Security and Acceleration (ISA) Server 2000. Справочник администратора»

13. Джеймс Е. Гаскин «Администрирование Novell NetWare 6.0/6.5»

14. Сигрид Хагеман, Лиане Вилл «Системное администрирование SAP R/3»

15. Алексей Стахнов «Сетевое администрирование Linux»

16. Скотт Хокинс «Администрирование Web-сервера Apache»

17. Петраков А.М., Клейменов С.А., Мельников В.П. «Администрирование в информационных системах»

Размещено на Allbest.ru


Подобные документы

  • Мережне адміністрування. Програми для віддаленого адміністрування. Віддалене управління засобами Telnet. Можливості програми Remote Administrator 2.2. Безпека Radmin. Режим обміну файлами. Запит логіна і пароля перед початком роботи з File Manager.

    курсовая работа [1,5 M], добавлен 24.03.2009

  • Структура та побудова модулів для системи віддаленого адміністрування серверів Ajenti. Огляд веб-орієнтованих систем віддаленого адміністрування для linux. Процес розробки та реалізації програмного модуля "Менеджер процесів", системні вимоги до нього.

    дипломная работа [3,0 M], добавлен 09.06.2012

  • Робота з клієнт-серверними додатками на основі сокетів. Розробка програм сервера та клієнта для обробки запитів клієнта сервером. Можливості програм сервера та клієнта. Створення гри "хрестики-нулики" на основі сокетів. Програмне забезпечення сервера.

    лабораторная работа [181,8 K], добавлен 23.05.2015

  • Види віртуальних тестових машин, їх ключові можливості, сумісність c операційними системами. Процес установки гостьових ОС BackTrack і FreeBSD. Встановлення серверного програмного забезпечення. Тестування веб-сервера і засобів віддаленого управління.

    дипломная работа [3,5 M], добавлен 22.07.2015

  • Методика створення веб-додатку для визначення рівня інтелекту людини з використанням мови програмування PHP. Загальна характеристика та принципи роботи з засобами адміністрування, за допомогою яких авторизований адміністратор може керувати веб-додатком.

    дипломная работа [1,9 M], добавлен 13.10.2010

  • Загальні відомості про протоколи: Інтернету, управління передачею, користувача. Функції та структури, які беруть участь у реалізації алгоритму передачі даних. Виклик та завантаження, розробка структури програми. Вхідні та вихідні данні з сервера.

    курсовая работа [1,5 M], добавлен 01.12.2010

  • Основні функціональні можливості програми для забезпечення комп'ютерної системи дистанційного управління приладами. Функція пульта дистанційного керування мартфонів. Реалізація пультів дистанційного управління на основі апаратно-програмного комплексу.

    дипломная работа [1,7 M], добавлен 09.07.2015

  • Загальні відомості про С++ Builder. Метод найменших квадратів. Побудова лінійної емпіричної формули. Робота з базою даних MSql засобами PHP. Розрив з’єднання з сервером. Екранування спец-символів. Знаходження функції за методом найменших квадратів.

    курсовая работа [1,4 M], добавлен 11.12.2012

  • Характеристика, етапи розвитку підприємства "Краснодонський міжшкільний навчально-виробничий комбінат", особливості виробничої діяльності, електронне обладнання. Програмні засоби, що використовуються для стискання інформації. Адміністрування користувачів.

    отчет по практике [1,0 M], добавлен 19.05.2010

  • Розробка програмного забезпечення для управління транспортними платформами на базі програмованого логічного контролера S7-300 в Simatic STEP-7. Аналіз програмного забезпечення, розрахунок показників його надійності. Опис алгоритму функціонування системи.

    дипломная работа [2,1 M], добавлен 17.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.