All streams
Search
Write a publication
Pull to refresh
54
0
Steamus @Steamus

Пользователь

Send message
Иногда всё бывает. Но эти исключения лишь подтверждают общее правило. :)
На мой взгляд, данный вопрос, поставленный без явного указания платформ, никакого смысла не имеет. Это как спросить согласитесь ли вы поменять одну машину на другую. На какую?

Если как указано в предисловии (.NET -> PHP) — никогда. Смысл?

Да, заказчику это выгодно. Его можно понять. А мне — не выгодно, ибо придётся тратить время моей жизни на изучение более слабой (что бы не сказать больше) платформы. Разумеется, как профессионал, я с этим справлюсь, но, как профессионал, я также заинтересован в профессиональном росте, а не деградации. А заказчиков вокруг много. И PHP разработчиков также достаточно. Изучить сопоставимый по уровню продукт — это всегда пожалуйста. Вширь ещё расти можно, а вот вниз — нельзя.

В общем случае более сложная и мощная платформа даёт больше возможностей, включая финансовые. Для того люди и стремятся к профессиональному росту.

Согласится ли, к примеру, лётчик-истребитель променять свою лётную машину на, скажем, кукурузник? :)
Вчера релизнулись Java SE 7u17 и 6u43
Эклипс на SWT написан. То есть вообще родные контролы операционной системы. Swing использует L&F (Look and feel). Их много красивых. Ни о какой неопрятности интерфейса речь никогда не шла. Говорить можно было лишь о недостаточной квалификации разработчиков, не захотевших потратить время и разобраться что это такое. Я даже тут статью на Хабре писал лет сколько-то назад. JavaFX вообще стилизуется вдоль и поперёк.

Тормознутость ушла лет 10 назад. А лет 5 назад Swing уже работал быстрее чем Win Forms (проверяли на формах из 500 сложных контролов типа календаря).

Зоопарка JRE особенного не было, совместимоть там хорошая. Но да, если это апплет, то пользователь должен был сам поставить JRE. Я уже писал, Микрософт демонстративно оставил в Винде старую-старую версию Java. Что создавало эффект того что Java вот есть, но не работает.
А какие проблемы у Java на клиентской стороне? Всегда корпоративный сектор её там использовал. На мой взгляд существует расхожий миф, что там есть некие проблемы, отличные от других. Но назвать их внятно никто не сможет. А сейчас, когда JavaFX2 сменила Swing, так и вообще сложно будет.

Да, находят уязвимости в апплетах. Но апплет это одна из форм клиентского приложения. Она работает через инет. А если что-то работает через инет, то там всегда кто-то находит уязвимости. Есть такая беда. И она не только у Java.

А в остальном особенных проблем не вижу. Просто так получилось, что на сервере для Java вообще особенных альтернатив нет, а вот на клиенте они есть. Их там целый зоопарк. Это и C++ (MFC, Qt...) и C# (WinForms, WPF) и Adobe Air и ещё там по мелочи. А главное, настойчиво тиражируется мнение, что клиент толстый тихо «умирает» и вся жизнь перемещается в Web. А посему писать всё надо на Javascript и HTML 5. Иногда с этим до комизма доходит.
Я думаю всем ясно, что будь альтернатива, то java бы потеряла популярность, как сейчас потерял ActiveX. Я также не вижу альтернатив на сегодня,

Наверное мы пока не очень ушли в оффтоп. :)

Вы, походя, достаточно категорично высказались о платформе, но дальнейшая дискуссия показала, что вы не очень знакомы с вопросом. Посему, прежде чем свернуть дискуссию, сделаю пару пояснений. Возможно кто-то и не в курсе.

Во-первых — альтернатива есть. Есть Active-x для некоторых браузеров, есть Флеш, есть Silverlight. Это всё из той же оперы что и Java апплеты.

Ну и главное — Java апплеты были отличным решением в своё время, пока MS не стала их целенаправленно убивать. После того, как у MS не получилось подмять Java под себя, они не просто убрали Java из системы, они сделали хитрее, они оставили там самую старую её версию. Что реально ввело в прострацию пользователей. Типа Java есть, но не работает. И апплеты не стали массовым явлением, что было бы очень неплохо, ибо технология эта достаточна удобная и мощная. И альтернатив потому и не появляется, что рынок оказался больно привлекательным и борьба там довольно острая. В итоге мы имеем доминирование довольно странной смеси из HTML и Javascript. Полагаете эта парочка будет получше чем Java для сложных задач которые запускаются из Web?

Я понимаю скорость разработки, простота, кросплатформенность все это плюсы, но это привлекает в java огромное количество быдлокодеров...

Я также понимаю, что приятно называть многих коллег по цеху, которые как и большинство людей допускают ошибки, быдлокодерами (сами то вы, разумеется, ошибок не делаете), но бог не создал других людей. Уж какие есть. И эти “салаги” действительно на Java пишут более качественный код, чем многие гении на C++.
Мне как пользователю программного обеспечения глубоко сиренево на чем написан софт...

Вы примерно правильно пишете, в том смысле, что вокруг действительно много дрянного софта. И на java он часто встречается. Но, на мной взгляд, в выводе путаете знак. Мне кажется, что это традиционное заблуждение. Java тут не проблема, Java тут спасение.

Хороший программист отлично использует этот язык, но дело в том, что корпоративного софта пишется о-очень много. Несуразно много. Это просто валовый такой продукт. Выкатывается тоннами. Цивилизация не способна это всё реализовать на языках более низкого уровня. Физически. Попробуйте написать простейший сайт с обработкой серверной части на ассемблере?

Если бы не было Java и многие банковские вещи писались на более низкоуровневых языках, то даже если бы цивилизация и успела как-то реализовать всё то, что мы сейчас имеем, то мы бы все просто удивлялись фантастическому количеству падений программ. Экран смерти системы был бы привычной картинкой для большинства людей.

Переход к языкам с автоматическим управлением памятью вызвала сама жизнь, а точнее — общий интеллектуальный уровень индивидуумов которые способна поставлять/образовывать наша цивилизация. Нет на планете достаточного количества гениев, способных писать с такой же скоростью на других языках. Вот на Apple платформе преобладает один неудобный язык. И мы видим что Apple практически отсутствует в корпоративном секторе.

Разумеется, как пользователь, я могу сморщить нос и сказать что меня это всё не волнует, и я хочу просто щёлкнуть пальцами и получить идеальный результат, но поскольку форум таки профессиональный, то следует постараться понять и причины. Как пользователь автомобиля, к примеру, я хочу нажать на педаль, получить мгновенный разгон и чтобы бензина тратил 1 литр на 100 км. Ну или вообще ничего. Ну а что, я же пользователь, почему меня должны волновать их внутренние проблемы? Верно?
Да дырявая, медленная, прожорливая…

Вы не могли бы привести пример другой платформы, которая как и Java стоит на миллиарде компов и при этом никто годами не находит никаких уязвимостей, которая работает быстрее чем современная Java, потребляет мало памяти, но при этом является удобным и безопасным инструментом для разработчиков? На чём пишут те боги у которых недыряво, быстро, непрожорливо, качественно, кроссплатформенно и тд?

Если на достаточно безопасной, проверенной и даже где-то консервативной Java некие люди не смогли написать стабильно работающее приложение, то скорее всего на других системах разработки они вообще ничего написать не смогли бы.
Абсолютно совершенных платформ, закрывающих все типы задач, в жизни не бывает. Можно реализовать вашу задачу на C, но придёт другой умник и веско скажет, что у заказчика то на самом деле калькулятор «Электроника» и писать всё нужно было в его двоичных кодах. А стало быть все остальные языки «сосут» и вообще ерунда и тугодумы…
Ну и так далее.
Я же на ваш пост отвечал, а не прямо к статье. Тем самым согласившишь тут с автором.
Вот именно — я пояснил для чего они нужны. А вот автор не пояснил, а посоветовал типа не использовать часто. Глубокий такой совет… :)
Я не руководствуюсь критериями типа «с фанатизмом», «без фанатизма»…

Нужно, буду использовать. Не нужно — не буду. Если нужно — буду использовать столько сколько нужно. Фанатизм тут не причём. Я фанатизмом нигде не руководствуюсь и абстрактные советы типа… используйте но без фанатизма… полезными не считаю.
О! Несомненно! Поругать джава generics есть дело чести любого квалифицированного специалиста, ознакомившегося с этим языком (тэскэть, визитная карточка настоящего профи!), но, справедливости ради, должен заметить, что джава generics не только вредны, но и полезны.

Их просто не нужно путать с C++ templates. В templates, компилятор создаёт экземпляр для каждого употребления шаблона в коде и информация о типе доступна на рантайме. В джава generics, информация на рантайме уже не доступна.

Посему, не комплексуя по поводу того, что generics слабее чем templates, разумно использовать generics во многих местах, давая информацию о типах компилятору, дабы он смог дополнительно проверить типобезопасность. Ничего плохого в этом нет и пользоваться этим полезно.
Перечитайте внимательно. Я пояснил для чего они нужны. И да, если я принял решение об использовании наследования, то далее решаю не вынести ли что-то в абстрактный класс.
На основании чего вы решили, что я не понимаю сути наследования, мне осталось непонятным.
Угу. Если у них есть есть абстрактный класс, то поди и наследование присутствует. А раз присутствует наследование, то значит они ж его, стопудов, неправильно сделали. Прочту-ка и им лекцию на всякий случай на будущее…

Муж жене:
— Дорогая, ты не права.

— Мама, он меня сукой обозвал!!!
Бывает и такое, но в данном-то случае речь шла совсем о другом. Не так-ли? Посему и не понятно к чему вы нам лекцию о правильном употреблении наследования решили вдруг прочесть. :)
И что с того, что у них общий код? С чего вы решили, что все вокруг такие балваны, что из-за общего кода сразу бросаются городить иерархию классов, и вам непременно нужно начать крайне решительно с этим бороться? :D
Вот к чему вы мешаете в одну кучу понятие абстрактного класса и сам общий принцип наследования?

Вот эта ваша фраза:… Применять абстрактные классы нужно тогда, когда действительно между потомком и родителем есть отношение «is»… она звучит странно, ибо касается не непосредственно абстрактных классов, а постулирует принцип использования наследования как приём проектирования в целом. И причём тут это?

Когда мы создаём абстрактный класс, мы предполагаем, что в этой части проекта наследование УЖЕ выбрано как удобный и подходящий подход. Правильно это было сделано или нет, но это проектное решение другого уровня.

Абстрактный же класс (как выразительная особенность языка) позволяет определить наследование более безопасно и понятно.
А из-за таких как вы на проекте начинается паника на ровном месте. :)

Бездумно кидаться и что-то там лихорадочно «выделять» вобще в жизни никогда не нужно, Везде нужно вначале думать.

А абстрактный класс действительно позволяет собрать в одно место те базовые реализации методов, которые будут полезны потомкам. Видя, что некий метод имеет реализацию в абстрактном классе, вы уже знаете, что скорее всего эта реализация закрывает большинство потребностей и вам самим её делать не нужно. Опять же, на уровне абстрактного класса происходит некое внутреннее структурирование методов (интерфейс то ведь содержит только видимые паблик методы). Таким образом, вы сразу видите ту логику, которую желательно разнести по разным методам. Опять же, чётко выделяются те методы, которые вы просто обязаны реализовать.
Таким образом, абстрактный класс позволяет организовать код логически более понятно и безопасно. Ни к какой перегруженности иерархии эта возможность сама по себе не ведёт. Иерархию можно легко сделать избыточной и не имея возможности постулировать класс абстрактным.
Абстрактный класс реализуется на уровне синтаксиса языка. Туда выносится код, который потенциально будет общим и полезным для большого количества наследников. Просто общий код класса можно в любой метод вынести.

Логически, постулирование некоего класса как абстрактный, конечно же можно назвать паттерном. Но в «быту», его таковым уже не называют, в силу того, что он давно перешёл в разряд тривиально естественных и полезных вещей, ценность которых давно не оспаривается.

Information

Rating
Does not participate
Location
Беларусь
Registered
Activity