catpad: (Default)
catpad ([personal profile] catpad) wrote2002-06-24 08:01 pm

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

Итак, я решил сравнить 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. параллельные одноимённым классам только путают всё дело.

[identity profile] ex-ilyavinar899.livejournal.com 2002-06-24 07:27 am (UTC)(link)
У моего нового работодателя есть Java-пакет по constraint programming. В нём operator overloading очень не хватает. Одно дело найти максимум x.plus(y) - а совсем другое x+y.

[identity profile] catpad.livejournal.com 2002-06-24 07:48 am (UTC)(link)
Так я и не говорю, что он плох. Мне просто не нравится - заиграться легко.

[identity profile] ex-ilyavinar899.livejournal.com 2002-06-24 08:18 am (UTC)(link)
Ты видел мою презентацию по .NET (www.syntez.org/ilyavinarsky/DotNET.ppt)?

[identity profile] ex-ilyavinar899.livejournal.com 2002-06-24 08:21 am (UTC)(link)
исправил ссылку (http://www.syntez.org/ilyavinarsky/DotNET.ppt)

[identity profile] catpad.livejournal.com 2002-06-24 03:23 pm (UTC)(link)
Да, теперь посмотрел. Похоже.
Но я просто собрал свои впечатления, после того, как прочитал эту замечательную книжку (http://www.amazon.com/exec/obidos/ASIN/0735614229/qid=1024956874/sr=8-1/ref=sr_8_1/102-4640760-7304135). Большая редкость в потоке околопрограммистской макулатуры. Последний раз такая же удача постигла меня вот здесь (http://www.amazon.com/exec/obidos/ASIN/0071350934/qid=1024957082/sr=2-1/102-4640760-7304135), но это уже о Java.

А вообще-то я Майкрософтом доволен первый раз, по-моему. Сделали что-то правильное.
То есть, я всегда говорю, что среды у них замечательные, UI хороший, а вот все эти COM навороченные, Visual Basic с VBScript'ом недоразвитые - ужас. Ну теперь хоть хватило ума украсть хорошую идею и немного её улучшить.

[identity profile] ex-ilyavinar899.livejournal.com 2002-06-24 05:56 pm (UTC)(link)
В презентации много ссылок на более глубокую техническую информацию, нежели книжка Рихтера.