Сравнение языков программирования (esyr) (1161143), страница 11
Текст из файла (страница 11)
Message = {1}", path, e.Message);}catch (NegativeValueException e){Console.WriteLine("Value error. Message = {0}", e.Message);}catch (Exception e){if (e is ArgumentNullException || e is FormatException || e is OverflowException){Console.WriteLine("Parsing error. Message = {0}", e.Message);}else{Console.WriteLine("Oops, something went wrong. Message = {0}", e.Message);}}finally{if (file != null){file.Close();}}Ключевое слово event в C# позволяет уменьшить объём кода, необходимого для реализации событийной модели взаимодействия на делегатах. Иначе говоря,это такой синтаксический сахар для упрощ ения работы с обратными вызовами.using System;namespace wildert{public class Metronome{public event TickHandler Tick; // объявляем событие Tickpublic EventArgs e = null;public delegate void TickHandler(Metronome m, EventArgs e);public void Start(){while (true){System.Threading.Thread.Sleep(3000);if (Tick != null){Tick(this, e); // генерируем событие Tick}}}}public class Listener{public void Subscribe(Metronome m){open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com{// регистрируем обработчик события Tickm.Tick += new Metronome.TickHandler(HeardIt);}private void HeardIt(Metronome m, EventArgs e){System.Console.WriteLine("HEARD IT");}}}class Test{static void Main(){Metronome m = new Metronome();Listener l = new Listener();l.Subscribe(m);m.Start();}}ЗамечаниеДелегат — это тип, который определяет сигнатуру метода.
При создании экземпляра делегата можно связать этот экземпляр с любым методом ссовместимой сигнатурой. Метод можно запустить (или вызвать) с помощ ью экземпляра делегата. Делегаты похожи на указатели на функции в C++.[12]Моделирование приватных типов данных из Ады в C++[править]-- ADA-- headpackage P istype T is limited private;function Convert (X: in T) return Integer;end P;-- bodypackage body P istype T is record...end record;function Convert (X: in T) return Integer is...end Convert;end P;//C++//P.hppclass P {public:P();operator int () const;private:P(const P&);...}Эмуляция в Java private и limited private из Ады[править]В Java нет перегрузки операций, поэтому эмуляция limited невозможна на Java. Эмуляция private реализуется таким же способом, что сверху://P.javaclass P {open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comclass P {public P() {...}public int convert () {...}private ...}Итоговая таблица[править]Если в таблице указан знак вопроса, то либо этого языка не было в списке языков в задании, либо информация отсутствует.ANSI/ISO C(1989/1990)C++98C#JavaPascal Delphi ОберонОберон- ModulaAda83 Ada9522Оператор перехода «goto метка»естьестьестьнет[13] естьестьнетнетнетестьестьКонструкция "свойство" (property)нетнетестьнетнетестьнетнетнетнетнетАбстрактные методынетестьестьестьнетестьнетнетнетнетестьнет[14]естьестьестьнетестьнетестьнет[15]нетестьПерегрузка (overloading)нетестьестьестьнетестьнетнетнетестьестьИсключения (exceptions)[16]нетестьестьестьнетестьнетнетнетестьестьнет[17]нет[18] естьестьнетестьнетнетнетнетнетРаздельная независимая трансляцияестьестьнетнетесть[19] нетнетнетнетнетТип запись (struct, record)естьесть[20] естьнетестьестьестьестьестьестьестьч/и[21]и[22]нетнетестьестьнетнет[23]естьесть[24] есть[24]ПеречисленияестьестьестьестьестьестьнетнетестьестьестьЗапрещение замещения метода в произвольныхклассах или наследования классанетнетесть[25] есть[26] нетнетнетнетнетнетнетПроцедурное программированиеестьестьестьестьестьестьестьестьестьестьестьМодульное программированиеч/ич/иииииестьестьестьестьестьВложенные модулинетесть[27] естьнет (?) нет[28] нет[28] нет[28]нет[28]естьестьестьАТДнетестьестьестьнетестьестьестьч/и[29]есть[30] есть[30]Расширяющее программированиенетииинетиестьестьООПнетестьестьестьнетестьиестьнетнетиииинет[32] ииинетнетнетнетнетч/ич/иВиртуальные методы (a.k.a.
динамическоесвязывание методов)Конструкция try-finallyРазмеченные объединенияКомпонентное программированиеКомпозиционное программированиеopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIнетнетесть[31]pdfcrowd.comОбобщенное программированиенетиПараллельное программированиенетРефлексивное программированиеинетнетнетнетнетнетестьестьнет[33] естьестьнетнетнетнетч/и?естьестьнетиестьинетииинетнетнетПередача параметров по значениюестьестьесть[34] естьестьестьестьестьестьесть[35] есть[35]Передача параметров по ссылкеи[36]иесть[37] иесть[38] есть[38] есть[38] есть[38]есть[38] есть[39] есть[39]ч/и - частично имитируетсяи - имитируетсяПримечания[править]1.
↑ Была правка UTF-16 → Unicode. Откатил. Пояснил на странице обсуждения.2. ↑ Иногда говорят «референциальные типы», здесь использован вариант перевода из msdn.3. ↑ Если не считать (T *) → (void *).4. ↑ Следует иметь ввиду, что в случае простых типов не всегда более общ ий тип может отобразить менее общ ий.
К примеру, вещ ественный тип singleстандарта IEEE 754 не может точно представить число 16777217, в то время как 32-битный целочисленный тип может.5. ↑ Исключение составляет, например, неявное приведение числового литерала к конкретному типу. Подробнее: [1].6. ↑ Стоит уточнить, что статический класс в C# может иметь статический конструктор, см.
далее раздел про C#.7. ↑ Видимо, без использования «родных» аналогичных конструкций, нужно уточнить.8. ↑ Видимо, подразумевается конструкция throw (…) в заголовке метода/функции, а не выбрасывание (или повторное выбрасывание) исключения с помощ ьюоператора throw.9. ↑ Терминология отличается от принятой в мире языков с C++-подобным синтаксисом. Там: выбрасывание/выброс (throw), здесь — поднятие/возбуждение(raise).10. ↑ Вероятно, только перед определением типа.11. ↑ По крайней мере в контексте Java более корректно будет говорить не о наследовании (extends), а реализации (implements) или частичной реализацииинтерфейса (последнее возможно только для абстрактных классов)12.
↑ Процитировано из msdn .13. ↑ Есть break label; и continue label;, где label ставится с двоеточием перед началом цикла и указывает, какой именно цикл (в случае continue — итерациюкакого именно цикла) среди тех, в которые вложен данный оператор, нужно прервать. В Java есть зарезервированное слово goto, но оно не несёт никакихфункций — оператора безусловного перехода в языке нет (однако переход осущ ествить можно, см. [2] ).14.
↑ Обычно реализуется через указатели на функции и указатели на структуры с указателями на функции.15. ↑ Комитет ISO утвердил т.н. «объектное расширение» (OO extension). (См.: стандартизация ISO Modula-2 .) В получившемся языке каждый методвиртуален (взято отсюда ). Однако в канонической Modula-2 даже наследования-то нет (собственно, это одна из фич Oberon).16. ↑ Исключения также есть и в Visual Basic.17. ↑ Имитируется макросами черезgoto cleanup;18. ↑ Декларируется отстутвие необходимости ввиду налиия RAII; есть в качестве расширения в некоторых реализациях (GCC, MSVC)19.
↑ С версии 4.0.20. ↑ Является классом с публичной областью видимости для полей; если не использовать виртуальные методы, близок по использованию к структурам в C.21. ↑ Обычный union + детерминант + ручная проверка22. ↑ Или как в С, или используя boost::variantopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com23.
↑ Нет в Оберон; учитывая характер изменений, внесённых в Оберон-2, делаем вывод о том, что размеченных объединений в нём нет.24. ↑ 24,0 24,1 Есть в Ада; вероятно, есть и в конкретной реализации.25. ↑ Используется ключевое слово sealed.26. ↑ Используется ключевое слово final.27. ↑ См. статью «Модули в С++» .28. ↑ 28,0 28,1 28,2 28,3 Вложенными могут быть только подпрограммы, которые не являются библиотечными модулями.29. ↑ Делаем структуру, скрыто экспортируем указатель на неё в другой модуль.30. ↑ 30,0 30,1 См. статью «Абстрактные типы данных в Ada» .31. ↑ См., например, Programming: Object Orientation, Язык Ада, 08 лекция (от 21 апреля)32.
↑ Стандарт Паскаля — не поддерживает! w:Компонентный Паскаль и далее — поддерживают.33. ↑ В C++11 появился std::thread. Подробнее .34. ↑ cм. MSDN .35. ↑ 35,0 35,1 Ключевое слово in (подразумевается по умолчанию).36. ↑ Моделируется с помощ ью указателей.37. ↑ Модификаторы ref и out, также см. MSDN .38. ↑ 38,0 38,1 38,2 38,3 38,4 Ключевое слово var.39. ↑ 39,0 39,1 Ключевое слово access.Языки Программирования01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28Календарьчт вт чт вт чт вт чт вт чт втСентябрь05 07 12 14 19 21 26 28Октябрь03 05 10 12 17 19 24 26 31НоябрьДекабрь0214 16 21 23 28 3005 07 12 14Материалы к экзаменуСравнение языков программированиянавигацияЗаглав ная страницаНов остиУказательФронт работВнешние ресурсыинструментыСв ежие прав киopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comСлучайная статьяразделыЛекцииLinuxmsu_cmcспецкурсыСов ременнаякриптографияДизайн и реализацияОС FreeBSD9 семестрФСВПТеория игры и ИОИстория математикиРоссийское прав оИстория религииПОД7 семестрВычислительныесистемыООАиПИИМатематическаялогикаФункциональныйанализСоциологияПараллельнаяобработка данных5 семестрБазы данныхЯзыкипрограммиров анияЭкономические Науки3 семестрОперационныесистемыпоискПерейтиНайтиинструментыopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comинструментыСсылки сюдаСв язанные прав киЗагрузить файлСпецстраницыВерсия для печатиПостоянная ссылкаПоследнее изменение этой страницы: 23:52, 27 июля 2013.К этой странице обращались 8518 раз.w ikiopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIПолитика конфиденциальностиОписание eSyr'sОтказ от отв етств енностиpdfcrowd.com.