«Մասնակից:MHamlet/Սևագրություն/5»–ի խմբագրումների տարբերություն
Content deleted Content added
No edit summary |
No edit summary |
||
Տող 10.
|publisher=Oracle |date=1999-01-01 |accessdate=2013-01-14
}}</ref>։ Եվ նա այդ հանձնարարությունը կարողանում է կատարել։ С++֊ը, իր հերթին, ցանկանում է ունենալ «բազմակողմանի կիրառություն» ծրագրավորողների բոլոր կատեգորիաների բոլոր հանձնարարություններում, սակայն չի լիովին բավարարում հայտարարված կիրառման ոչ մի ոլորտների պահանջներին:
; Ծրագրի կատարումը :
; Парадигма программирования : Java в значительно более высокой степени, чем С++, отвечает фундаментальному принципу ООП «''всё — объект''» (но не в абсолютной — методы классов самостоятельными объектами не являются, в отличие от [[CLOS]] или [[Python (язык программирования)|Python]]). Для объявления глобальных функций или переменных в Java их необходимо оборачивать в фиктивные классы и назначать свойство статичности<ref>[http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html Class Arrays, JavaTM 2 Platform Std. Ed. v1.4.2]</ref>. Для задания главной функции даже самой простой программы на Java необходимо поместить её в класс<ref>[http://java.sun.com/docs/books/tutorial/getStarted/application/index.html The Java Tutorials. A Closer Look at the «Hello World!» Application]</ref>. Программировать на Java в функциональном стиле затруднено{{нет АИ|31|08|2013}}<!-- Вообще-то оно НЕВОЗМОЖНО - утверждающим обратное придётся продемонстрировать функциональное проектирование/декомпозицию (т.е. изоморфизм Карри-Ховарда), лямбда-абстракции, построение ADT, карринг и, конечно же, ИСТИННЫЙ полиморфизм (не путать с ad hoc-полиморфизмом из ООП) -->, поскольку на уровне синтаксиса языка нет поддержки основных элементов ФП (таких как [[Функция высшего порядка|функций высшего порядка]]) и нет средств макрорасширения языка.
; Օբյեկտային մոդելը : Как и в С++, объектная модель Java наследуется из [[Симула|Симулы]] (в Java — через промежуточную ступень — язык Modula-2), то есть фундаментально отличается от оной в потомках языка [[Smalltalk]] ([[Objective-C]], [[Python (язык программирования)|Python]], [[Ruby]]). Но есть серьёзные отличия и от С++. В Java все методы являются виртуальными. Есть синтаксический сахар для определения абстрактных классов: использование ключевого слова <code>interface</code> делает все методы класса чистыми виртуальными — такие классы называются в Java «интерфейсами». Множественное наследование допустимо только для них, но не для обычных классов, что улучшает дисциплину программирования — на этапе реализации нет возможности нарушить структуру проекта, построенную на этапе архитектурного проектирования (в С++ это делается легко).
|