Рефераты
 

Створення навчальної програми по вивченню іноземної мови

Створення навчальної програми по вивченню іноземної мови

ВСТУП

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

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

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

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

Комп'ютерне тестування у навчанні іноземної мови має ряд переваг перед традиційним бланковим тестуванням.

В зв'язку з цим необхідно підкреслити, що завдяки комп'ютерному тестуванню:

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

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

- негайно видається тестовий бал, і приймаються невідкладні заходи щодо корекції засвоєння нового матеріалу на основі аналізу протоколів за результатами виконання коригувальних і діагностичних тестів;

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

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

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

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

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

Таким чином, рішення поставлених завдань забезпечить ефективну реалізацію технології комп'ютерного тестування з іноземної мови в контексті інформаційних технологій навчання у школі.

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

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

В перспективі треба сформувати навколо проекту співтовариство розробників, які будуть доповнювати програму, шукати і виправляти помилки. Це буде можливо завдяки відкритим вихідним кодам і ліцензії GNU GPL. Ще важливу роль в цьому може зіграти правильний вибір мови програмування, середовища для розробки, хостингу для проекту і систему контролю версій коду.

1 Аналіз завдання дипломного проекту

1.1 Постановка завдання

Завдання: розробити простий, зручний у використанні, кросплатформовий інструмент для проведення електронного тестування учнів молодших та середніх класів по іноземній мові.

Програма тестування повинна відповідати таким вимогам:

- зручність створення уроків, данні знаходяться в CSV файлах і редагуються звичайними табличними процесорами, наприклад OpenOffice Calc;

- реєстрація в системі, введення прізвища та імені;

- вибір уроку із списку існуючих;

- тестування повинне бути обмежене по часу;

- введення відповіді повинно проходити з клавіатури;

- програма повинна мати візуальні та голосові підказки;

- результати тестування оцінюються у балах по кількості правильно написаних літер в слові та визначається оцінка від 2 до 5 балів;

- підсумок по всім тестам видається на екран та записується в файл на жорстокому диску.

Крім того, розроблений програмний продукт повинен задовольняти наступним вимогам:

- кросплатформеність;

- зручність у користуванні та розробці нових уроків;

- зручність у модернізації;

- розширюваність;

- адаптивність.

1.2 Вибір мови програмування

Так як одна із вимог це кросплатформеність, програма повинна без модернізацій працювати на різних платформах, наприклад Windows і Linux, а тому була вибрана об'єктно-орієнтована, кросплатформова мова програмування Sun Java версии 1.6. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.

Sun Microsystems надає компілятор Java та віртуальну машину Java, які задовольняють специфікації Java Community Process, під ліцезією GNU General Public License.

Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об'єктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки об'єктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. При необхідності java дозволяє викликати підпрограми, написані на інших мовах програмування.

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

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

Стандартні бібліотеки забезпечують загальний спосіб доступу до таких платформозалежних особливостей, як обробка графіки, багатопотоковість та роботу з мережами. У деяких версіях задля збільшення продуктивності JVM, байт-код можна компілювати у машинний код до або під час виконання програми.

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

1.3 Вибір середовища розробки та системи контролю версій

Середовищем розробки був вибраний вільний, кросплатформений програмний продукт Eclipse під керуванням операційної системи GNU/Linux.

Eclipse -- вільне модульне інтегроване середовище розробки програмного забезпечення. Розробляється і підтримується Eclipse Foundation.

Eclipse являє собою фреймворк для розробки модульних кросс-платформових програм із низкою особливостей:

- можливість розробки програмного забезпечення на багатьох мовах програмування (рідною є Java);

- крос-платформова;

- модульна, призначена для подальшого розширення незалежним розробниками;

- з відкритим вихідним кодом;

- розробляється і підтримується фондом Eclipse, куди входять такі постачальники програмного забезпечення, як IBM, Oracle, Borland.

Спочатку проект розроблявся в IBM як корпоративний стандарт IDE, настановлений на розробки на багатьох мовах під платформи IBM. Потім проект було перейменовано на Eclipse і надано для подальшого розвитку спільноти розробників.

Eclipse, насамперед, повноцінна Java IDE, націлена на групову розробку, має засоби роботи з системами контролю версій (підтримка CVS входить у поставку Eclipse, активно розвиваються кілька варіантів SVN модулів, існує підтримка VSS та інших). З огляду на безкоштовність, у багатьох організаціях Eclipse -- корпоративний стандарт для розробки програмного забезпечення на Java.

Щодо системи контролю версій був, обраний хостинг проектів з відкритим сирцевим кодом - Google Code. Це швидка, надійна і відкрита служба хостингу сирцевого коду. Хостинг проектів на Google Code дає наступні можливості:

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

- хостинг коду Subversion -- вільна система управління версіями з об'ємом сховища в 1 гігабайт і підтримка хостингу завантажень з об'ємом сховища в 2 гігабайти;

- інтегрований перегляд вихідного коду та інструменти перевірки коду, що роблять нескладним перегляд коду, перевірку внесених до нього доповнень і підтримку високого рівня бази коду.

2 Створення навчальної програми по вивченню іноземної мови

2.1 Апаратні та програмні вимоги

Для запуску програми потрібна операційна система MSWindows або GNU / Linux та встановлене виконавче середовище Java (JRE) версії 1.6.0 і вище.

Системні вимоги до Windows:

Windows 98 (1-й і 2-й випуски);

Windows ME;

Windows NT (з пакетом оновлення 6a);

Windows 2000 (з пакетом оновлення 3);

Windows XP Home;

Windows XP Professional (з пакетом оновлень 1);

Windows 2003 Server Edition.

Крім того, у системі повинен бути встановлений процесор Pentium з тактовою частотою від 166 МГц і вище, повинно бути як мінімум 125 МБ вільного дискового простору і не менше 32 МБ оперативної пам'яті.

Системні вимоги для Linux:

Будь-який дистрибутив Linux з ядром версії 2.4 і вище та встановленим X-Window (X11), наприклад openSUSE 11.0.

Крім того, комп'ютер повинен бути оснащений процесором Pentium з тактовою частотою не менш 166 МГц і оперативною пам'яттю ємністю не менше 32 МБ. Мінімальний обсяг вільного дискового простору - 75 МБ.

В якості робочого місця для учня рекомендовано використовувати INTEL Classmate PC (рис. 1).

Рисунок 1 - Персональний комп'ютер учня Classmate PC

Персональний комп'ютер учня Classmate PC має висновок державної санітарно-епідеміологічної експертизи про відповідність вимогам діючого законодавства України.

Рішенням Комісії із засобів навчання Науково-методичної ради з питань освіти МОН України визнано Персональний комп'ютер учня Classmate PC таким, що відповідає педагогічним вимогам (протокол №3 від 10 лютого 2010 року).

Classmate PC містить наступні компоненти:

- видозмінений міні-корпус розміром 245 x 196 x 44 мм;

- ЦПУ: мобільний Intel ® Celeron M (915GMS + ICH6-M);

- тактова частота ЦПУ: 900 МГц (кеш II рівня відсутній, FSB частотою 400 МГц);

- 800 x 480 LCD-екран з діагоналлю 7 ", LED-підсвічування;

- 256 Мб ОЗП типу DDR2;

- 2 Гб флеш-пам'яті NAND, підключеної через USB;

- мережева карта 10/100 Мбіт ethernet;

- бездротовий зв'язок Wi-Fi Realtek WLAN 802.11b/gc антеною, підключена по USB;

- графічний чіп Intel GMS915 integrated graphics (використовується 8 Мб основної пам'яті;

- вбудований мікрофон;

- вбудовані стереодинаміки;

- виходи і входи для стереозвуку;

- вбудована клавіатура з додатковими функціональними кнопками;

- круглий тачпад з окремими правою і лівою кнопками;

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

- TPM1.2 (Trusted Platform Module компанії Infineon Technologies AG) для захисту від розкрадання даних;

- джерела живлення: акумулятор Li-Ion (приблизно на 4 години роботи) і зовнішній блок живлення.

Програмне забезпечення

Пристрій здатний працювати як з GNU / Linux, так і з Windows XP Pro. Intel веде роботу з різними спільнотами GNU / Linux для забезпечення сумісності з їх версіями. Зокрема, була перероблена версія Mandriva.

На даний момент Classmate PC підтримують наступні дистрибутиви:

- Debian GNU / Linux;

- openSUSE;

- Ubuntu;

- DSL;

- Mandriva;

Недоліки Classmate PC:

- маленький розмір екрану;

- малий об'єм носія даних (флеш пам'яті).

Але є можливість підключити зовнішній жорсткий диск або флеш диск по USB, тим самим розширити об'єм доступної пам'яті для зберігання даних користувача.

Наведемо деякі, вже типові несправності ноутбуків.

1. Лампа підсвічування. Якщо екран почав показувати занадто темно, перестало бути видно картинку, то справа саме в лампі підсвічування. У цьому випадку треба міняти інвертор або саму лампу.

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

3.Кольорові смуги. Якщо на екрані дисплея ви помітили тонкі кольорові смужки, або горизонтальні, або вертикальні, то треба замінити усю матрицю. Це ознака того, що відшарується шар скла.

4. Клацання всередині ноутбука. Періодичне клацання всередині ноутбука говорить про те, що треба скоріше міняти жорсткий диск.

5. Зменшился час автономної роботи. Якщо ноутбук став працювати від акумулятора всього 5-20 хвилин, то це ознака того, що акумулятор виходить з ладу. Його потрібно змінювати. Однак, для початку можна зробити пару раз «зарядку-розрядку» акумулятора. Іноді це допомагає усунути цю несправність.

2.2 Опис мови програмування Java

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

Стрімке зростання технологій, пов'язаних з Інтернетом, WWW і “електронною комерцією”, додатково ускладнюють це завдання. Модний нині об'єктно-орієнтований підхід сам по собі не вирішує цих проблем, більш того, часто привносить нові.

Пропонований фірмою Sun Microsystems підхід, а саме система програмування на основі мови Java(ТМ) володіє наступними характеристиками:

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

- цикл розробки програм скорочений за рахунок того, що система побудована на основі інтерпретатора;

- додаток виходить автоматично переносимим між безліччю платформ і операційних систем;

- за рахунок вбудованої системи збірки сміття програміст звільняється від необхідності явного управління пам'яттю;

- в інтерактивній графічній програмі вдається досягти високої продуктивності (швидкого відгуку на введення користувача) за рахунок вбудованої в систему багатопотоковості;

- програма легко супроводжується і модифікується, оскільки модулі можуть бути завантажені з мережі;

- в програму вбудована система безпеки, що не допускає незаконного доступу і проникнення вірусів.

Метою проекту Java було створення невеликої, надійної, переносимої і розподіленої системи реального часу. На початку планувалося використання мови програмування С++, але поступово пов'язані з цим труднощі привели до необхідності створення нової мови.

Система повинна була увібрати в себе кращі риси з безлічі сучасних систем програмування: Eiffel, Smalltalk, Objective C, Cedar/Mesa і т.д..

Стрімке зростання мережевих технологій привело до необхідності нового погляду на процес створення і розподілу програм. Сучасні програми повинні бути безпечні, високопродуктивні, працювати в розподіленому середовищі на безлічі машин різної архітектури.

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

Створена система розробки Java задовольняє всім цим вимогам:

- проста, тому може бути використана широким колом розробників;

- об'єктно орієнтована, що відповідає сучасному погляду на програмування;

- підтримує багатопотоковість, що дозволяє виконувати декілька завдань одночасно;

- інтерпретіруєма, що забезпечує переносимість і покращує динамічні властивості.

Розглянемо кожну з цих властивостей окремо.

Система Java створена на основі простої мови програмування, техніка використання якої близька до загальноприйнятої і вивчення якої не вимагає значних зусиль.

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

Не дивлячись на те, що мова С++ була знехтувана, синтаксис мови Java максимально наближений до синтаксису С++. Це робить мову знайомою широкому колу програмістів. В той же час з мови було видалено багато властивостей, які роблять С++ зайве складною для користування, не будучи абсолютно необхідними. В результаті мова Java вийшла простішою і більш органічною, ніж С++.

Java істотно полегшує створення надійного програмного забезпечення. Окрім вичерпної перевірки на етапі компіляції, система передбачається аналіз на етапі виконання. Сама мова спроектована так, щоб виробляти у програміста звичку писати правильно.

Модель роботи з пам'яттю, в якій виключено використання покажчиків, робить неможливим цілий клас помилок, характерних для С і С++.

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

Компілятор Java проводить байт-коди, тобто модулі додатку мають не-залежний формат, який може бути проінтерпретований на безлічі різноманітних платформ. Це вже не початкові тексти, але ще не платформно-залежні машинні коди.

Наступний крок -- “заморожування” стандарту на формат основних вбудованих типів даних. Програма, створена на одній платформі, працює на всіх інших.

Цей стандарт фіксований в документі, Java Virtual Machine. Стандарт може бути реалізований на будь-якій апаратно-програмній платформі, що підтримує багатопотоковість.

Схема роботи системи і набір байт-кодів віртуальної машини Java такі, що дозволяють досягти високої продуктивності на етапі виконання програми:

- аналіз кодів на дотримання правил безпеки проводиться один раз до запуску кодів на виконання, у момент виконання таких перевірок вже не потрібно, і коди виконуються максимально ефективно;

- робота з базовими типами максимально ефективна, для операцій з ними зарезервовані спеціальні байт-коди;

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

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

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

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

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

Багатопотоковість підтримується на рівні мови -- частина примітивів синхронізації вбудована в систему реального часу, а бібліотека містить базовий клас Thread. До того ж системні бібліотеки написані thread-safe, тобто всі вони можуть бути використані в багатопотокових додатках.

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

Досвід показує, що відсутність стандартних базових бібліотек для мови С++ надзвичайно ускладнює роботу з нею. Внаслідок того, що будь-яка нетривіальна програма вимагає наявність деякого набору базових класів, розробникам доводиться користуватися різними несумісними між собою бібліотеками або писати свій власний варіант такого набору.

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

Повна система Java включає готовий набір бібліотек, який можна розбити на наступні пакети:

java.lang -- базовий набір типів, відображених в самій мові; цей пакет обов'язково входить до складу будь-якої програми; містить описи класів Object і Class, а також підтримку багатопотоковості, виняткових ситуацій, оболонку для базових типів, а також деякі фундаментальні класи;

java.io -- потоки і файли довільного доступу; аналог бібліотеки стандартного введення-виведення системи UNIX; підтримка мережевого доступу (sockets, telnet, URL) міститься в пакеті java.net;

java.util -- класи-контейнери (Dictionary, HashTable, Stack) і деякі інші утиліти; кодування і декодування. Класи Date і Time;

java.awt -- Abstract Windowing Toolkit, незалежний віконний інтерфейс, що дозволяє запускати інтерактивні віконні Java-програми на будь-якій платформі; містить базові компоненти інтерфейсу, такі як події, кольори, шрифти, а також основні віконні елементи -- кнопки, scrollbars і т.п..

Результат -- новий підхід до розподілених обчислень.

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

На сьогоднішній день найбільш популярними мовами програмування є С і С++. З них двох лише С++ претендує на об'єктну орієнтацію. Характеристики цієї мови складалися в ході довгої історії її розвитку, причому досить хаотично, кожна нова властивість не відміняла всіх попередніх. Стандарт мови до цих пір не зафіксований, оскільки нові властивості продовжують з'являтися до цього дня.

В результаті С++ стала нескінченно складною і надмірною -- одну і ту ж операцію можливо реалізувати на мові безліччю способів.

Java є новою точкою відліку в програмному забезпеченні. Розробники мови узяли за основу С++, потім методично видалили з нього риси, які:

- роблять неможливим контроль безпеки додатків;

- не є абсолютно необхідними, частіше заважають програмістові, чим полегшують його завдання;

- є джерелом складних і пізно розпізнаваних помилок.

В той же час в мові Java повністю збережений “дух” програмування на С++, досвідченим С++ - програмістам буде потрібно один-два тижні на освоєння самої мови, а величезний об'єм програмного забезпечення, вже створеного з використанням С++, може бути адаптований під нову мову відносно легко.

У мові Java, так само як і в С++, існує набір вбудованих типів даних, які (так само як і в С++) не є об'єктами. Набір їх також схожий з набором базових типів С++ за деякими виключеннями.

Numeric - характерною відмінністю від С++ є те, що бінарне представлення чисел відтепер фіксоване:

- цілі числа: 8-бит byte, 16-бит short, 32-бит int, 64-бит long; всі числа із знаком, ключ unsigned з мови видалені;

- числа з плаваючою крапкою; 32-біт float, 64-біт double; подання повинне відповідати стандарту IEEE 754.

Character - відрізняються від С++ як синтаксисом, так і уявленням. Тип character є 16-розрядне число без знаку (діапазон 0-65,535). Кодування відповідає стандарту Unicode. Внаслідок того, що це кодування в ідеалі повинне охоплювати всі мови, що існують в світі, це уявлення повинне полегшити локалізацію програм.

Boolean - тип даних не виділений в С++, проте неявно присутній практично у всіх програмах. У Java тип називається boolean, може приймати значення true і false і не може (на відміну від С++) бути перетворений в інший тип.

Доданий новий оператор >>> логічного зсуву управо (так як немає беззнакових цілих чисел). Вбудована операція злиття рядків (оператор +).

На відмінність від С++ масиви в Java є повноцінними об'єктами з певним runtime уявленням. Декларація:

- Point myPoints[]; резервує посилання на масив, а не місце під реальний об'єкт; сам масив може бути потім створений виконанням;

- myPoints = new Point[10]; а його елементи заповнені операцією типу: myPoints[2]= new Point(); розмір масиву може бути отриманий під час виконання програми: howMany = myPoints.length;

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

Покажчики повністю виключені з мови разом з цілою категорією важко вловимих помилок “сповільненої дії”. До того ж наявність покажчиків суперечить вимогам безпеки і ускладнює реалізацію складальника сміття.

Рядки Strings в Java є повноцінними об'єктами. Вони діляться на текстові константи (Strings) і рядки, що модифікуються (StringBuffer). Компілятор дозволяє явно визначати текстові літерали в програмі подібно до того, як це робиться в С++.

String hello = “Hello world!”; Посилання hello ініціюється об'єктом класу String на основі представлення “Hello world!” у кодуванні Unicode.

Оператор “+” може бути застосований до рядків, наприклад: System.out.println(”There are” + num + “characters in the file.”);

В Java відсутній вираз goto. Аналіз С/С++ текстів показав, що переважне число випадків використання цього оператора пов'язане з необхідністю виходу з вкладеного циклу. Для відлагодження таких ситуацій в Java перед початком блоку може ставитися мітка, а інструкції break і continue також можуть супроводжуватися міткою, на яку повинен бути здійснений перехід. Наприклад: test: for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) if( i > 3) break test;

Необхідність явно управляти пам'яттю в С/С++ програмах завжди була проблемою для програмістів. Мало того, що самі програми рясніли викликами функції free або операторами delete, безпосередньо до логіки програми вони відношення не мають.

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

Java повністю знімає цю турботу з програміста. Автоматичний збиральник сміття зобов'язаний бути вбудований в run-time системи. Пам'ять об'єктів, на які більше немає посилань, врешті-решт повертається в систему.

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

Одна з переваг того, що Java-програми багатопотокові, полягає в тому, що збірка сміття може проводитися у фоновому потоці. Цей потік має менший пріоритет виконання, чим інші, тому система завжди готова відповісти на дії користувача, відсутні “періоди бездіяльності”, в які проводиться тільки збірка сміття.

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

Java підтримує багатопотоковість не тільки на рівні бібліотек, але і на рівні самої мови, що значно полегшує побудову додатків, що надійно працюють в багатопотоковому режимі.

Конструкція typedef була успадкована С++ з С. Із Java вона викинута зовсім.

Необхідність в макропроцесорі також багато в чому відпала при написанні програм на С++. Майже все, для чого використовувалися макророзширення, можна було зробити елегантнішим і надійнішим чином, використовуючи конструкції самої мови.

Система неявно заохочувала створення кожним програмістом своєї власної підмножини мови, невідомої решті світу. У міру розростання кодів збільшується той смисловий контекст, в якому компілятор інтерпретує кожен рядок програми. Вже в проектах середнього розміру істотно зростає навантаження на компілятор, не говорячи вже про навантаження на пам'ять програміста.

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

Всі ці міркування дозволили повністю виключити необхідність використання текстового препроцесора в мові Java.

Структури struct і union не мають сенсу в Java, їх роль повністю виконують класи. Використання конструкцій типу union для типізованих об'єктів також більше не потрібне -- мова дозволяє визначити тип об'єкту при виконанні програми.

В цьому сенсі Java чисто об'єктно-орієнтована система. Функції і процедури, не прив'язані до контексту якого-небудь об'єкту, більше не присутні в системі. За ситуації, коли функція логічно не прив'язана до певного екземпляра класу, вона може бути створена як метод самого класу (тобто мати тип static).

Послідовна реалізація концепції множинного наслідування в С++ привела до істотних труднощів як в створенні компіляторів, так і у використанні його (множинного наслідування) в програмах. Як альтернатива Java використовує поняття інтерфейсу, що визначає набір методів, які повинні бути визначені в класі, що реалізовує цей інтерфейс.

Інтерфейс може також містити визначення деяких констант.

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

Досвід використання перевантажених операторів в С++ показує, що вони мають сенс в досить обмеженому наборі ситуацій. З іншого боку, зловживання цією властивістю може зробити програму абсолютно незрозумілою. Єдине “вбудоване” в мову Java виключення -- можливість використання оператора “+” для склеювання рядків.

В мові Java заборонено автоматичне перетворення типів, широко використовуване (і рекомендоване) в С++. Щоб перетворити елемент одного типу в іншій, необхідно вказати це явно, наприклад: int myInt; double myFloat = 3.14159; myInt = myFloat; // допустимо в С++, неприпустимо в Java myInt = (int)myFloat; // допустимо в Java. Виняток становить перетворення між вбудованими чисельними типами без втрати інформації.

Більшість досліджень показали, що застосування покажчиків в С/С++ є одним з основних джерел помилок. Внаслідок того, що в мові більше не стало структур, а масиви і рядки перетворилися на повноцінні об'єкти, потреба в покажчиках відпала.

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

Отже, ми показали дві з основних властивостей мови програмування Java:

- знайомий -- Java зберігає стиль програмування C і С++;

- простий -- кількість конструкцій мови в Java істотно скорочена в порівнянні із С і С++;

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

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

Ідейними спадкоємцями Java є такі мови, як C++, Eiffel, Smalltalk і Objective C. За винятком примітивних типів даних, практично все в мові є об'єктом.

Основні вимоги до об'єктно-орієнтованої системи:

- інкапсуляція -- захована реалізація за абстрактним інтерфейсом;

- поліморфізм -- одне і те ж повідомлення, послане різним об'єктам, приводить до виконання різних операцій;

- спадкоємство -- нові класи можуть успадковувати дані і функціональність вже існуючих класів;

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

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

Простий приклад опису класу:

class Point extends Object { public double x; public double у; }

Створити об'єкт описаного вище класу можна декларацією: Point myPoint; // оголошення змінної типа Point myPoint = new Point(); myPoint.x = 10.0; myPoint.y = 25.7;.

При оголошенні класу можливо вказати методи спеціального вигляду, названі конструкторами і призначені для ініціалізації створеного об'єкту. Ім'я цих методів повинне співпадати з ім'ям класу, вони можуть мати певну кількість аргументів, наприклад: class Point extends Object { Point() { x = 0.0; у = 0.0; } Point(double x, double у) { this.x = x; this.y = у; } public double x; public double у; }, а використані вони можуть бути таким чином: Point а; Point b; а = new Point(); b = new Point(1.0, 2.0); - ім'я this у визначенні конструктора з аргументами використовується для позначення самого об'єкту, в методі якого ми знаходимося, в тих випадках, коли посилання на цей об'єкт не є явним.

Якщо один об'єкт в програмі примушує інший виконувати якусь операцію, то прийнято говорити, що він посилає повідомлення іншому об'єкту. Наприклад, ми можемо перевизначити наш клас таким чином: Pclass Point extends Object { private double x; private double у; public void setX(double x) { this.x = x; } public void setН(double у) { this.y = у; }… }. Ми тепер зробили поля x і у недоступними ззовні класу, але для зміни їх стану передбачили спеціальні методи setX і setY.

Страницы: 1, 2, 3


© 2010 BANKS OF РЕФЕРАТ