catpad (catpad) wrote,
catpad
catpad

Займёмся программированием

Итак, я решил сравнить C# с Java. Вот, что получилось:



Что мне нравится в C# по сравнению с Java


  • Вернулись enums. И это хорошо. Сколько можно final static public int ?
  • Вернулся препроцессор. Без него тоже тяжко.
  • Слово const лучше отражает суть дела, чем final.
  • @ обозначает "verbatim string" - очень удобно, давно ожидалось, особенно в регулярных выражениях.
  • ~ как обычно обозначает деструктор, что, хотя и путает дело, но выглядит привычно.
  • foreach ! О, наконец-то !
  • params - хорошее решение (компромисс) уродливейшему способу С/С++.
  • Оператор typeof - лучше выглядит, чем getClass().
  • Оператор as - лучше кастинга.
  • Оператор is - лучше, чем неуклюжее instanceof.
  • ref, out - очень нужные народу вещи.
  • Properties - великое нововведение. Давно надо было, JavaBeans просто жаждут properties. Indexers - тоже неплохая вещица.
  • Attributes - тут подход может быть двоякий. Оно вроде бы и удобно, но путаницы может внести - ужас !
  • Отсутствие primitive types. Это правильно, primitive types - опиум для народа, правда, тут всё ещё хуже, но об этом потом.
  • struct вместо класса - хорошо для lightweight типов и, к тому же, позволяет избавиться от примитивных типов, но путаницы от них может быть и больше, чем пользы.
  • Форматирование стрингов с помощью {0},{1},... - очень удобно, и лучше, чем в С.
  • using определяет сразу весь namespace, что гораздо удобнее, чем громоздкие джавовские import-s.
  • Отсутствие в Object'e функций wait() и notify(), по-моему, только прибавляет ясности.


Что мне НЕ нравится в C# по сравнению с Java



  • Двоеточие вместо extends и implements - не даёт понять, кто есть класс, а кто интерфейс.
  • Глядя на название типа, нет способа понять, кто есть value type, а кто reference type. Большая путаница может произойти от этого дела. Весь этот boxing-unboxing выглядит очень неуклюже.
  • Вернулся нелюбимый мною operator overloading.
  • Delegates, events вместо простых и ясных как день listeners и анонимных классов вызывают отвращение.
  • Namespace со своими скобочками, по-моему, гораздо хуже package'a.
  • Структура директорий, повторяющая структуру packages в Jave, по-моему, очень сильно упрощает дело поиска нужного класса и, вообще, упорядочивает мысли.
  • Опять разделение на virtual и non-virtual функции - кому это нужно. Можно же с ума сойти от всех этих new (вообще слово не к месту) и override.
  • Функция не объявляет throws - и очень жаль !
  • Ключевые слова object, string, etc. параллельные одноимённым классам только путают всё дело.
Subscribe

  • The Moth Quest

    Официально открываю новый квест — The Moth Quest AKA Нанюхавшаяся Моль. Участники взяли себе неделю отдыха от предыдущего…

  • Moth Quest

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

  • Восьмая глава

    Закончил восьмую главу «Хайдеггера и Самовара». Это глава о самых разных языках и о языке вообще, о поэзии, о каббале и о…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments