Компания Yahoo работает (http://www.xconomy.com/san-francisco/2012/01/26/yahoo-challe.../) над созданием универсального инструментария для разработки переносимых мобильных приложений, которые смогут работать на всех популярных мобильных платформах. Для распространения подобных программ планируется подготовить специальных облачный сервис. Основной акцент в платформе Yahoo делается на средствах доставки контента на устройства пользователей, упрощая организацию взаимодействия между создателями контента и потребителями.
Разрабатываемая в Yahoo система позволит создавать приложения с использованием web-технологий: будет подготовлен набор компонентов на базе JavaScript, HTML5 и CSS3, которые смогут выполнять задачи по обработке данных и формированию интерфейса в мобильных приложениях для любых операционных систем, проповедуя принцип "написано один раз, работает везде". Постепенно развиваемый инструментарий планируется перевести в категори...URL: http://www.xconomy.com/san-francisco/2012/01/26/yahoo-challe.../?
Новость: http://www.opennet.me/opennews/art.shtml?num=32927
Как всегда: http://imgs.xkcd.com/comics/standards.png
Вот поэтому все языки программирования, кроме Javascript, и умерли.
Взглянем правде в глаза JavaScript - лучший язык подобно тому как JSON лучший формат хранения данных.
И не надо со этим спорить. Это объективное мнение.
Вы же понимаете что эту фразу сейчас разберут на цитаты, да? X)
Зато вы не понимаете, что человек вас троллит =))) причем весьма забавно ))
> Это объективное мнение.Уже эта фраза абсурдна сама по себе. Мнение может быть только субъективным.
> И не надо со этим спорить. Это объективное мнение.Объектив протрите)
/---http://www.3dnews.ru/news/623556/
Продажи телефонов Nokia на Series 40 превысили 1,5 млрд штукКомпания Nokia объявила о рекордном достижении — продажи ее телефонов на платформе Series 40 превысили 1,5 млрд штук. Полуторамиллиардным аппаратом оказался телефон Asha 303, приобретенный жительницей бразильского города Сан-Паулу Майарой Родригес (Mayara Rodrigues).
Сложно судить, было ли это счастливой случайностью или же просто удачным маркетинговым ходом, но Nokia Asha 303 является флагманским аппаратом линейки телефонов на Series 40. Он был представлен в числе четырех моделей линейки Asha (200, 201, 300 и 303) на мероприятии Nokia World 2011 в октябре прошлого года.
Asha 303 оснащен 2,6" сенсорным емкостным экраном, QWERTY-клавиатурой, 3,2-Мп камерой, модулями Bluetooth и Wi-Fi, модемом 3G, FM-радио и слотом для карт памяти microSD.
Первым телефоном на платформе Series 40 был Nokia 7110, выпущенный в 1999 году. В настоящее время аппараты на Series 40 являются своего рода связующим звеном между телефонами начального уровня и смартфонами, обладая неплохой функциональностью при умеренной цене.
---/
Вот она, объективная реальность. В Series 40 только J2ME.Для кого все эти сервисы приложений, для гиков-лунатиков со смартфонами? Земные люди предпочитают обычные "звонилки".
> предпочитают обычные "звонилки".А кто всяких земноводных вообще спрашивает? Продавать звонилки - невыгодно, оно на грани чуть ли не нулевой прибыли. Поэтому направление почти не развивается и делается по остаточному принципу - устройства для бомжей и школьников. По принципу "такая какашка что если потеряешь - не жалко".
Вы случайно не путаете бабушкофоны с Series 40?
>Вот она, объективная реальность. В Series 40 только J2ME.
>Для кого все эти сервисы приложений, для гиков-лунатиков со смартфонами? Земные люди предпочитают обычные "звонилки".Поверьте, в "звонилке" нафиг не нужно J2ME.
> Поверьте, в "звонилке" нафиг не нужно J2ME.Бабушкофону нафиг не нужно J2ME, как и школьникам не нужны бабушкофоны. Такие дела. ;)
>> Поверьте, в "звонилке" нафиг не нужно J2ME.
> Бабушкофону нафиг не нужно J2ME, как и школьникам не нужны бабушкофоны. Такие
> дела. ;)Школию нужно беспредельно напичканную свистоперделками социаломобилу с втентакликом, г.вноклассниками, мордокнигой и прочими издержками г.вносферы. :)
Кстати, пока вы сидели в криокамере, жабофоны сдохли. Нокла прикрыла всю линейку жабофонов. Все, амба. Они больше не производятся и не продаются. Разве что на митинском радиорынке с рук и б/у.
> Все, амба. Они больше не производятся и не продаются. Разве что на митинском радиорынке с рук и б/у.Теперь все, что им остается, - стать культовыми и продаваться среди жабофилов за тысячи нефти
> Вот поэтому все языки программирования, кроме Javascript, и умерли.
> Взглянем правде в глаза JavaScript - лучший язык подобно тому как JSON
> лучший формат хранения данных.Все так, но не Javascript, а Pascal.
>> Вот поэтому все языки программирования, кроме Javascript, и умерли.
>> Взглянем правде в глаза JavaScript - лучший язык подобно тому как JSON
>> лучший формат хранения данных.
> Все так, но не Javascript, а Pascal.в основе всего лежит assembler
> в основе всего лежит assemblerОн же умер :)
>Он же умер :)Ты про запах? Нет. Он просто в панки подался.
Нет, я про то, что тут некоторые толстячки говорят, что все языки, кроме JS^Wпаскаля умерли :)
> Ты про запах? Нет. Он просто в панки подался.В соседних новостях тусует. У VP8 в последнее время очень интенсивно асмовые оптимизации пилят, особенно под ARM. Странно, да? :)
> Он же умер :)То-то в двух соседних новостях про VP8/webm - в этом кодеке постоянно асмовые оптимизации перетряхивают, чтобы выиграть еще ...цать процентов :)
> в основе всего лежит assemblerВ основе машинных кодов не лежит.
> В основе машинных кодов не лежит.Как бы это сказать? Ассемблер является человекочитаемым представлением процессорных команд. Выписывать опкоды и операнды прямо в hex-эдиторе - несколько неудобно, я бы сказал.
Тебе говорят - машинные коды лежат в основе ассемблера, а не наоборот
>Вот поэтому все языки программирования, кроме Javascript, и умерли..
>>Все так, но не Javascript, а Pascal.все такие тонкие... Один лучше другого)))
> Вот поэтому все языки программирования, кроме Javascript, и умерли.
> Взглянем правде в глаза JavaScript - лучший языкУважаемый.
Вы сидите в операционке, которая на писана на умершем языке.
Ваш браузер написан на упоспшем диалекте.
Игрушки, в которые вы играете, уже попахивают омертвевшим движком.
Ужас? Некрофилия? Прыщи? Перхоть?Решение есть!
Переходите на ОС, которая написана на самом лучшем языке на земле - на JavaScript.
Как?
Такой ОС ещё нет?
Ну так вперед - там главное ядро и драйверы на JS переписать.
Юзерленд допишет сообщество)
> Уважаемый.
> Вы сидите в операционке, которая на писана на умершем языке.К сожалению. И каждый раз при усправлении одной строки в программе приходится обновлять весь скомпилированный бинарник целиком, а исправлений ой много, тут и -
- Не инициализированные переменные,
- Утечки памяти
- Переполнения
- Ошибки форматной строки
- и тд.
чего нет в JavaScript.
> - Не инициализированные переменные,О, да, а яваскрипт решает проблему инициализацией всех создаваемых переменных. Одним присваиванием больше/меньше - ну и что, компы же мощные, стерпят. Вы ядро с таким подходом напишите сначала - а там посмотрим.
> - Утечки памяти
А 300 мегабайт под список на ExtJS из 150 элементов - это конечно не утечка, это нормально.
> - и тд.
Забыли упомянуть про более высокую производительность/низкое потребление ресурсов приложений на устаревших языках. Но компы же мощные, надо же их чем-то занять.
То есть вы не знаете чем грозят не инициализированные переменные в с/с++?
Займитесь самообразованием, никогда не поздно.
>А 300 мегабайт под список на ExtJS из 150 элементов - это конечно не утечка, это нормально.Нет, это ваша фантазия.
>Забыли упомянуть про более высокую производительность/низкое потребление ресурсов приложений на устаревших языках. Но компы же мощные, надо же их чем-то занять.Google docs рабоает быстрее LibreOffice - так что быстрота мертвых языков переоценена.
> То есть вы не знаете чем грозят не инициализированные переменные в с/с++?
> Займитесь самообразованием, никогда не поздно.
>>А 300 мегабайт под список на ExtJS из 150 элементов - это конечно не утечка, это нормально.
> Нет, это ваша фантазия.
>>Забыли упомянуть про более высокую производительность/низкое потребление ресурсов приложений на устаревших языках. Но компы же мощные, надо же их чем-то занять.
> Google docs работает быстрее LibreOffice - так что быстрота мертвых языков переоценена.
> Нет, это ваша фантазия.Реальность превосходит самые смелые фантазии :)
Простейшая структура данных, на сях занимавшая считанные байты, на JS может разрастись до гигов.> Google docs рабоает быстрее LibreOffice - так что быстрота мертвых языков переоценена.
А notepad - еще быстрее, так что "мертвые" языки рулят :)
> Google docs рабоает быстрее LibreOffice - так что быстрота мертвых языков переоценена.Иди, сделай на JS'е тот же snappy compression от гугля быстрее чем он на сях, а я посмотрю как это у тебя получится. Вместе погоняем бенчи, вместе посмеемся :)
> Нет, это ваша фантазия.А я видел как сайт на extJS кладет за ночь любой браузер по out of memory. Этот extJS вообще довольно глючный в этом плане - память там течет просто ведрами. А кто сказал что на JS нельзя утечки памяти делать? Вообще-то вполне можно. Более того, обычно один и тот же алгоритм на C и JS во втором случае жрет куда больше памяти и тормощит намного сильнее, даже с JIT.
> чего нет в JavaScript.Зато там есть куча других проблем. Корявая концепция и синтаксис, дикий жрач памяти и жуткие тормоза - именно поэтому никаких ОС на JS нет и в обозримом будущем не будет.
> чего нет в JavaScript.А еще в JS нет возможности делать низкоуровневые операции. Что ставит крест на возможности написать на этом операционку. Всего-то. Как бы удачи тебе написать кернел на JS, только JS и ничего кроме JS.
>А еще в JS нет возможности делать низкоуровневые операции.Правда? А не врешь? Ну ка какие операции недоступны JS?
> А еще в JS нет возможности делать низкоуровневые операции.дык и в сях нет. я понимаю, что тебе это покажется кощунством и бредом, но. никакой стандарт сей не говорит, что нельзя сделать песочницу, за которую программе будет запрещено выйти. так же, как в JS можно добавить объекты для работы с железом. нет, не новые конструкции языка, если чо.
кстати, написать ОС на JS вполне возможно. используя существующий JS делаем компилятор из подмножества JS в «родной» код. на этом пишем простейшее ядро: gc, минимальный ввод-вывод, прочее. чтобы только взлетело. портируем туда наш компилятор и спокойно продолжаем писать. по-сути, это ничем не отличается от написания оси на сях или любом другом языке — кроме того, что компиляторы сей в «родной» код уже кем-то написаны.
p.s. это всё не отменяет того факта, что «дизайн» у JS ужасен. при этом есть и много вкусностей, но… реально, JS — это или «используем обрезаное подмножество» (как делают 99% js-кодеров), или радостно и с песнями ходим по граблям, проклиная Брэндана за употребление тяжёлых наркотиков во время создания языка.
> «используем обрезаное подмножество» (как делают 99% js-кодеров)99%? Оптимист...
> К сожалению. И каждый раз при усправлении одной строки в программе приходится обновлять > весь скомпилированный бинарник целиком, а исправлений ой много, тут и -
> - Не инициализированные переменные,
> - Утечки памяти
> - Переполнения
> - Ошибки форматной строки
> - и тд.
> чего нет в JavaScript.при всём уважении к Javascript -- совершенно НЕЛЬЗЯ сказать что он НЕ провоцирует утечки памяти..
обратите внимание на эту страницу:
http://wiki.ecmascript.org/doku.php?id=strawman:strawman"Strawman" -- это список возможно-будущих улучшений Javascript-языка которые (улучшения) даже НЕ войдут в ближайший список улучшений под кодовым названием "Harmony" (см. http://wiki.ecmascript.org/doku.php?id=harmony:proposals)
тоесть те улучшения которые ожидать в *ближайшем* будущем ну просто вообще не реально, настолько это *далёкие* планы.
и очень уныло видеть в этом списке (в "Strawman") -- "weak references and post-mortem finalization."!!! обычные Слабые Ссылки!! их нет сейчас в Javascript и появятся они практически никогда!! [хотя есть в других языках, почти во всех! ну кроме "PHP" и "C" :) :)]
отсутствие Слабых Ссылок (в случае когда они ну так нужны в js-приложении!) -- ну просто ппц как провоцирует утечки памяти!, я гарантирую :-) !
..хотя впринцепе Javascript совсем не плох.. ещёбы поскореебы добавили бы туда yield-генераторы и вообще былобы супер (ну yield-генераторы ждать совсем не долго осталось ^_^) :-)
А вот что говорит по этому поводу вики:"Понятие слабой ссылки существует в системах и языках программирования, где поддерживается сборка мусора — автоматическое удаление из памяти объектов, использование которых прекратилось и более не будет возобновлено."
"В распространённых сейчас языках программирования со сборкой мусора — Java и C#, — слабые ссылки поддерживаются на уровне системных библиотек. В Java для этого служит классы java.lang.ref.WeakReference и java.lang.ref.SoftReference"
Так что суть вашей претензии, равно как и восхищения слабыми ссылками, не понял.
Вы это лично видели? Своими глазами? Скажите, а алиби у вас есть? Где бы выли в ночь с 14 на 27?
зачем городить ещё один велосипед, да ещё на жаваскрипте в котором нет нормального ооп и нормальной отладки .
>нет нормального оопЭто недостаток или достоинство?
>нормальной отладкиЧем отладка с возможностью подключения по сети, профайлером памяти и горячим редактированием кода, плоха? Про мелочи типа поддержки dtrace я вообще молчу.
Кстати ваш язык программирования не умеет и этого.
Вы лжете, питон умеет все это.
> Чем отладка с возможностью подключения по сети, профайлером памяти и горячим редактированием
> кода, плоха? Про мелочи типа поддержки dtrace я вообще молчу.
> Кстати ваш язык программирования не умеет и этого.Javascript? Да, не умеет.
>Javascript? Да, не умеет.Вы в фразе "не умею" сделали 3 ошибки. Надо быть внимательнее.
> Вы в фразе "не умею" сделали 3 ошибки. Надо быть внимательнее.Я не javascript, не надо нас путать :)
> Чем отладка с возможностью подключения по сети, профайлером памяти и горячим редактированием
> кода, плоха? Про мелочи типа поддержки dtrace я вообще молчу.
> Кстати ваш язык программирования не умеет и этого.1) А что, gdb уже отменили? Или он разучился цепляться по сети? Или вы просто настолько ламер что не в курсе такой ерунды? Более того, для дебага когда у нас полудохлое ядро, которое надо отдебажить - оно через сериальный порт цепляется (это простой интерфейс, который не склонен подыхать, тогда как живость TCP/IP и драйвера сети в ядре при серьезном факапе - под большим вопросом).
2) Профайлеры, ВНЕЗАПНО есть для хоть тех же сей много лет.
3) Инструментов отладки/профайлинга/трассировки для сей - на десять JS хватит. А то что вы тупой или не смогли их найти - так это ваш недостаток, а не ЯП.
> нет нормального оопдоказать не затруднит?
хинт: прототипы как раз и есть «нормальное ООП». а то, что ты привык считать «ООП» — кривокостыль.
> и нормальной отладки
доказать не затруднит? у меня всё есть.
>> нет нормального ооп
> доказать не затруднит?нормальное ооп - это такое, которое реализует инкапсуляцию, наследование и полиморфизм, и позволяет использовать паттерны проектирования, и программировать на уровне интерфейсов, а не реализаций.
из тех языков, на каких я пишу, нормально ооп реализовано в java и c++.
можете прочитать книжку "head first design patterns" shop.oreilly.com/product/9780596007126.do , на русском тоже есть, очень простым языком описаны принципы проектирования, основные паттерны и прочие полезные вещи.
Вам бы вместо того что бы читать "Патерны проектирования для полных идиотов(в картинках)" лучше бы взяли оригинальную книгу "Design Patterns: Elements of Reusable Object-Oriented Software".
Там прямо на 4 странице написано что:
Патерны, описанные в данной книге являются костылями, компенсирующими недостатки описанных языков( с++ и smalltalk), и что для более "слабых" языков типа С пришлось бы описывать дополнительные патерны типа "Наследование", а для более "сильных" приведенные патерны вообще не нужны. Например для Лиспа не нужен не один из приведенных в книге патернов, кроме наблюдателя. А для Javascripta со встроенной системой событий не нужен и он.
Поэтому к патернам относятся как к необходимому злу, и стремятся заменить их готовыми библиотеками или фреймворками, или, вообще, использовать более мощные языки програмирования, например Javascript.
(Вы же знаете, что Qt5 переходит на Javascript, а С++ рекомендуется использовать в минимальном объеме, только для низкоуровневых системных вызовов?)
ООП и паттерны нужны для проектирования более-менее сложных проектов, с целью обеспечить читаемость ,сопровождение и развитие кода. нормальное ООП и паттерны дают возможность всё это использовать. а жаваскрипт - это язык, который создавался на скорую руку на коленке, с целью обеспечить динамичность веб-страниц, и поэтому совершенно ясно, что ни для какого серьёзного проектирования он не предназначен, и про ООП, паттерны, инкапсуляцию, наследование и полиморфизм не может быть и речи.
>Вы же знаете, что Qt5 переходит на Javascriptжаваскрипт пихают туда, где он нафиг не нужен, он не предназначен для серьёзного проектирования и сложных вещей. для быдлоподелок на скорую руку он может и подойдёт.
>Поэтому к патернам относятся как к необходимому злу, и стремятся заменить их готовыми библиотеками или фреймворками
как можно фреймворком или библиотекой заменить , к примеру, паттерн "стратегия" ????
и как в жваваскрипте реализовывается принцип проектирования на уровне интерфейсов (подсказка - никак)
> и как в жваваскрипте реализовывается принцип проектирования на уровне интерфейсов (подсказка
> — никак)(ржот) ты бы сначала js выучил, болезный. впрочем, не надо: это разрушит твой уютный мирок.
хинт: интерфейс — это костыль для языков с недоООП.
p.s. а как жабоцэпэпэ умеют mixins, например? что, даже не знаешь, о чём речь? а туда же, про ООП рассуждает…
> хинт: интерфейс — это костыль для языков с недоООП.Интерфейс это возможность более строгой типизации для объектов. в JS нельзя задать что в функцию приходит определенный тип - только просто объект. Отсутствие строгой типизации это возможность прострелить ногу любителям JS.
> p.s. а как жабоцэпэпэ умеют mixins, например? что, даже не знаешь, о
> чём речь? а туда же, про ООП рассуждает…а нафига mixins? заткнуть дырку не умения адекватно использовать интерфейсы?
PS С++ может эмулировать михины.
> Интерфейс это возможность более строгой типизации для объектов.офигеть. а мужики-то и не знали! вообще-то — нет. после такого пассажа разговаривать с тобой об ООП вообще бессмысленно.
> в JS нельзя задать
> что в функцию приходит определенный тип — только просто объект. Отсутствие
> строгой типизации это возможность прострелить ногу любителям JS.я даже не буду спрашивать, каким боком это относится к ООП.
> а нафига mixins? заткнуть дырку не умения адекватно использовать интерфейсы?
brilliant!
> PS С++ может эмулировать михины.
бу-го-га.
>> Интерфейс это возможность более строгой типизации для объектов.
> офигеть. а мужики-то и не знали! вообще-то — нет. после такого пассажа
> разговаривать с тобой об ООП вообще бессмысленно."В отличие от многих других видов интерфейсов, интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции, широко используется кодом программы."
Конечно в ООП можно и без интерфейсов. Только сцуко не удобно. Когда кода на 1-3к файлов, тогда только строгая типизация и никаких JS. В крайнем случае делается JS код, дальше оборачивается в GWT.
>> в JS нельзя задать
>> что в функцию приходит определенный тип — только просто объект. Отсутствие
>> строгой типизации это возможность прострелить ногу любителям JS.
> я даже не буду спрашивать, каким боком это относится к ООП.ООП это подход. Применение любого подхода определяется удобством для написания программ. ООП со строгой типизацией удобно для написания больших программ.
JS удобно применять когда нужно без изменения кода приложения менять логику. Но в гомеопатических дозах.
Использование JS в браузерах идет только потому, что "так сложилось исторически". Плюс JS позволяет чувствовать себя творцом выделывая всякую хрень на ходу...
>[оверквотинг удален]
>>> в JS нельзя задать
>>> что в функцию приходит определенный тип — только просто объект. Отсутствие
>>> строгой типизации это возможность прострелить ногу любителям JS.
>> я даже не буду спрашивать, каким боком это относится к ООП.
> ООП это подход. Применение любого подхода определяется удобством для написания программ.
> ООП со строгой типизацией удобно для написания больших программ.
> JS удобно применять когда нужно без изменения кода приложения менять логику. Но
> в гомеопатических дозах.
> Использование JS в браузерах идет только потому, что "так сложилось исторически". Плюс
> JS позволяет чувствовать себя творцом выделывая всякую хрень на ходу...Плюсую.
полностью согласен.
в огороде бузина, на орбите спутник…
> в огороде бузина, на орбите спутник…возможность писать большие сложные проекты на определённом языке является следствием того, что есть возможность эффективного проектирования с учётом особенностей этого языка. а возможность эффективного проектирования очень сильно связана с ключевыми возможностями которые ООП предоставляет, причём реализованными в самом языке из коробки - смотрим сюда "интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции (!!запомните это!!), широко используется кодом программы" и удобно читаемыми в самом тексте кода, а не криво вставленными через грязные хаки.
>"интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции (!!запомните это!!), широко используется кодом программы" и удобно читаемыми в самом тексте кода, а не криво вставленными через грязные хаки.В ООП нет такого понятия как интерфейс, не выдумывайте. Есть понятие Dynamic(Double) dispatch - так вот, его Javascript реализует лучше.
> В ООП нет такого понятия как интерфейс, не выдумывайте. Есть понятие Dynamic(Double)
> dispatch - так вот, его Javascript реализует лучше.http://ru.wikipedia.org/wiki/Интерфейс_(объектно-ориентированное_программирование)
цитата из вики "Интерфе́йс (от лат. inter — «между», и face — «поверхность») — семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом. Интерфейс определяет границу взаимодействия между классами или компонентами, специфицируя определенную абстракцию, которую осуществляет реализующая сторона. В отличие от многих других видов интерфейсов, интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции, широко используется кодом программы."
цитаты из русске копровикии приводят только копрофилы. «ты улавливаешь суть?» (ц)
> цитаты из русске копровикии приводят только копрофилы. «ты улавливаешь суть?»
> (ц)вы же понимаете, что в ваших словах нет ни осмысленных аргументов, ни фактов, а всё что в них есть - это какой-то детсадовский фонтан эмоций. вы бы брали пример с Df232z, он хоть иногда по делу говорит и хоть на что-то ссылается.
> и хоть на что-то ссылается.я давеча дворника видел, он говорит, что всё не так. впрочем, ты вряд ли знаешь, что такое «авторитетный источник», и почему русске копровикия таковым не является. скажу ещё одну вещь: последнее настолько давно и прочно известно, что каждый раз доказывать — это как начинать геометрию с доказательств простейших общеизвестных теорем. можно, конечно, но проще послать человека промеж ног, потому что он не имеет даже минимальной базы для продуктивного диалога.
так вот: иди промеж ног, что ли.
p.s. к Df232z в контексте беседы это отношения не имеет, натурально.
p.p.s. я тебе (или не тебе, а твоему собрату-тоже-альтернативщику) уже говорил пойти и читать работы Алана Кея. но вы предпочли этого не заметить.
Википедия? Причем здесь этот источник развлекательного знания?
В каких классических работах по ООП припоминается необходимость интерфейсов?
> Википедия? Причем здесь этот источник развлекательного знания?
> В каких классических работах по ООП припоминается необходимость интерфейсов?"приёмы обьектно-ориентированного ппроектирования - паттерны проектирования", авторы гамма, хелм, джонсон, влиссидес,страница 28, 12-я строка сверху. читаем "в обьектно-ориентированных системах интерфейсы фундаментальны. об обьектах известно только то, что они сообщают себе через интерфейсы. никакого способа получить информацию об объекте в обход интерфейса не существует." далее "когда объекту посылается запрос, то операция которую он будет выполнять, зависит как от запроса, так и от объекта-адресата. разные объекты, поддерживающие одинаковые интерфейсы, могут выполнять в ответ на такие запросы разные операции. ассоциация запроса с объектом и одной из его операций во время выполнения называется динамическим связыванием." программируя на уровне интерфейсов, я работаю с интерфейсной ссылкой, которая указывает на какой-либо объект, реализующий интерфейс. так вот метод, который вызывается из-под этой ссылки, - это тот метод, который реализован именно в конкретном классе, с объектом которого я работаю из-под своей интерфейсной ссылки. так как ООП немыслимо без динамического связывания, а в жаваскрипте его нет, то делаем вывод, что жаваскрипт не имеет никакого отношения к ООП.
> «приёмы обьектно-ориентированного ппроектирования — паттерны проектирования»(ржот) «практический курс костылестроения для безногих»
(издевательски) Ну давай, бухти мне о значимости других источников энциклопедического знания, о мудрейший. Например, об Энциклопедия Британника. М?
достаточно сравнить руске копровикию и английскую вику, чтобы понять, что руске — копро. впрочем, если ты считаешь, что руске копровика — авторитет, то с тобой вообще не о чем разговаривать.
> в огороде бузина, на орбите спутник…На подводной, ага. С такими специалистами как iZEN на другую выйти сложновато :)
> нормальное ооп — это такое, которое реализует инкапсуляцию, наследование и полиморфизм,
> и позволяет использовать паттерны проектирования, и программировать на уровне интерфейсов,
> а не реализаций.какая редкостная бредятина. кстати, твои любимые цпп и жаба даже этого не позволяют без костылей.
советую вместо книг «костыли для безногих» почитать Алана Кея, который, собственно, является отцом ООП.
вообще, я не сомневался в ответе. выросло, блин, поколение, для которых ООП == «костыльная недореализация как в цэпэпэ». если уж хочется увидеть, как это надо было сделать — посмотри на Objective C. не идеал, но близко к нему, если учесть начальные ограничения.
так вот: в js как раз ООП поддержан намного лучше, чем в жабоцэпэпэ. впрочем, люди с паттернами гойловного черепа вряд ли это поймут.
p.s. а сейчас я вообще страшное скажу; ну, чтобы ты даже не думал заниматься самообразованием: для ООП наследование вообще не обязательно. впрочем, костылеязыки по-другому не умеют.
> p.s. а сейчас я вообще страшное скажу; ну, чтобы ты даже не
> думал заниматься самообразованием: для ООП наследование вообще не обязательно. впрочем,
> костылеязыки по-другому не умеют.Наследование не обязательно, инкапсуляция скорее мешает, чем помогает, а полиморфизм избыточен (по крайней мере в языках с динамической типизацией). Так что же теперь,
typedef struct object;
struct object{
void* members;
int receive_message(object*, char*, void*) = some_global_function;
};
автоматически становится ООП?
> автоматически становится ООП?достаточно кривым по синтаксису — но да. удивительное рядом.
Это странно, но люди тут говорят об ООП и даже не понимают значения инкапсуляции, наследования и полиморфизма. Объясню на пальцах.
Инкапсуляция это, грубо говоря, абстрагирование свойств объекта от "сырых" значений, в которых они могут хранится. Например, у класса Окружность могут быть свойства: радиус, диаметр, длина и площадь. Но все, что нужно хранить (инкапсулировать) классу это радиус, потому что диаметр это удвоенный радиус, длина это диаметр помноженный на пи, а площадь это квадрат радиуса помноженный на пи. Не надо путать инкапсуляцию с ограничением доступа (типа private, protected, public). Так вот встроенного механизма ограничения доступа в JS нет (хотя, можно кривовато реализовать), а инкапсуляция это сам по себе паттерн проектирования, а не фича языка.
Наследование все более-менее понимают. Животное, Собака и т.д. - ОК. Однако, возможности наследования в JS даже несколько больше, чем в том же C++, который обычно приводят как пример "нормального ООП". В отличие от крестов, в JS, например, можно наследовать только часть свойств. Ну а об интроспекции даже говорить нечего!
И наконец, полиморфизм. Это, как и инкапсуляция, скорее паттерн, чем часть языка. Это понятие ведь относится к интерфейсу (в широком смысле), который просто имеет несколько реализаций в виде разных объектов. И этот паттерн в JS реализуется крайне просто - определением свойств с нужными именами у любого объекта или "класса". Не надо путать полиморфизм с интерфейсами (как сущность в языке) или виртуальными классами. То и другое это необходимые для реализации полиморфизма механизмы в языках со статической типизацией.
В широком же смысле интерфейс это описание свойств объекта. И их в JS тоже можно использовать! Однако, проверка интерфейса будет динамической, а не статической, как в Java. Да, в принципе это минус в производительности. Но можно свести количество проверок в рантайме к необходимому минимуму или вовсе делать это только в режиме отладки или тестовых прогонов.
Так что запомните: JS это абсолютно объектно-ориентированный язык. И в чем-то он справляется с этой парадигмой гораздо лучше C++ и Java.
дополню: собственно, для ООП вполне достаточно реализации механизма посылки и обработки сообщений. вон выше анонимус привёл забавный, но в целом верный пример. всё остальное — синтаксический сахар и накручивание абстракций (часто удобное, да).но поскольку в «цэпэпэ-подобных» механизм сообщений отсутствует (его можно только очень криво и геморройно эмулировать, да и то…), люди с паттернами в черепах, воспитаные на макулатуре типа «освой цэпэпэ и о-о-пэ за вечер под пивко», считают, что «ООП — это много страшных слов». и если не видят любимых страшных слов — всё, никакого ООП нет. ламеры, фигле.
> дополню: собственно, для ООП вполне достаточно реализации механизма посылки и обработки
> сообщений.нет, вы не правы. недостаточно. языки, которые не поддерживают полиморфизм, зовутся не объектно-ориентированными, а объектными.
кстати, на алана кея ссылаться как бы поздно. парадигма объектно-ориентированного программирования неплохо развилась с тех пор, как он писал свои труды, и они на данный момент уже устарели. алан кей приложил руку к созданию smalltalk, в котором было много инноваций, он даже был революционен для своего времени. алан кей вложил в него то, что считал реализацией ООП в идеале. но ведь мы ведём речь про жаваскрипт, а ему в плане ООП до smalltalk далеко, как до сингапура пешком.
> нет, вы не правы. недостаточно. языки, которые не поддерживают полиморфизм, зовутся не
> объектно-ориентированными, а объектными.экая бредятина. я тебе секрет открою: механизма посылки сообщений *достаточно* для реализации столь любимого тобой «полиморфизма». равно как и «инкапсуляции», и «наследования».
> кстати, на алана кея ссылаться как бы поздно
капец. а мужики-то и не в курсе.
> жаваскрипт, а ему в плане ООП до smalltalk далеко, как до
> сингапура пешком.лолщито? cудя по всему, JS ты знаешь точно так же, как и ООП. то есть, никак.
> справляется с этой парадигмой гораздо лучше C++ и Java.язык, написанный на коленке для реализации динамичности веб-страниц, не может справляться с парадигмой ООП лучше, нежели язык, который специально для ООП и создавался - создавался профессионалами , и не абы как , а с учётом многолетнего опыта и реализации ООП в других языках (это про java).
то, что недостатки жаваскрипта видны матёрым разработчикам, подтверждается предложением гугла заменить его на язык Dart где есть - о, чудо ! и классы, и интерфейсы !!!!
а теперь смотрим страничку www.dartlang.org и видим примерчики на dart-е, где просматривается вполне себе нормальное ООП в общепринятом смысле, а не тот костыль вбитый программистам в задницу, который зовётся "ООП в жаваскрипте"
> то, что недостатки жаваскрипта видны матёрым разработчикам, подтверждается предложением
> гугла заменить его на язык Dart где есть - о, чудо
> ! и классы, и интерфейсы !!!!то, что недостатки жава видны матёрым разработчикам, подтверждается предложением
гугла заменить его на язык Scala/jRuby/jPython/Clojure где нет - о, чудо и классов, и интерфейсов !
> язык, написанный на коленке для реализации динамичности веб-страниц, не может справляться с парадигмой ООП лучше, нежели язык, который специально для ООП и создавалсяЭто с чего бы вдруг? Где аргументация?
Я ничего не имею против Java, но если бы "матерый разработчик" хорошо понимал принципы ООП и на собственном опыте почувствовал Java и JS, то не стал бы делать таких громких заявлений.
оно думать не умеет, только жрать marketing hype. «жаба создавалась для ООП», ололо. ну, и историю появления JS (вместе с источниками вдохновления Брендана) оно тоже не знает, натурально. а то действительно бы поняло, что одним из больших источников для JS был язык, который *действительно* создавался для ООП (в нём, собственно, кроме объектов больше ничего и не было). а жаба — тупая калька с цпп, заточеная на лёгкую взаимозаменяемость code monkeys.p.s. кстати, в JS практически так же: всё есть объект. в отличие от жабы, где число, например, объектом не является. правда, в JS конструкция типа (42).wow = "hey!" бессмысленна в силу того, что каждое новое 42 — другой объект. но допустима, легальна и работает, гыгы.
>В широком же смысле интерфейс это описание свойств объекта. И их в JS тоже можно >использовать!имхо, так мы в рассуждениях дойдём до того, что и перл будет признан реализующим ООП, так как в нём есть модуль Moose, а инкапсуляцию можно через хеш-таблицы реализовать. а ведь правда в том, что эта пародия на ООП - всего лишь хак, реализованный через задницу для имитации нормального ООП. и в жаваскрипте то же самое, тоже хак. если нет встроенной реализации ООП, с классами, интерфейсами и конструкторами, а всё реализовано через хаки, то какой смысл говорить об ООП вообще ?
Интерфейсы не имеет никакого отношения к ООП.
Конструкторы не имеют никакого отношения к ООП.
> Интерфейсы не имеет никакого отношения к ООП.
> Конструкторы не имеют никакого отношения к ООП.я скажу так - ООП нужно для удобства проектирования, сопровождения и читаемости, ООП без паттернов не имеет смысла, а для реализации паттернов нужны и конструкторы, и интерфейсы. а кто скажет, что конструкторы и интерфейсы не нужны, сразу ясно что речь о вечно вчерашних которые по сию пору не своили ни UML, ни паттерны.
надо признать, что обычно тред про ООП вырождается в лютый срач, и вывод один, использование ООП - дело личного развития, вкуса и предпочтений каждого.
> надо признать, что обычно тред про ООП вырождается в лютый срачну, в нашем случае это превратилось в избиение младенцев. ладно, валять вас в грязи было весело, но уже поднадоело: на каждого шарикова сил не хватит.
Мне одному кажется что за всеми этими заумными разговорами про паттерны, сущность и цели ООП, и пр. теоретическими бреднями ничего не стоит? Программирование ведётся на конкретном языке, и если вы не его разработчик, то у вас (грубо) есть инструмент и нужно им пользоваться. А спорить является ли "наследование" или что там у вас паттерном, частью ООП, или частью конкретного языка по-моему бред.- Повесим без суда!
- Нет, повесим по приговору!
да, ванюша, тебе одному. это потому, что у тебя знаний не хватает понимать «теоретические бредни».
С тех пор как я закончил ВУЗ, это уже пятая (?) терминология: блок-схемы, UML, визуальная разработка, ООП, теперь паттерны. Их пихают везде и без дела, идут бесконечные разговоры на тему как правильно рисовать в блок-схемах блок вывода: с кружочком в углу или со скошенным уголком, мало влияющими на разработку и написание ПО. Чисто попонтоваться самыми новыми знаниями? Я это уже перерос.
«в песне ты не понял, увы ни…чего» (ц)ванюша, ты точно вуз закончил? по-моему, тебя должны были выпереть за табуретистость.
Потому что слова "Фатальный недостаток - это написано не нами" нужно вытатуировать на груди КАЖДОГО кодера мира. :D:D:D:D:D
Зачем.. есть же Qt4.
Хоть и спорный аргумент, но всё лучше нового велосипеда.
ИМО.
Хотя не я не прав.. Работу приложений через итернеты планируется обеспечить в Qt5, если не изменяет память.
> Зачем.. есть же Qt4.
> Хоть и спорный аргумент, но всё лучше нового велосипеда.
> ИМО.как под ios на кутях писать ?
> как под ios на кутях писать ?под йос писать вообще не надо.
> под йос писать вообще не надо.Там вообще в комплекте к тулзам надо ведро вазелина выдавать. Так, глядя на условия "мы делаем вам великое одолжение что вообще разрешаем на нас поработать".
> на условия "мы делаем вам великое одолжение что вообще разрешаем на
> нас поработать".ну дык это одна из концепций маркетинга. типа «почувствуй себя Избранным!» на хомках работает.
>> на условия "мы делаем вам великое одолжение что вообще разрешаем на
>> нас поработать".
> ну дык это одна из концепций маркетинга. типа «почувствуй себя Избранным!» на
> хомках работает.Если цель - получение прибыли - достигается, то какая разница, каким образом. В рамках закона.
И да, не надо мне трындеть про наркобизнес и торговлю оружием. Смысл фразы "цель оправдывает средства", равно как и "этика и психология" мне известен.
>> на условия "мы делаем вам великое одолжение что вообще разрешаем на
>> нас поработать".
> ну дык это одна из концепций маркетинга. типа «почувствуй себя Избранным!» на
> хомках работает.Цимус в том, что на илитарном [красноглазии] ни копья не заработаешь. А, вишь ты, движущей силой этого мира является секс и бабло. Посему определяющей массой вы никогда не будете - ввиду отутствия этой самой массы. Сколько волка не корми - а у слона все равно толще.
> движущей силой этого мира является секс и бабло(пожимает плечами) хреновый у вас, людей, мир. то-то вы никак до уровня разумной расы подняться не можете.
Причины иные, вывод тот же.Что до причин, то всё создаётся за деньги. И если хороший программист стоит 300 т.р./месяц - значит или плати, или довольствуйся хорошим студентом, готовым работать за идею.
Поэтому никогда не было и не будет чтобы одиночки или энтузиасты создали что-то инновационное. Они могут копировать и улучшать - 100 тысяч обезьян, матерящихся по форумам на тонны ошибок, могут помочь бесплатно отловить все ошибки и отладить Линукс, но не более.
> Поэтому никогда не было и не будет чтобы одиночки или энтузиасты создали
> что-то инновационное.ванюша, ты опять плюхнулся в лужу. я тебе только одно слово скажу: unix.
Unix создан корпорацией IBM в период её рассцвета. Некий студент Линус Торвальдс слизал его, дав ему имя ЛинусОС, читается "Линукс". Халявная ОСька попала в тему на волне развития интернета. Не потому что лучшая, а потому что халявная.
> Unix создан корпорацией IBM в период её рассцветаотжигай, ванюша, отжигай! делаешь моё утро.
> Unix создан корпорацией IBMа такие названия как Bell Labs и AT&T вам совсем ни о чём не говорят ? странно.
>Халявная ОСька
>Не потому что лучшая, а потому что халявная.может вы ещё скажете что линукс , стоящий на львиной доле роутеров, суперкомпьютеров, серверов , планшетов и смартфонов (это про андроид , где ядро линукса) - глючный и плохой ????
> стоящий на львиной доле роутеровОбезьянки отладили. Даже я подолбался, из 4 вариантов подключения к провайдеру работал лишь один, и тот не полностью. Обновил 3 прошивки пока 1 вариант заработал, хотя и не идеально, а 3 других тоже вроде как. Больше девайс не поддерживается, 70 Мб исходников и ещё какой-то лабуды можно закачать с сайта производителя. Линукс, мать его....
>Обезьянки отладили.я всякое в жизни слыхал, но чтоб intel, oracle, ibm, cisco и red hat звали обезьянками - это уже что-то запредельное ...
http://www.qt-iphone.com/Introduction.html
Не взлетит.
> над созданием универсального инструментария для разработки переносимых мобильных приложений,
> которые смогут работать на всех популярных мобильных платформах.Популярных систем всего пять.
iOS, Android, Symbian, Blackberry, windophone.Варианты:
1. Сделать пять софтин.
2. Сделать одну портабельную софтину для этих пяти систем.
3. Разделить софтину на бекенд (либу) и фронтенд (морду).
Сделать один портабельный бекенд.
И пять фронтендов.4. Махать шапкой, бить пяткой в грудь, рисовать крест на пузе.
Обещать все переписать на html5+js+css.
Вещать о кардинальной новой системе кочующего выполнения кода - с сервера на клиент и обратно.
Начать неторопливо делать.5. Пойти по пути BolgenOS: сделать пять простых софтин - одно окно с элементом "веб браузер" без кнопок.
В окне открывается yahoo.com с сылками на динамические страницы.
Представить это, как "веб-приложения".Я бы предложил пункты с 1 по 3, но, чувствую, будет 4 вариант, с уклоном в 5.
> 2. Сделать одну портабельную софтину для этих пяти систем.
> 3. Разделить софтину на бекенд (либу) и фронтенд (морду).
> Сделать один портабельный бекенд.
> И пять фронтендов.Портабельно не получиться поскольку языки совсем разные. И возможности систем тоже сильно разнятся - в Андроид нужно пользоваться сервисами и интентами, в iOS чем то своим. лицензия на iOS запрещает применение интерпретаторов и виртуальных машин.
Единственный вариант это разработать свой язык, который компилируется в разные приложения под разные ОС. Но вылезают два косяка либо это очень ограниченный язык (API как пересечение всех пяти API, что совсем мало) либо в разных местах приходтся подтыкать различные костыли для поддержки той или иной платформы.
PS у нас на одном проекте сделали именно последнее. но тот же самый звук пришлось подвинчивать сбоку ибо через основной код звук "разъезжался"
Яху обнаружил в чужих платформах фатальный недостаток: они не управляют разработчиками и не могут им диктовать что делать и куда идти.
Можно же Manhattan будет на своих облаках хостить. Так что.
> Можно же Manhattan будет на своих облаках хостить. Так что.Мне похрену. Все эти облака вообще всего лишь перегретый buzzword от маркетологов, которые из кожи вон лезут. У них есть своя ниша, в основном как у удобного средства управления виртуализацией и масштабированием. Но далеко не в том объеме в котором это пытаются всучить. Грубо говоря, вы пришли в магаз за лопатой, а вам вместо этого пытаются продать экскаватор, автозаправочную станцию к нему, завод по переработке нефти, мастерскую по обслуживанию, сталелитейный заводик, пару шахт с рудой и нефтяное месторождение. Внеся соответствующие коррективы в цену "лопатки" разумеется. Получается безумно круто, но единственная проблема состоит в том что Васе, который хотел всего-то грядку метр на метр вскопать столько счастья как-то и не нужно...
> Яху обнаружил в чужих платформах фатальный недостаток: они не управляют разработчиками
> и не могут им диктовать что делать и куда идти.Его обнаруживает абсолютно каждый, считающий себя разработчиком. Если бы было иначе - мы бы не имели 1000 с лих.ем сборок пингвина. Казалось бы, что такого - выбрать в найденном то, что для тебя съедобно. Так нет же - фатальный недостаток. Оно написано не нами и точка.
Ты слышал о таком понятии как эволюция?
Если бы создатели не переизобретали одно и тоже с незначительными отличиями,
то ваш компьютер сейчас вовсю бы стучал шестернями.
весьма спорное утверждение. вообще-то, мелкодополнения к эволюции имеют мало отношения, да и делать их лучше на уже имеющейся базе, а не начинать с копания своей шахты.
> весьма спорное утверждение. вообще-то, мелкодополнения к эволюции имеют мало отношения,
> да и делать их лучше на уже имеющейся базе, а не
> начинать с копания своей шахты.Твои б слова - да Столлману в уши :D:D:D
> Твои б слова — да Столлману в уши :D:D:Dвообще-то RMS никогда не отличался страстью к велосипедостроению. и как только (если) появляется что-то, что удовлетворяет требованиям FSF и справляется с задачей лучше, чем инструмент FSF, то доморощеный велосипед «ставится на холд» и используется другое решение.
Проект UDI (универсальные единые драйвера для всех ОС) в т.ч. Столман назвал ненужным для свободного мира. Без поддержки проект, предложенный что бывает нечасто разработчиками аппаратуры, быстро потух.
не говоря уже о том, что причины совсем другие — ты считаешь, что RMS у нас такой же диктатор, как у вас балмер? ты очень, очень ошибаешься.
> не говоря уже о том, что причины совсем другиеОзвучь эти самые другие причины.
И расскажи кто такой Балмер. Гуглить просто лень.
толсто, ванюша, толсто. ничего, самообразование — полезная штука.неужели, ванюша, ты думаешь, что с тобой кто-то тут будет серьёзно дискутировать? ты же феерический неуч: буквально во всём, о чём ты пытаешься говорить, ты эпически лажаешь.
> ты эпически лажаешь.Поэтому его экологическая ниша - сухой корм для троллей :)
> И расскажи кто такой Балмер. Гуглить просто лень.Хм, на месте MS я б тебя лишил плюшек за незнание корпорастивной иерархии... надо ж своего главного шефа не знать :)
> Проект UDI (универсальные единые драйвера для всех ОС) в т.ч. Столман назвал
> ненужным для свободного мира.А зачем мне в открытой системе сдались глючные проприерастические блобики которые майнтайнеры моей системы и разработчики ядра не могут чинить? Извини, но там где винда тупо теряет накопитель до ребута по причине сбоя линка, линь огревает сбойнувший линк ресетом, повторяет обломившуюся операцию и проблем вообще возникает ровно ноль.
Между отсутствием драйвера и наличием закрытого драйвера, я выберу наличие. А вы?
Я предпочитаю выбирать железо для, для которого есть открытый драйвер. Причина проста: программные системы живут дольше железа.
>> начинать с копания своей шахты.
> Твои б слова - да Столлману в уши :D:D:DА у него не было возможности взять за базу другой открытый компилер, за отсутствием такового. А проприетарные - на очень геморных и банальных условиях предоставляются обычно.