Здравствуйте, Mamut, Вы писали:
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Потому что язык — это инструмент. Если инструмент неудобен — нахрен он вообще нужен?
Причём неудобен по любым причинам. Слишком сложен в освоении входит в список. Слишком отличается от првычного — тоже.
Да, заявление в стиле Кэпа, но ведь и вброс так себе...
Здравствуйте, Mamut, Вы писали:
M>Я надеялся, что ты объсянишь, что такое «неудобный», «непривычный» и т.п. Но, видимо, н судьба.
Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей типа "добавить еще две строчки текста вон к тому div'у" или "сделать динамическую менюшку с товарами".
Теперь представь: у тебя есть нормальный классический автомобиль, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет из себя двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления. Правда те, кто ездит на нем ежедневно, утверждают, что после двух-трех тысяч километров практики на нем можно научиться перепрыгивать лужи и переезжать через реки по бобровым плотинам — но тебе-то оно нахрена, если ты всего-то хотел выехать с семьей на шашлыки к соседнему озеру?
Здравствуйте, Mamut, Вы писали:
M>На что возник у меня резонный вопрос: M> M>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
А не приходило в голову, что неудобно молотком(JS) шурупы закручивать? Поэтому при переходе с отверстки(C++) на шуроповерт(Java), большинство с удовольствием изучает новый инструмент — и хотя конечно иногда приходится возвращаться к отвертке, все-таки переход оправдан. Сам по себе молоток(JS) ничем не плох и просто замечательно забивает гвозди, но подавляющее большинство программистов в индустрии занимается закручиванием шурупов (разработкой тяжелых корпоративных приложений, которые надо долго поддерживать). И вот когда дают молоток (и говорят, что это единственный и самый правильный инcтрумент, другого у нас в браузере нету), приходится либо эти шурупы забивать, либо придумывать, как эмулировать с помощью молотка отвертку.
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Странно другое, мало кто пытается закручивать шурупы например пилой(Prolog) или рубанком(Smaltalk) или пилочкой для ноктей(Fort). А вот молоток нам все время пытаются впихнуть как унивесальный инструмент.
M>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами. M>
M>Ась?
Здравствуйте, Mamut, Вы писали:
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
M>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами. M>[/q]
Я почти уверен, что причин две:
1. Синтаксис
2. Название.
Все С-подобные языки вызывают ломку при переходе на них. Про Java основные бои отгремели 10 лет назад; с .Net до сих пор происходят — приходят опытные С-программисты и начинается отжиг, потому что семантика не та, к которой привыкли.
Если бы язык с самого начала назывался ECMAScript, то было бы меньше ожиданий найти там полную ява-машину, а так же классы, интерфейсы, и прочие отсутствующие by design вещи. Подсознательно новички это воспринимают так "взяли Яву, убрали полезные вещи, добавили какую-то хрень".
Это всё равно как выпустить "портативный телевизор", не оборудованный экраном, а потом годами объяснять "это совсем другой прибор, у него общего с телевизором — только кнопка включения"
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Mamut, Вы писали:
M>В комментариях пошло стандартное нытье про JS: M>
M>Мы с пеленок мыслим классами, нам сложно принять прототипы. Почти все библиотеки так или иначе эмулируют классы. К чему бы это?
M>Парадигму Класс принять в разы проще(она есть во всех языках), чем Делегирующий прототип.
M>Лично мне бы хотелось использовать унифицированный подход к классовому ООП
M>На что возник у меня резонный вопрос: M>
M>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
M>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
M>Ась?
Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование, пм и тд слишком сложно для общей массы. Массам сложно, они ноют. Ноют массы — значит им сложно. Все просто. Не надо выдумывать.
Вариантов три:
1 Найти волшебную палочку и поднять уровень образования.
2 Найти волшебную палочку и сделать JS пригодным для масс.
3 Забить на волшебную палочку.
Здравствуйте, Mamut, Вы писали:
M>Опять. В одном предложении «по чуть-чуть» и «тщательно изучить». Вы уже определитесь, что вы делаете — по чуть чуть или все жа тщательно. Если по чуть-чуть, то ничего особо странного в JS нет.
Это ты определись — на что тебе жалуются. На то, что в JS "неправильные классы" или на то, что "в нем вааще-вааще ничего невозможно сделать".
Если говорить вкратце, то проблема в том, что простые задачи делаются легко и, главное, почти как в основном языке, а когда вдруг хочется сделать что-то чуть более сложное, то вдруг оказывается, что все совсем иначе. Но нет необходимости разбираться в этом — поскольку возникающую задачу обычно можно решить и более тупым методом (типа копипаста), что и делают. При этом считая, что "язык какой-то странный и неправильный". То есть задачи достаточны, чтобы осознать, что язык какой-то не такой, но недостаточны, чтобы возникла реальная необходимость его изучить и рационально использовать.
Я обычно курирую приходящую молодежь, потому ситуация мне вполне знакома. Человеку надо сделать простую валидацию, например. Проверить значение в одном поле — он моментально пишет функцию, которая находит текст, проверяет его значение, ну все номрально в общем. Заодно еще раз убеждается, Что JS — это очень похоже на шарп, только в браузере.
Потом у него возникает необходимость чуть более сложной проверки, например проверка суммы чисел в группе полей, причем в нескольких местах сайта, и посмотрев на задачу он видит два варианта:
1. накопипастить несколько похожих методов с мелкими различиями
2. сделать небольшой класс, инкапсулирующий часть данных, и несколько мелких наследников, которые покроют все эти случаи
Человек по молодости и из-за ограниченного кругозора уверен, что JS — это почти как шарп. Он обещает начальнику, что тут фигня вопрос, сделает к вечеру. Начинает делать, и видит что классов нет. Начинает разбирать, и видит какие-то прототипы, незнакомые ему. Но дальше разбирать некогда — уже обещал ведь, что к вечеру будет все. Откатывается на вариант 1, по-быстрому копипастит клоны методов и материт js, "что все в нем неправильно".
И тут бы ему изучить js тщательно, ан нет — задача решена и так, все работает, а следующее рандеву с js как-то пока не предвитися (оно будет, спустя какое-то время, но не сейчас).
В результате у человека остается:
1. умение работать с js на базовом уровне, достаточном для решения всех его практических задач (хотя и зачастую весьма неудобным образом). Что убирает необходимость в его дальнейшем изучении.
2. впечатление, что язык ограничен именно этим базовым уровнем, а для более сложных вещей, используется какая-то черная магия и непонятные костыли.
Здравствуйте, yoriсk.kiev.ua, Вы писали:
M>>Читаю. Итак, дано: фуллтайм программисты на JS не ноют (или ноют совсем по другим причинам), так в чем проблема-то? В индусах? YKU>Таки не читаешь. Проблема в том, что 99% вылазят из уютненького мирка C#/java/чё-то еще в волшебній мир javascript чиста на 5 минут. Именно что-бы отвалидировать телефон. Ну или там в грид чё-то засунуть, но это в пиковом случае(именно тут и берутся over 90K программистов javascript и "самый популярный в мире"). И тут внезапно выясняется, что то, что обычно делается негляпяпроходязаднейпяткой надо делать через ж. Т.е. оно может и не совсем, если всё через неё делать — может оно ничего, некоторым даже нравится. Но привычно(то самое сложное слово, да) — через другое место и за две минуты.
Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием. А в последние пару лет, в связи с появлением различных фреймворков, даже не на 5 минут, а поболее. Не подходит объяснение.
F>P.S. F>Долго писал, забыл добавить.
F>Лично мне, благодаря некоторому общему опыту, прототипы и классы в js не вызывают проблем. Но я бы тоже предпочел, чтобы язык в браузере был ближе к языку на сервере, поскольку переключение парадигмы — не очень-то удобно. Плюс необходимость в более глубоких концепциях js возникает настолько редко, что детали забываются, и когда таки возникает необходимость что-то такое сделать, зачастую приходится лезть за справочником...
Ну блин, аналогично для любого языка программирования.
Был бы питон, ныли бы про отступы, self в декларациях методов и крявый синтаксис лямбд. ПОтому что это все отличается от Java/C#/C++/бог знает, что
Был бы руби, ныли бы про блоки, миксины, unless'ы, непонятную конструкцию catch .. do и т.п.
Был бы C#, программисты Java/C++ ныли бы про делегаты, лямбды и бог знает, что еще
Была бы Java, C# ныл бы про отсутсвие делегатов, ляьмд, C++ ныл бы про отсутсвие галонов и бог знает чего еще
И ты ды и ты пы.
Но мне упорно пытаются рассказать сказки, что это язык виноват в том, что программисты не хотят изучать инструмент, с которым они работают, и что любой другой язык был бы лучше. Агага. Вот прямощаз
Здравствуйте, yoriсk.kiev.ua, Вы писали:
YKU>Здравствуйте, Mamut, Вы писали:
M>>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
YKU>Потому что язык — это инструмент. Если инструмент неудобен — нахрен он вообще нужен? YKU>Причём неудобен по любым причинам. Слишком сложен в освоении входит в список. Слишком отличается от првычного — тоже.
Хех. Что значит «привычный»? Там в комментариях есть вообще гениальное. Появился Хаскеллист (!) и возник следующий разговор:
siasia
Ну тогда вы просто обязательно должны выучить Haskell до того же уровня, что знаю его я.
А иначе, как там вы сказали… Ах да, вон из профессии.
Если я пишу 3 строчки кода на JavaScript'е в месяц, я всё равно должен вникать в это жуткое прототипное Perl-наследование?
dmitriid
> Ну тогда вы просто обязательно должны выучить Haskell до того же уровня, что знаю его я.
С какого перепугу? Я с ним не работаю. Если я с ним буду работать, я не буду ныть по поводу отсутсвия в нем классов, например.
> я всё равно должен вникать в это жуткое прототипное Perl-наследование
Если вы работаете с языком, от вас ожидается, что вы понимаете этот язык, не? И да, наследование там даже близко не из Perl'а.
siasia
Вы не ответили на мой вопрос
dmitriid
Я ответил на оба вопроса — и про Haskell и про наследование.
Если вам непонятно, то отвечу понятнее: да, вы должны понимать, хотя бы в общих чертах, что такое прототипное ООП. Потому что вы будете ожидать понимая хотя бы базовых принципов Haskell'а от человека, который пишет три строчки в месяц на Haskell'е.
siasia
В общих чертах я понимаю, что такое прототипное наследование, но оно мне не нравиться т.к. я не понимаю какие приемущества оно мне даёт в сравнении с ванильным наследованием.
dmitriid
Я не понимаю, что такое монады, и какие преимущества они мне дают по сравнению с любыми другими ванильными средствами.
Повторю
«
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы…
И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
»
siasia
Объясните мне, чем прототипное наследование лучше обычного и я с удовольствием расскажу вам про назначение монад.
dmitriid
> Объясните мне, чем прототипное наследование лучше обычного
Что значит «обычное»?
Оно не лучше, не хуже. Он просто другое. В любом виде в любой реализации у любого ООП есть свои преимущества и свои недостатки.
Про назначение монад мне рассказывать не надо, потому что я могу точно так же ответить: «мне надо три строчки на Хаскеле написать, мне что, андо разбираться в сугубо матемотической хрени под названием монады?»
То есть, иными словами: почему вы считаете, что для работы с Хаскелем вам нао учить Хаскеллевские подходы и используемые парадигмы, а для работы с JS — «мне это непонятно, дайте мне то, что удобно»?
В последнем абзаце — ключевое. То есть Хаскель с его далеко не сразу понятными монадами учить можно и надо, а в JS — не, нифига, дайте, чтобы было понятно
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, мыщъх, Вы писали:
М>>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт! 0K>А сможете объяснить преимущество ООП кратко? Причем так, чтобы это было понятно ненавистникам ООП.
объяснить можно на примерах. оракл показывает как в лучших традициях ооп реализовать простой сервер и knock-knock протокол. выглядит сексуально. вот тут класс экземляра сервера, вот тут класс протокола, а вот тут клиент... и все бы ничего, да вот вздумалось мне слегка потренироваться в жабе и незначительно (подчеркиваю _незначительно_) модифицировать протокол.
меняю реализаю класса протокола и тут же синхронно правлю сервера и клиента. и так каждый раз когда трогаю протокол. плюнул и воткул класс протокола проямо в сервер. клиента переписал на свой лад. в резльутате дальшейшая доработка кода сильно упростилась.
будем считать, что у нас протокол построен по следующей схеме.
1A: клиент -запрос-> сервер
1B: сервер -ответ-> клиент
1, 2 и 3 контенкстно независимы. т.е. в очень грубом приближении все выглядит так response == foo(request). совершенно очевидно, что при таком раскладе логика проткола всецело реализуются внутри класса "протокол", а остальные классы лишь обеспечивают прозрачный прием и доставку данных структуры которых они не понимают.
вопрос -- на фига оракл в наглядно-агитационных пособиях написать какую-то чухню? вот за это я и не люблю этот ваш ооп, ибо очень редко удается увидеть программу, где ооп не препятствовал бы модифиации, а, наоборот, помогал.
0K>Принято считать, что если кратко объяснить не можете -- то и сами до конца не понимаете. Я лет 8 назад заспорил с ненавистником ООП, но ничего не смог ему доказать о полезности классов. Теперь, оглядываясь назад, понимаю, что и сам не все понимал.
классы это ИМХО очень неудачный термин. объекты лучше. объект это некая сущность. типа массив, список... я уже писал, что раньше считал нормальным создать класс "сортировка" и сложить под одну крышу все методы сортировки которые только знаю. теперь понимаю, что это ошибка, ибо сущности "сортировка" не существует. и все возможные сортировки должны быть методами объектов, образующих некие сущности (массив, список...)
если посмотреть на классический си, то функции типа поиска принимают в качестве аргументов размер элемента и функцию сравнения. при этом накладывается ограничение, что все элементы лежат в непрерываном массиве, что не всегда так (они могут быть и в файле на диске, а файл 4 ТБ). поэтому, нужно еще добавить и функцию взятия элемнтов по индексу или взять_следующий_элемент, если индексов нет.
как легко видеть, тут мы близко подходим к эмуляции ооп продедурными методами. в ооп эта же задача решается проще. у объекта есть метод взятия элементов (по индексу и/или следующего) и есть метод сравнения. и как оно работает -- никому знать не надо. может это массив, а может это геораспределенный кластер. главное, что нужные методы есть. и они юзаются.
получается очень интересная штука. если у объекта нет нативного метода взятия элемента по индексу, то часть алгосов поиска и сортировки работать не будет (или потребует промежуточной индексации всех объектов) и потому можно автоматически выбирать алгос сортировки для данного объекта исходя из его публичных методов. причем, функции сортировки и имплементация объетов пишутся раздельно.
можно ли это реализовать на чистом си? да, конечно. передавать функции сортировки/поиска указатели на функции взятия элемента и сравнения. чем это хуже, чем в ООП? ответ -- слишком много аргументов получается. вместо того, чтобы писать x.sort() мы пишем sort(x, x_type_get_el_by_idx, x_type_cmp). это не только некрасиво, но и компилятору очень сложно заинлайнить такие функции (и их никто не инлайнит), а в ооп их инлайнит практически любой компилер. ну или вызывает прямой адресацией, а не косвенной (что быстрее).
противникам ооп можно посоветовать написать в не ооп стиле функцию двочного поиска, работающую с произвольными типами (в том числе и пользовательскими), а затем переписать это в ооп стиле. и сравнить размер кода и скорость. в ооп оба показателя лучше в разы.
впрочем, тут есть хитрый хак. на чистом си можно сделать proxy-objector, пихающий все типы в структуры. в результате получится ооп, сделанный на коленках. ну то есть объявляем структуру _OBJECT_ и кладем туда указатели на функции взятия элемента и сравнения, а заодно и указатель на функцию сортировки. получается x.sort() на чистом си. точнее, на чистом си-компиляторе. но по сути это ооп.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Mamut, Вы писали:
M>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо?
Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков?
M>А язык такой, потому что его так спроектировали
Глубокая мысль.
M>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось.
Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу.
M> Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не?
Типа миллион леммингов не могут ошибаться?
Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин.
Здравствуйте, anonymous, Вы писали:
C>>Типов не хватает в JS, типов. А программирование с классами — это самый простой способ типизации кода. A>Каких типов не хватает в JavaScript?
Статической типизации. Реально не хватает, особенно в больших приложениях.
Я уже рассказывал про аналогичную ошибку, которую мы сделали в Java. Но там мембер был руками помечен как static, т.е. шансы допустить такую ошибку — на пару десятичных порядков ниже, чем пропустить var.
Поймать пропущенный var тестами — крайне сложно.
При этом мотивация так делать мне совершенно непонятна. Неужели доступ к global scope нужен так часто, что его имеет смысл делать по дефолту?
Выглядит как ошибка дизайна языка.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, anonymous, Вы писали:
A>Но ты тоже нас аргументами не балуешь, всё про машинки рассказываешь.
Аргументов в топике выше крыши, и далеко не только от меня. Имеющий глаза — да увидит. С любителями же докапываться до аналогий разговаривать, собственно, не о чем. По крайней мере до тех пор, пока они не смогут внятно и аргументированно обрисовать суть своих к этой аналогии претензий.
Здравствуйте, Mamut, Вы писали:
M>Читаю. Итак, дано: фуллтайм программисты на JS не ноют (или ноют совсем по другим причинам), так в чем проблема-то? В индусах?
Таки не читаешь. Проблема в том, что 99% вылазят из уютненького мирка C#/java/чё-то еще в волшебній мир javascript чиста на 5 минут. Именно что-бы отвалидировать телефон. Ну или там в грид чё-то засунуть, но это в пиковом случае(именно тут и берутся over 90K программистов javascript и "самый популярный в мире"). И тут внезапно выясняется, что то, что обычно делается негляпяпроходязаднейпяткой надо делать через ж. Т.е. оно может и не совсем, если всё через неё делать — может оно ничего, некоторым даже нравится. Но привычно(то самое сложное слово, да) — через другое место и за две минуты.
M>>>Почему ты считаешь, что надо в обязхательном порядке менять язык?
YKU>>Почему в обязательном? Вариантов два: поменять язык или поменять программистов. Я понимаю, что это удивительно и даже пугающе необьяснимо, но программисты за первый вариант. Можешь удивляться сколько хочешь, считать всех "дурацкими паяцами", но такова обьективаня реальность, данная нам в чём-то там.
M>Повторю: M>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п.
Повторю. Ничего от них не ожидается, это твои домыслы. А мои домыслы таковы: Почему-то, когда люди переходят на другой язык, ожидается, что на этом языке они будут делать то-же самое, но проще/быстрее/производительнее(только давай без гоняния к словарю, что означают эти слова, а?). Брейнфак тоже несёт в себе новый неповторимый вкус, но чё-то как-то оно не того. И масса академиков тоже. Но брейнфак — это лирика, а яваскрипт — ж0сткая практика. И тогда выясняется, что парадигма — это хорошо, но оно же чё-то нихрена не проще, а еще более через упомянутое место. И все начинают ныть — зачем всё это, верните деньги, сволочи!
Неужели я говорю что-то неочевидное?
А рассуждения энтузиастов про то, что в гамаке и на лыжах — это круто, главное не бояться трудностей и надо только выучить разные подходы только улыбают, уж извини.
Вроде достаточно внятно и даже без наследования... Ты вообще не с того конца идёшь. Так ты корову не продашь, это не позитивистский подход. Ну ок, прекрасный язык яваскрипт, завтра куплю книгу и постигну новые парадигмы. С тебя ответ: зачем? Как только начнешь ныть про "разные подходы к типам и типизации, разные подходы к наследованию", перечитываешь абзац выше.
Здравствуйте, yoriсk.kiev.ua, Вы писали:
A>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием. YKU>Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их.
Такой сайт можно создать про любой язык, и скидывать туда перлы от людей, только начинающих изучать программирование.
A>>А в последние пару лет, в связи с появлением различных фреймворков, даже не на 5 минут, а поболее. Не подходит объяснение. YKU>Подходит. Если читать тред сначала — то подходит. Именно с этого всё и началось: на вопрос, зачем язык, где костыль на костыле и без очередного фреймфорка шагу не ступишь набижали товарищи самураи и популярно стали обьяснять, что "различных фреймворков" — это путь трусов-индусов и надо подстраивться, а лучше парадигм могут быть парадигмы, на которых еще не бывал.
Интересно, и много ты пишешь на других языках без использования фреймворков и библиотек? Может быть работаешь с DOM на чистом Си или что там у тебя любимое? Про костыль на костыле хотелось бы больше узнать.
Здравствуйте, March_rabbit, Вы писали:
П>>>Твой вопрос, насколько мне помнится, был не про них, а про JS. Конкретно — про то, почему люди не любят его "вкусности" и продолжают думать в традиционном стиле. M>>Так никто и не ответил, почему не любят и продолжают думать, кроме детсадовского «неудобно». M_>вот покупал я на днях шуруповерт. Присматривался, присматривался к одному. Ну всем хорош. Только вот мелочь — ручка для моей руки великовата. Ну не лежит и все. Ты скажешь — блажь и детсадовство? А я вот так не думаю. Купил другой. Не уверен, что так же хорош, но в руку сел как влитой.
Опять аналогии. Давай продолжим её: «Присматривался, присматривался к JavaScript. Ну всем хорош. Только вот мелочь — реализация ООП для моего мозга великовата.» Может стоит уже прекратить и детский сад с аналогиями и перейти к конкретике?
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, Mamut, Вы писали:
П>>>Хотя бы потому, что без доказательств его необходимости в js твои оппоненты имеют право относиться к прототипному ООП как к ненужной фенечке и блажи в голове создателей языка.
M>>Вообще-то, если ты заявляешь выделенное, то твоя задача доказать эту точку зрения, а не наоборот
П>Здесь как раз все просто — любая необычная фича
Давай объяснение «необычности»
Функции первого порядка — это необычная фича? ВНЕЗАПНО да — для подавляющего большинства мейнстримных языков. Необходимость отсутсвует, так как можно обойтись и без них.
Какой-нить LINQ — это необычная фича? ВНЕЗАПНО да — необходимость отсутсвует...
ООП в стиле С++ — это необычная фича? ВНЕЗАПНО да (в начале) — в частности потому что это совсем не то ООП, какое должно быть. И т.п.
П>не нужна по умолчанию, если ее необходимость не доказана конкретными аргументами. А необходимость прототипов в js ты доказать так пока и не смог.
Почему я должен это доказывать? Это, вообще-то, твоя задача доказать, что обязательно должен быть ООП в стиле С++
Ссылку найду, просто, видимо, я отвечал на это на Хабре,а не здесь
П>>>Тебе еще раз перепечатать абзацы про вспомогательный язык? Или объяснить, на сколько растянется период вхождения в новые синтаксис и логику в режиме использования "месяц не трогаем — полдня кодим"? M>>Опиши ситуацию,в которой так происходит. Потому что я такое себе представить не могу.
П>Да запросто — та же домашняя страничка, например.
И?
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
И только с JS ситуация прямо противоположная.
M>>И да, если "месяц не трогаем — полдня кодим" будет относиться, например, к Руби, что-то радикально поменяется? П>Ничего, за исключением того, что к Руби оно, как правило, не относится.
, а то бедным-несчастным новичкам придется что-то учить, ага
П>Придется, ага. В режиме "ежедневно, по 40+ часов в неделю". А не "разок-другой с перерывом в два месяца". О чем тебе здесь разные люди сказали уже раз десять, если не больше.
А если наоборот? Если мне надо работать на JS и раз в два месяца работать в C# Нет, значит новичками для C# надо учить
button1.Click += delegate(System.Object o, System.EventArgs e)
{ System.Windows.Forms.MessageBox.Show("Click!"); };
А если НЕ ДАЙ БОГ в JS надо будет выучить
button.onclick = function(){ alert('click'); }
Это ховайся, кто может — это, как минимум, требование знать математику на уровне доказательства теоремы Ферма, ага
M>>Но это — объектвиная проблема, и я уже об этом тебе говорил.
П>Так никто кроме тебя в этом топике и не утверждает, что люди недовольны джавоскриптом по субъективным причинам.
Ты утверждаешь. Все твое нытье про прототипное ООП. Твое ныть про то, что бедным несчастным новичкам надо ломать голову над синтаксисом listener'ов (а то все другие языки — сплошь близнецы братья и все выглядят одинаково, ага) и т.п.
M>>Я не понимаю, что тебе вообще не нравится в моем ответе
НС>Я не могу понять, какую мысль ты этим постом хотел выразить. Привел два куска кода, сказал что разница между ними отсутствует. Но какая связь с сообщением Пацака, на которое ты отвечал, я что то уловить не могу.
Это был отход в сторону — про другие подветки с участием Пацака
НС>>>Не поняли, а понял. M>>Повторяю специально, чтобы ты понял: разница между JS и каким-нибудь C#, а контексте постоянного нытья «хочу, как привык» иногда вообще практически исчезает.
НС>Ну и что? А если привести в пример выражение 2+2, то вообще разница между почти всеми ЯВУ исчезнет. Это как то доказывает, что все языки вообще одинаковы?
И этот человек мне говорит про передергивания ага Рядом
Здравствуйте, Mamut, Вы писали:
M>А если наоборот? Если мне надо работать на JS и раз в два месяца работать в C#
Можешь жаловаться на до-диез, ради бога. Только вряд ли кто тебя услышит, учитывая, что людей, работающих в описанном тобой графике — полтора человека на тысячу шарперов.
П>>Так никто кроме тебя в этом топике и не утверждает, что люди недовольны джавоскриптом по субъективным причинам. M>Ты утверждаешь. Все твое нытье про прототипное ООП.
Нет, про субъективизм тут долдонишь исключительно ты. И ноешь, кстати, тоже — ты даже начал этот топик с того же, с нытья. Примеры же объективных трудностей, с которыми новичкам приходится сталкиваться в javascript ты попросту игноришь. Равно как вопросы, а что же такого магического и волшебного дают программисту эти выкрутасы.
Здравствуйте, Mamut, Вы писали:
A>>>За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков. П>>OK, один день раз в полгода — и? Что это меняет-то? M>Если это — скрипт на Питоне, это что-то изменит? Если да, то что? А если на Ruby?
Изменит.
С JS очень часто приходится "по-чуть-чуть" взаимодействовать людям, пишущим на C# или Java. Т.е. основной для них язык с "традиционной" схемой наследования. Пишут серверную часть веб прилады и время-от-времени, но редко, требуется сделать немного кода на стороне клиента. И вот тут начинается ломка. На первый взгляд язык похож на C#/Java, даже названием, а потом вдруг начинаются проблемы. Причем он не воспринимается как серьезный язык данным программистом. Потому что для него основная программа — это серверный код. А эти js-дополнения просто вспомогательные расширения. Человеку как-то не приходит в голову, что эту фигню надо тоже тщательно заранее изучить.
Случаи, когда C#\Java программисту приходится так же часто и понемногу взаимодействовать с Python/Ruby — крайне редки. Потому и массовых вопросов не возникает.
З.Ы.
Я не говорю, что поведение данных программистов правильное, но оно понятно, и его не получится изменить просто горячим призывом "а давайте вы все резко выучите JS".
П>Все, что я тебе сказал — это то, что их синтаксис неочевиден с первого взгляда и вхождение в него требует времени. Которое человек, пишуший на js лишь изредка, справедливо воспринимает как бесполезно потраченное. Про то, что они сами по себе чем-то сложнее или проще, чем в шарпе — это уже исключительно ТВОИ буйные фантазии, я такого нигде не утверждал. Проблема js — это не проблема языка, это проблема использования этого языка. О чем тебе уже раз двадцать тут говорили.
Именно что использования. У обычных программеров оно минимальное, потому от всяких заморочек просто отмахиваешься — не до них, задача не в том, чтобы заюзать жабаскрипт на максимум. Хотят на максимум? Ну нанимайте спеца по нему, а я-то при чем?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
M>>тебя смущает, почему-то, только JS.
П>Тебе уже раз двадцать объясняли, почему.
Ага, начнем по кругу
M> Где? Ссылки в студию. Если их выше крыши, ты наберешь хотя бы три?
1) нетипизированность (Cyberax)
2) прототипное ООП (все)
3) var (Sinclair)
От себя могу добавить еще странную модульность, реализуемую через всякие requirejs и т.п. велосипеды.
Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз. Что не мешает тебе рассказывать сказки про то, что Питон/Руби будут лучше
Прототипное ООП «раз в полгода», «новичку» и «для домашнй страницы» не понадобится вообще никогда. Что не мегает тебе рассказывать сказки про то, как оно мешает.
var — см. комментарий про объективные проблемы. Для других языков, которые «лучше JS» таких var'ов тоже наберется. Вот, например, список про Ruby. Но дададада, он все равно будет лучше, чем JS, патамушта!!!
Здравствуйте, Mamut, Вы писали:
M>Нвеяно очередным постом про «революционный Дарт» на хабре.
M>В комментариях пошло стандартное нытье про JS: M>Парадигму Класс принять в разы проще(она есть во всех языках), чем Делегирующий прототип. M>Лично мне бы хотелось использовать унифицированный подход к классовому ООП
скажу о себе. лет десять назад ооп пытался учить дважды. сначала на турбо-паскале (с либой турбо-вижин), затем на плюсах. совершенно не вкурил, что такое классы, зачем они нужны и каким образом они помогут мне писать лучше, быстрее, разборчивее.
так ведь и не осилил ооп и на долгие годы забросил. а тут пару лет назад по долгу службы пришлось зарыться в js. и стало приходить понимание, что такое объекты и почему с использованием объектов программа получается намного более изящная, чем с традиционным процедурным подходом. делегирующий прототип у меня вызывает вселенский кайф и для моих задач он очень хорошо подходит.
сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Sinclair, Вы писали:
S>Скажем, так: лично я не очень себе представляю, как бы мог выглядеть язык с не-прототипным ООП, бегающий внутри браузера. S>Очень может быть, что это от убогости лично моей фантазии. S>Так что не могли бы вы изобразить некоторый набросок того, как был бы устроен такой язык?
Что мешает существовать внутри браузера чему-нибудь типа питона, например?
Здравствуйте, Mamut, Вы писали:
M>На что возник у меня резонный вопрос: M>[q] M>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Нашёл внятный ответ на этот вопрос: http://javascript.crockford.com/javascript.html
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Cyberax, Вы писали:
C>>>Типов не хватает в JS, типов. А программирование с классами — это самый простой способ типизации кода. A>>Каких типов не хватает в JavaScript? C>Статической типизации. Реально не хватает, особенно в больших приложениях.
M>>>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>>>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
M>>>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
M>>>Ась?
I>>Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование,
M>Есть в Питоне, Руби и C#, никто не жалуется
В C# многие даже про yield не знают, а питон и руби на массы не тянут. Ты еще лисп вспомни
I>>пм и тд слишком сложно для общей массы. Массам сложно, они ноют. Ноют массы — значит им сложно. Все просто. Не надо выдумывать.
I>>Вариантов три: I>>1 Найти волшебную палочку и поднять уровень образования. I>>2 Найти волшебную палочку и сделать JS пригодным для масс. I>>3 Забить на волшебную палочку.
M>3-й пункт
Судя по "надо что-то срочно менять ... а восприятие оного программистами." тебе нравятся п1 и п2.
Здравствуйте, Mamut, Вы писали:
YKU>>Потому что язык — это инструмент. Если инструмент неудобен — нахрен он вообще нужен? YKU>>Причём неудобен по любым причинам. Слишком сложен в освоении входит в список. Слишком отличается от првычного — тоже.
M>Хех. Что значит «привычный»?
Да, надо разобраться! Что же значит "привычный" и в чем его субстанциальная сущность, имманентная только данному предикату?
M>В последнем абзаце — ключевое. То есть Хаскель с его далеко не сразу понятными монадами учить можно и надо, а в JS — не, нифига, дайте, чтобы было понятно
И хаскель не надо. Да его никто и не учит. Ну, кроме тех, кому надо, говорят есть такие, хотя я лично сомневаюсь.
А яваскрипт что? Это та глючная хрень в браузере, которая выводит алерт "в поле телефон должны быть только цифры"? Не, его учить точно не надо, надо что-бы понятно.
YKU>>>Потому что язык — это инструмент. Если инструмент неудобен — нахрен он вообще нужен? YKU>>>Причём неудобен по любым причинам. Слишком сложен в освоении входит в список. Слишком отличается от првычного — тоже.
M>>Хех. Что значит «привычный»?
YKU>Да, надо разобраться! Что же значит "привычный" и в чем его субстанциальная сущность, имманентная только данному предикату?
M>>В последнем абзаце — ключевое. То есть Хаскель с его далеко не сразу понятными монадами учить можно и надо, а в JS — не, нифига, дайте, чтобы было понятно
YKU>И хаскель не надо. Да его никто и не учит. Ну, кроме тех, кому надо, говорят есть такие, хотя я лично сомневаюсь. YKU>А яваскрипт что? Это та глючная хрень в браузере, которая выводит алерт "в поле телефон должны быть только цифры"? Не, его учить точно не надо, надо что-бы понятно.
А без урацкого паясничания ты способен обсудить эту тему?
I>>>Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование,
M>>Есть в Питоне, Руби и C#, никто не жалуется
I>В C# многие даже про yield не знают,
И? Почему я не вижу стенаний «нам не нужен Linq, нам не нужен yield, нам не нужны делегаты, верните все, как было, чтобы от Java/C++ не отличалось»?
I>а питон и руби на массы не тянут. Ты еще лисп вспомни
Сравнил член с пальцем. Питон и руби — это вполне себе массы, и никто не ноет.
I>>>пм и тд слишком сложно для общей массы. Массам сложно, они ноют. Ноют массы — значит им сложно. Все просто. Не надо выдумывать.
I>>>Вариантов три: I>>>1 Найти волшебную палочку и поднять уровень образования. I>>>2 Найти волшебную палочку и сделать JS пригодным для масс. I>>>3 Забить на волшебную палочку.
M>>3-й пункт
I>Судя по "надо что-то срочно менять ... а восприятие оного программистами." тебе нравятся п1 и п2.
Нет, пункт 2 мне не нравится точно. Если ты не способен это понять из моих здесь сообщений, то увы
M>>А без урацкого паясничания ты способен обсудить эту тему?
YKU>Тебе неизвестны врождённые недостатки js?
Известны, но они не относятся, судя по всему, к «удобству».
YKU>Ты не в курсе, как и почему 99% исспользует js?
Так же, как и любой другой язык
YKU>Так что без дурацкого паясниченья тут и обсуждать нечего.
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Я надеялся, что ты объсянишь, что такое «неудобный», «непривычный» и т.п. Но, видимо, н судьба.
I>>>>Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование,
M>>>Есть в Питоне, Руби и C#, никто не жалуется
I>>В C# многие даже про yield не знают,
M>И? Почему я не вижу стенаний «нам не нужен Linq, нам не нужен yield, нам не нужны делегаты, верните все, как было, чтобы от Java/C++ не отличалось»?
Ты ж внимательно читай: "многие даже про yield не знают" Потому и нет стенаний. На С# можно сносно писать "как на С++ и Джаве".
I>>а питон и руби на массы не тянут. Ты еще лисп вспомни
M>Сравнил член с пальцем. Питон и руби — это вполне себе массы, и никто не ноет.
Это экзотика относительно JS. JS знают и питинщики и рубисты и джависты и сиплюсники и дотнетчики. Так что если речь про массы, то JS это и есть массы, а питон и перл — так себе.
M>>>3-й пункт
I>>Судя по "надо что-то срочно менять ... а восприятие оного программистами." тебе нравятся п1 и п2.
M>Нет, пункт 2 мне не нравится точно. Если ты не способен это понять из моих здесь сообщений, то увы
Это ты не способен понять, что хочешь поменять людей или сложившийся естественным образом стандарт.
Здравствуйте, Eugeny__, Вы писали:
E__>Это хорошо если второй. А то бывает, что где-то пятый. Я вот по работе сталкиваюсь с js. Максимум 1% от всего рабочего времени(причем это не браузерный js). Оно мне надо — его изучать на высоком уровне? Да мне в нем три строчки в месяц приходится писать/править.
Тогда каким же образом тебе удаётся столкнуться со всеми теми характеристиками языка, что вызывают такую реакцию на него?
M>>Я надеялся, что ты объсянишь, что такое «неудобный», «непривычный» и т.п. Но, видимо, н судьба.
П>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей типа "добавить еще две строчки текста вон к тому div'у" или "сделать динамическую менюшку с товарами".
П>Теперь представь: у тебя есть нормальный классический автомобиль, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет из себя двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления. Правда те, кто ездит на нем ежедневно, утверждают, что после двух-трех тысяч километров практики на нем можно научиться перепрыгивать лужи и переезжать через реки по бобровым плотинам — но тебе-то оно нахрена, если ты всего-то хотел выехать с семьей на шашлыки к соседнему озеру?
Ага. Аналогии, агага. Только почему-то во всех аналогиях JS пытаются выставить, как нечто противоестествненое. Нуну.
Как ты там нарисовал? «вухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления». Хм. Почему-то люди ездят на мотоциклах, в которых управление явно не автомобильное, и не жужжат. Но дадададада, JS — зло, из него срочно надо делать очередной С++, ага, как же
M>>Ага. Аналогии, агага. Только почему-то во всех аналогиях JS пытаются выставить, как нечто противоестествненое. Нуну.
П>Ты, кажется, просил объяснить, что такое "непривычный" — ну так я тебе объяснил. А уж естественно оно или нет — это вопрос десятый. Китайцы вон у живых обезьян мозги едят — тоже вполне естественный процесс питания, если вдуматься...
Аналогия объяснением не является.
M>>Как ты там нарисовал? «вухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления». Хм. Почему-то люди ездят на мотоциклах, в которых управление явно не автомобильное, и не жужжат.
П>Да ну? А у меня вот почему-то есть подозрение, что если среднестатистического автолюбителя посадить на мотоцикл — сходу он на нем далеко не уедет. А уж далеко, безопасно и быстро — тем более. Либо в ГИБДД сидят идиоты, зачем-то придумавшие под это транспортное средство отдельную категорию прав.
Ну, раз ты так настаиваешь на продолжении аналогий...
Какой мы вывод из этого должны сделать? Ну же. Даже могу помочь, я добрый:
— предположим, что JS == мотоцикл
— человек, ездящий на автомобиле (С++/Java) далеко на мотоцикле (JS) не уедет
— при этом:
-- никто не требует сделать из мотоцикла (JS) автомобиль (С++/Java)
-- предполагается, что человек, севший на мотоцикл (JS) знает, как с ним обращаться, и не будет предпринимать попыток обращаться с ним, как с автомобилем (С++/Java)
-- для полноценного пользования мотоциклом (JS) предполагается, что человек выучит правила, которые применимы к мотоциклам (JS), невзирая на то, знает человек правила пользования автомобилем (С++/Java) или нет
— некоторые люди делают, скажем так, гибриды из мотоцикла (JS) и автомобиля (С++/Java), но они являются или редкоиспользуемыми игрушками (трициклы, даже сложно найти аналогию) или занимают какие-то свои ниши, по сути не являясь ни тем ни другим (квадроциклы, Objective-J).
M>>Но дадададада, JS — зло, из него срочно надо делать очередной С++, ага, как же
П>Комплексы, комплексы и агрессия...
Здравствуйте, Mamut, Вы писали:
I>>Ты ж внимательно читай: "многие даже про yield не знают" Потому и нет стенаний. На С# можно сносно писать "как на С++ и Джаве".
M>На Javascript можно спокойно писать в процедурном стиле, и?
Ну напиши jquery в процедурном, я посмотрю далеко ли ты зайдешь.
I>>Это экзотика относительно JS. JS знают и питинщики и рубисты и джависты и сиплюсники и дотнетчики. Так что если речь про массы, то JS это и есть массы, а питон и перл — так себе.
M>И? Судя по воплям на этом форуме, никто нифига не знает JS, и — самое главное — не прилагают никаких усилий к тому, чтобы узнать.
Вот-вот. Тут то тебе волшебная палочка и понадобится.
I>>Это ты не способен понять, что хочешь поменять людей или сложившийся естественным образом стандарт.
M>Пытаться людей стоит всегда.
Здравствуйте, Mamut, Вы писали:
M>На что возник у меня резонный вопрос: M>
M>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
M>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
M>Ась?
Окей, давайте изменим. Для начала — давайте сделаем на JS функционально полный аналог класса .NET String, SortedDictionary и ObservableCollection.
Здравствуйте, anonymous, Вы писали:
SA>>Для начала — давайте сделаем на JS функционально полный аналог класса .NET String, SortedDictionary и ObservableCollection.
A>Для чего?
Ну мы полноценное RIA на нем будем колбасить, или демонстрационные поделки?
Кстати, как на жабоскрипте замутить поддержку прозрачного прокси для удаленного сервиса с автоматическим маршаллингом параметров?
А сортировку и фильтрацию, некий аналог LINQ — ведь наше RIA требует хорошей реализации логики презентации.
А давайте забабахаем разные контекстные меню и диалоги?
Ну, хотя бы динамический пейджинг сделаем, с кешированием на клиенте полученных данных?
Что, не получается?
Никакой гибкости, переносимости, реюзабельности и чистоты структуры кода?
Про перформанс лучше даже не заикаться, сотня записей в гриде — и привет, тормоза?
Во-во.
Именно такой вердикт и был после знакомства с Sencha Touch.
Хоть они и шагнули достаточно далеко от ужаса нативного ECMAScript, но для серьезной разработки все это, увы, не торт.
Здравствуйте, StandAlone, Вы писали:
SA>А сортировку и фильтрацию, некий аналог LINQ — ведь наше RIA требует хорошей реализации логики презентации.
Не очень понятно, чего именно хочется. Синтаксис Linq со статической проверкой? Ну так он существует ровно в 2х языках.
Без неё? Посмотрите на jQuery — он весь про это, хотя в приложении к DOM-модели. SA>А давайте забабахаем разные контекстные меню и диалоги?
А что мешает? SA>Ну, хотя бы динамический пейджинг сделаем, с кешированием на клиенте полученных данных? SA>Что, не получается?
Прекрасно получается. Каноническим примером пейджинга ажно в 2d, с кешированием и шлюхами является maps.google.com. SA>Никакой гибкости, переносимости, реюзабельности и чистоты структуры кода?
Вот про это — поподробнее. Какой именно гибкости, переносимости, и реюзабельности вам не хватает?
SA>Про перформанс лучше даже не заикаться, сотня записей в гриде — и привет, тормоза?
Вы же не думаете, что это как-то связано с прототипным наследованием и function as a first-class citizen?
SA>Именно такой вердикт и был после знакомства с Sencha Touch. SA>Хоть они и шагнули достаточно далеко от ужаса нативного ECMAScript, но для серьезной разработки все это, увы, не торт.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Я думаю, что Синклер прав, зря язык назвали JAVAscript, зафигачили туда сишный синтаксис и императивность как самый простой способ программирования.
Меня больше интересует другое — почему не schema или что-то другое лиспообразное?
S>>Скажем, так: лично я не очень себе представляю, как бы мог выглядеть язык с не-прототипным ООП, бегающий внутри браузера. S>>Очень может быть, что это от убогости лично моей фантазии. S>>Так что не могли бы вы изобразить некоторый набросок того, как был бы устроен такой язык?
П>Что мешает существовать внутри браузера чему-нибудь типа питона, например?
Ничего. Был бы Питон, началось бы нытье, «ах, что за убогое ООП с этим вашим self'ом»
Здравствуйте, Mamut, Вы писали:
M>Где? Ссылки в студию. Если их выше крыши, ты наберешь хотя бы три?
1) нетипизированность (Cyberax)
2) прототипное ООП (все)
3) var (Sinclair)
От себя могу добавить еще странную модульность, реализуемую через всякие requirejs и т.п. велосипеды.
M>Если это про «неудобно и непривычно», то тут, выделено: http://rsdn.ru/forum/flame.comp/4528631.1.aspx
Дим, выделенное — это плач Ярославны. Никто не будет досконально изучать все тонкости языка, который нужен бывает на полчаса один раз в неделю. Ни js, ни эрланга, ни какого-то другого. Я понимаю, тебя это бесит, но такова уж реальность, смирись с ней. Это не значит, что сам js плохой, боже упаси — если потренироваться и хорошенько навостриться, то он очень даже хороший. Но просто не совсем понятно, нафига это нужно — городить тренировки на ровном месте и что мешало использовать в языке чуть более мейнстримовый подход.
Здравствуйте, Пацак, Вы писали:
П>Дим, выделенное — это плач Ярославны. Никто не будет досконально изучать все тонкости языка, который нужен бывает на полчаса один раз в неделю. Ни js, ни эрланга, ни какого-то другого. Я понимаю, тебя это бесит, но такова уж реальность, смирись с ней. Это не значит, что сам js плохой, боже упаси — если потренироваться и хорошенько навостриться, то он очень даже хороший.
Здравствуйте, Пацак, Вы писали:
П>Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы.
Нет никаких религиозных мотивов, есть история. Он был создан прототипным, и вот как раз изменён может быть только по религиозным мотивам.
Здравствуйте, anonymous, Вы писали:
A>Нет никаких религиозных мотивов, есть история. Он был создан прототипным, и вот как раз изменён может быть только по религиозным мотивам.
Никто и не предлагает его менять. Но ждать, что те, кто его используют изредка, будут с восторгом относиться к ситуации "много траха — мало профита" — это имхо как-то черезчур оптимистично.
A>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием.
П>Столкнешься. Доработку чужих скриптов еще никто не отменял.
С другой стороны, я не могу понять, что все так носятся с этим прототипным программированием как с писанной торбой, будто бы это какой-то невероятный рокет сайнс.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E__>С другой стороны, я не могу понять, что все так носятся с этим прототипным программированием как с писанной торбой, будто бы это какой-то невероятный рокет сайнс.
Да никто с ним не носится, просто оно есть по факту и никуда от него не деться. Если только язык заменить, но это вряд ли.
Здравствуйте, anonymous, Вы писали:
q>>>Почти все библиотеки так или иначе эмулируют классы. A>>>Интересно, и много ты пишешь на других языках без использования фреймворков и библиотек? YKU>>Бида какая-то, даже и не знаю как вам ответить... A>Правду говори.
Здравствуйте, Mamut, Вы писали:
П>>Значительно отличающееся от привычного. Применительно к прототипному ООП, например — от ООП классического. M>Определение классического ООП в студию
Имелся в виду текущий мейнстрим.
M>Больгинство привыкло индусокод писать и?
Я думаю ты несколько преувеличиваешь собственную элитарность.
П>>Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы. M>Стопстопстоп. Почему это я должен что-то доказывать?
Хотя бы потому, что без доказательств его необходимости в js твои оппоненты имеют право относиться к прототипному ООП как к ненужной фенечке и блажи в голове создателей языка.
M>Я даю данность: есть язык, к которому должны применяться точно такие же критерии, как и к любому другому языку, а именно: при использовании любого языка программирования предполагается, что ты выучишь те подходы и парадигмы, что в нем используются. Это справедливо для любого языка с любым уровнем популярности. Почему этот критерий не применяется, в том числе и тобой, к JS?
Тебе еще раз перепечатать абзацы про вспомогательный язык? Или объяснить, на сколько растянется период вхождения в новые синтаксис и логику в режиме использования "месяц не трогаем — полдня кодим"?
M>>Про это и я тебе могу рассказать, и много. П>Ну видишь — сам всё прекрасно понимаешь.
Я-то понимаю, В этом же топике кроме нытья и попыток доказать чтото неверными аналогиями, ничего и не было
M>>Я где-то требую досконального изучения всех особенностей JS?
П>Здрасьте!
П>
П>Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
П>Не знаю как ты, а я как-то с трудом представляю себе "подстроение под язык" без досконального изучения его особенностей. Потому что иначе — это будет хождение по граблям. Как оно частенько с тем же js и бывает.
Почему обязательно доскональное?
M>>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо?
П>Во-первых не будем — даже перечисленные языки, при всей их внешней похожести, тем не менее вполне себе самобытны.
Ага, а JS — ВНЕЗАПНО! — не самобытен, агагагагага. Я не понимаю этого твоего дуализма. Ко всем языкам ты относишься с одинаковыми критериями, и только как речь заходит о JS — все, как вырубает, и критерии кардинально меняются.
П>А во-вторых — кому от этого будет плохо? Что страшного произошло бы, если бы js был изначально чуть ближе к мейнстриму?
JS, вероятно, самый популярный язык программирования в мире. Куд ж еще ближе к мейнстриму?
M>>А язык такой, потому что его так спроектировали. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось.
П>Но и любить его за это тоже никто не обязан.
M>>Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не?
П>Не так. Он стал популярным и именно поэтому приходится изучать его подход. И вот как раз это отношение долженствования людей и напрягает. Потому что какого-то особенного профита от осознания того факта, что объекты могут создаваться клонированием, а переменные — по умолчанию торчать в глобальном контексте, в общем-то не получается. А граблей на пути приходится собрать далеко не одни.
Java стала популярной, поэтому мне придется изучать ее для (поставить нужное)
C++ стал популярным, поэтому мне придется изучать ее для (поставить нужное)
C# стал популярным, поэтому мне придется изучать ее для (поставить нужное)
и т.п.
Ко всем языкам ты относишься с одинаковыми критериями, и только как речь заходит о JS — все, как вырубает, и критерии кардинально меняются.
П>>>Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы. M>>Стопстопстоп. Почему это я должен что-то доказывать?
П>Хотя бы потому, что без доказательств его необходимости в js твои оппоненты имеют право относиться к прототипному ООП как к ненужной фенечке и блажи в голове создателей языка.
Вообще-то, если ты заявляешь выделенное, то твоя задача доказать эту точку зрения, а не наоборот Аналогии и отсылки к мейнстриму — это не доказательство.
M>>Я даю данность: есть язык, к которому должны применяться точно такие же критерии, как и к любому другому языку, а именно: при использовании любого языка программирования предполагается, что ты выучишь те подходы и парадигмы, что в нем используются. Это справедливо для любого языка с любым уровнем популярности. Почему этот критерий не применяется, в том числе и тобой, к JS?
П>Тебе еще раз перепечатать абзацы про вспомогательный язык? Или объяснить, на сколько растянется период вхождения в новые синтаксис и логику в режиме использования "месяц не трогаем — полдня кодим"?
Опиши ситуацию,в которой так происходит. Потому что я такое себе представить не могу.
И да, если "месяц не трогаем — полдня кодим" будет относиться, например, к Руби, что-то радикально поменяется?
Здравствуйте, Mamut, Вы писали:
A>>>За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков. П>>OK, один день раз в полгода — и? Что это меняет-то? M>Если это — скрипт на Питоне, это что-то изменит? Если да, то что? А если на Ruby?
Питон гораздо лучше структурирован. В нём есть нормальные классы с нормальной семантикой, а не их эмуляция через прототипы.
M>>Начинается с того, что выписываются требования к этому гриду, а только потом смотрится, что есть. Вполне возможно, что дело решится банальной таблицей, jQuery и двумя-тремя Ajax-запросами
ЕА>Т.е. предложить все-таки нечего. Не хочу никого обидеть, но реально звучит как издевка.
Нет, не звучит. Но это, как я ниже сказал, не является проблемой именно JS
ЕА>Это как если ли бы я выбирал внедорожник, а ты мне сказал: выпиши список требований, вдруг тебя и самокат устроит.
Да, так бы я и сказал Без требований непонятно, что тебе надо.
Здравствуйте, Mamut, Вы писали:
П>>Хотя бы потому, что без доказательств его необходимости в js твои оппоненты имеют право относиться к прототипному ООП как к ненужной фенечке и блажи в голове создателей языка.
M>Вообще-то, если ты заявляешь выделенное, то твоя задача доказать эту точку зрения, а не наоборот
Здесь как раз все просто — любая необычная фича не нужна по умолчанию, если ее необходимость не доказана конкретными аргументами. А необходимость прототипов в js ты доказать так пока и не смог.
П>>Тебе еще раз перепечатать абзацы про вспомогательный язык? Или объяснить, на сколько растянется период вхождения в новые синтаксис и логику в режиме использования "месяц не трогаем — полдня кодим"? M>Опиши ситуацию,в которой так происходит. Потому что я такое себе представить не могу.
Да запросто — та же домашняя страничка, например.
M>И да, если "месяц не трогаем — полдня кодим" будет относиться, например, к Руби, что-то радикально поменяется?
Ничего, за исключением того, что к Руби оно, как правило, не относится.
Здравствуйте, Пацак, Вы писали:
M>>Опиши ситуацию,в которой так происходит. Потому что я такое себе представить не могу. П>Да запросто — та же домашняя страничка, например.
Покажи мне домашнюю страничку, где в коде явно используются прототипы.
Здравствуйте, anonymous, Вы писали:
A>Здравствуйте, Пацак, Вы писали:
П>>Теперь представь: у тебя есть нормальный классический автомобиль, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет из себя двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления. Правда те, кто ездит на нем ежедневно, утверждают, что после двух-трех тысяч километров практики на нем можно научиться перепрыгивать лужи и переезжать через реки по бобровым плотинам — но тебе-то оно нахрена, если ты всего-то хотел выехать с семьей на шашлыки к соседнему озеру?
A>А почему бы и нет так? A>
A>Теперь представь: у тебя есть двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет нормальный классический автомобиль.
в итоге все то же самое: с нормального автомобиля (а для тебя твоя мега повозка — это нормальный автомобиль, ибо привычен и освоен) тебе придется пересесть на черти-что без штурвала и с переставленными (относительно твоих привычек) педалями.
Не забываем, что начало кординат — в человеке, который пересаживается.
Здравствуйте, March_rabbit, Вы писали:
M_>в итоге все то же самое: с нормального автомобиля (а для тебя твоя мега повозка — это нормальный автомобиль, ибо привычен и освоен) тебе придется пересесть на черти-что без штурвала и с переставленными (относительно твоих привычек) педалями. Не забываем, что начало кординат — в человеке, который пересаживается.
То есть эта аналогия ничего нам не даёт. Как был единственный аргумент — не привычно — так он и остался.
Здравствуйте, Ночной Смотрящий, Вы писали:
M>>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо? НС>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков?
А почему ты так жаждешь обязательно наличия только одного языка?
M>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу.
Вменяемые альтернативы есть. Трансляторы с них в JavaScript тоже есть. Что ещё надо-то?
M>> Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не? НС>Типа миллион леммингов не могут ошибаться?
Типа это заявление что-то опровергает?
НС>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин.
В силу подхода тоже, языком должны были пользоваться люди, не являющиеся профессиональными программистами. Долгое время именно так дела и обстояли. А то, что у вас психотравма, вызванная долгим изучением ООП на классах, не проблема языка.
Здравствуйте, Mamut, Вы писали:
НС>>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков? M>Ты этот вопрос на полном серьезе задаешь?
Даже и не знаю что тебе и ответить. Ты, судя по всему, на полном серьезе считаешь, что чем больше языков в мейнстриме, тем лучше?
M>>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу.
M>Java — GWT
Это не очень вменяемая альтернатива, увы.
M>, C# — ASP.NET вообще не требуют написания JS, насколько я знаю.
А, ну ну.
M> Даже поверх JS есть толпа решений для «вменяемой альтернативы» (Objective-J, Coffescript и т.п. вон, даже erlang есть)
И все они косячные.
НС>>Типа миллион леммингов не могут ошибаться? НС>>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин.
M>Заменяй JS на С++/Java, что изменится?
Java — продукт долгой эволюции, а не кавалерийский наскок типа JS.
Здравствуйте, anonymous, Вы писали:
M>>>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо? НС>>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков? A>А почему ты так жаждешь обязательно наличия только одного языка?
Это где я такое писал?
M>>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу. A>Вменяемые альтернативы есть.
Нету.
НС>>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин. A>В силу подхода тоже, языком должны были пользоваться люди, не являющиеся профессиональными программистами.
Прям как в анекдоте — сделай язык, которым могут пользоваться дураки, и только дураки будут им пользоваться
A>А то, что у вас психотравма
Психотравма, мил человек, у тебя, что ты абсолютно без повода начинаешь хамить незнакомым лично тебе людям.
Здравствуйте, Mamut, Вы писали:
M>Это «новичкам придется выучить синтаксис listener'ов» — это объективная проблема?
Именно. И не только listener'ов. Дополнительные трудозатраты на изучение и полезный выхлоп от этих трудозатрат — это самый что ни на есть объективный признак, хочется тебе этого или нет.
M>Вообще, ты ВНЕЗАПНО вспомнил про списко проблем только после того, как оказалось, что против прототипного ООП (против которого ты выступал на протяжение большй части обуждения) у тебя нет ни одного внятного аргумента.
Против прототипного ООП у меня есть один железобетонный аргумент — оно не нужно и ничего полезного по сравнению с обычным в себе не несет. Обратного ты так и не доказал, как тебя об этом ни просили.
Здравствуйте, Пацак, Вы писали:
П>Против прототипного ООП у меня есть один железобетонный аргумент — оно не нужно и ничего полезного по сравнению с обычным в себе не несет. Обратного ты так и не доказал, как тебя об этом ни просили.
Обратное тоже верно. Приходим к исходному «меня этому не учили». Такой вот железобетонный аргумент.
M>То есть, иными словами: почему вы считаете, что для работы с Хаскелем вам нао учить Хаскеллевские подходы и используемые парадигмы, а для работы с JS — «мне это непонятно, дайте мне то, что удобно»?
M>В последнем абзаце — ключевое. То есть Хаскель с его далеко не сразу понятными монадами учить можно и надо, а в JS — не, нифига, дайте, чтобы было понятно
Не, логичный вывод совсем другой: ОБА НЕ НУЖНЫ!!!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Mamut, Вы писали:
M>>
M>>То есть, иными словами: почему вы считаете, что для работы с Хаскелем вам нао учить Хаскеллевские подходы и используемые парадигмы, а для работы с JS — «мне это непонятно, дайте мне то, что удобно»?
M>>В последнем абзаце — ключевое. То есть Хаскель с его далеко не сразу понятными монадами учить можно и надо, а в JS — не, нифига, дайте, чтобы было понятно
E>Не, логичный вывод совсем другой: ОБА НЕ НУЖНЫ!!!
Сейчас кто-то прийдет и скажет, что с++ не нужен итд
Потом кто-то скажет, что каждый инструмент нужен для своих задачи итд по новой
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Нет, я так не считаю, но пока что тут никто про объективные недостатки JS и не говорил. НС>Разве?
Точно тебе говорю.
НС>Это разве хамство? А теперь сравни со своим:
Зачем мне сравнивать? Я тоже могу сказать, что не хамил.
НС>Если непонятно, в чем разница: в моих цитатах нет упоминания личности собеседника, в отличие от.
M>>Ага, известный аргумент. Как только JS — надо обязательно писать только на голом JS. Как только другой язык — бури люую библиотеку вплоть до use System.Windows.Forms.
П>Ога, именно так. Потому что на любом другом языке момент "используй библиотеку" у человека наступает обычно после того, как он более-менее сносно поймет сам язык. А не вместо этого, как это предлагаешь ты.
Для того, чтобы сносно понять JS нужно полдня. Ладно, один.
M>>Но дадада. Одинаковые подходы ко всем языкам и инструментам — это для слабаков.
П>Вот интересно, сколько еще человек и сколько раз тебе должны тут написать о том, что в случае js подход изначально кардинально отличается от повседневно используемых языков,
Чем он кардинально отличается? Можешь начать со своего плача Ярославны про делегаты.листенеры
.
П>чтобы ты перестал делать вид, что ты этого не понимаешь? Вот выше fmiracle уж совсем разжевал и чуть ли не в рот положил — ан нет, никакого эффекта, продолжаешь всё тот же бессмысленный плач Ярославны. Самому-то не надоело еще?
Нихрена он не разжевал. От него ровно такое же нытье, как и от тебя. Про что я написал тут
Здравствуйте, Mamut, Вы писали:
M>Для того, чтобы сносно понять JS нужно полдня. Ладно, один.
Угу — день чтобы выучить и полдня — чтобы вспомнить. При том, что ровно те же полдня-день обычно имеются в распоряжении программиста для того, чтобы на нем что-то закодить. Об чем тебе тут уже не меньше десяти раз сказали.
M>Чем он кардинально отличается?
Вот вышенаписанным и отличается. Об чем тебе тут уже не меньше десяти раз сказали. Но вместо того, чтобы это наконец уже вкурить — ты предпочитаешь продолжать свой плач Ярославны про "плохих программистов, которые не играют в твою любимую игрушку".
Здравствуйте, Mamut, Вы писали:
M>Для того, чтобы вспомнить, нао сильно меньше полудня.
Не настолько сильно, чтобы это не было критично при разовой быстрой разработке. О чем тебе здесь уже десять раз сказали.
П>>Вот вышенаписанным и отличается. Об чем тебе тут уже не меньше десяти раз сказали. Но вместо того, чтобы это наконец уже вкурить — ты предпочитаешь продолжать свой плач Ярославны про "плохих программистов, которые не играют в твою любимую игрушку".
M>Чем, всем?
Где ты увидел слово "всем"? Начались твои стандартные игры в подгонку вопросов под ответ?
M>Ты мне уже сказки про листенеры рассказывал, на прямо заданный вопрос
(не один раз), чем таким они отличаются ты так и не смог ответить.
Тебе десять (а может уже и двадцать) раз уже сказали — разница не в сложности синтаксиса, а в том, в каком режиме изучаются его отличия. Причем в том самом сообщении, на которое ты ссылаешься я тебе об этом сказал тоже. О том, как с этим бороться, тебе также написали неоднократно — в том числе и я, в первом же ответе
этого топика. Ты успешно перевел стрелки, отправил эти ответы в игнор и продолжил ныть про нехороших программистов, не желающих учить твой любимый язык. О чем с тобой вообще после этого можно разговаривать? Ты фанат, Дима, и как любой фанат — ты невменяем.
M>На прямо заданный вопрос
Я утверждаю, что писать домашние страницы на прототипном ООП неудобно и сложно — и я же должен искать этому опровержения в виде написанных на нем страниц? Да ты не офигел ли, уважаемый? Это вы с анонимусом должны с полпинка находить их тоннами, чтобы доказать мне легкость этого процесса. Но пока всё, чего вы достигли — это перевели стрелки с чистого js на костыль в виде jQuery. Который, как ни странно, был специально "designed to change the way that you write JavaScript".
M>Но да, фантазировать мы умеем, ага
Да куда уж нам до Вас, вообразивших себе на ровном месте чуть ли не всемирный заговор начинающих js-кодеров.
Здравствуйте, Mamut, Вы писали:
M>Ну блин, аналогично для любого языка программирования. M>Был бы питон, ныли бы про отступы, self в декларациях методов и крявый синтаксис лямбд. ПОтому что это все отличается от Java/C#/C++/бог знает, что
В точку. Я как раз хотел привести этот пример, а ты и сам привел.
Если бы вместо JS в браузере был Питон, то жалобы были бы не на классы, а на отступы.
Здравствуйте, Mamut, Вы писали:
M>Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз. Что не мешает тебе рассказывать сказки про то, что Питон/Руби будут лучше
Не знаю как руби, а Питон вполне себе строго-типизирован. Строку с числом просто так сложить не получится.
p.s.
Делаем ставки через сколько постов ты об этом забудешь.
M>>Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз. Что не мешает тебе рассказывать сказки про то, что Питон/Руби будут лучше
КБ>Не знаю как руби, а Питон вполне себе строго-типизирован. Строку с числом просто так сложить не получится.
Не путай статическуб типизацию и строгую типизацию.
КБ>p.s. КБ>Делаем ставки через сколько постов ты об этом забудешь.
Не забуду. Я,в отличие от тебя, не считаю, что строгая типизация == статическая типизация.
Здравствуйте, Mamut, Вы писали:
M>>>Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз. Что не мешает тебе рассказывать сказки про то, что Питон/Руби будут лучше КБ>>Не знаю как руби, а Питон вполне себе строго-типизирован. Строку с числом просто так сложить не получится. M>Не путай статическуб типизацию и строгую типизацию.
Это ты не путай. Претензии к говнотипизации яваскрипта, в первую очередь к ее не строгости.
КБ>>p.s. КБ>>Делаем ставки через сколько постов ты об этом забудешь. M>Не забуду. Я,в отличие от тебя, не считаю, что строгая типизация == статическая типизация.
Тогда почему тебя так удивляет что питон со строгой типизацией будет лучше говнотипизированного яваскрипта?
, с того, о чем тебе тут уже раз двадцать говорили:
Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей
Иметь ради этой фигни геморрой с изучением js-специфики — нафиг никому не надо, когда ты это уже наконец поймешь...
Нвеяно очередным постом про «революционный Дарт» на хабре.
В комментариях пошло стандартное нытье про JS:
Мы с пеленок мыслим классами, нам сложно принять прототипы. Почти все библиотеки так или иначе эмулируют классы. К чему бы это?
Парадигму Класс принять в разы проще(она есть во всех языках), чем Делегирующий прототип.
Лично мне бы хотелось использовать унифицированный подход к классовому ООП
На что возник у меня резонный вопрос:
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
Здравствуйте, мыщъх, Вы писали:
М>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
А сможете объяснить преимущество ООП кратко? Причем так, чтобы это было понятно ненавистникам ООП.
Принято считать, что если кратко объяснить не можете -- то и сами до конца не понимаете. Я лет 8 назад заспорил с ненавистником ООП, но ничего не смог ему доказать о полезности классов. Теперь, оглядываясь назад, понимаю, что и сам не все понимал.
М>>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
0K>А сможете объяснить преимущество ООП кратко? Причем так, чтобы это было понятно ненавистникам ООП.
0K>Принято считать, что если кратко объяснить не можете -- то и сами до конца не понимаете. Я лет 8 назад заспорил с ненавистником ООП, но ничего не смог ему доказать о полезности классов. Теперь, оглядываясь назад, понимаю, что и сам не все понимал.
С ненавистниками чего-либо разговаривать бесполезно. В подавляющем большинстве они не воспринимают никакой аргументации. Поэтому надо просто подождать, пока человека сам дорастет.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, Mamut, Вы писали:
M>>Нвеяно очередным постом про «революционный Дарт» на хабре.
M>>В комментариях пошло стандартное нытье про JS: M>>Парадигму Класс принять в разы проще(она есть во всех языках), чем Делегирующий прототип. M>>Лично мне бы хотелось использовать унифицированный подход к классовому ООП М>скажу о себе. лет десять назад ооп пытался учить дважды. сначала на турбо-паскале (с либой турбо-вижин), затем на плюсах. совершенно не вкурил, что такое классы, зачем они нужны и каким образом они помогут мне писать лучше, быстрее, разборчивее.
М>так ведь и не осилил ооп и на долгие годы забросил. а тут пару лет назад по долгу службы пришлось зарыться в js. и стало приходить понимание, что такое объекты и почему с использованием объектов программа получается намного более изящная, чем с традиционным процедурным подходом. делегирующий прототип у меня вызывает вселенский кайф и для моих задач он очень хорошо подходит.
М>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
По факту как в ООП языке можно к примеру использовать процедурный или функциональный подход, так обычно и обратно. Вопрос удобства Но жабаскрипт меня, например, забавляет давно (при чем принципиально для своего удовольствия использую его в областях не связанных с WEB). А учитывая что его можно выполнить практически на любой голой машине....
Здравствуйте, Ведмедь, Вы писали:
В>Здравствуйте, мыщъх, Вы писали:
М>>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
В>По факту как в ООП языке можно к примеру использовать процедурный или функциональный подход, так обычно и обратно. Вопрос удобства Но жабаскрипт меня, например, забавляет давно (при чем принципиально для своего удовольствия использую его в областях не связанных с WEB). А учитывая что его можно выполнить практически на любой голой машине....
в скрипте меня от прототипов реально прет. когда писал в целях диагности логгер объектов, сохраняющий их в текстовом представлении с форматированием в файл, то сначала у меня была одна функция dump, принимающая объект в качестве арумента. внтри огромный switch для всех типов объектов. ужос.
а потом понял, что к каждому объекту можно добавить прототип в виде метода dump, который дампит его с учетом специфики данного объекта. делаем walk всем объектом и зовем dump для каждого из них. хоть рекурисивно, хоть не рекурсивно. главное, что все красиво и вообще зашибись.
причем функция, внутри которой делается walk и вызывается dump может иметь свои настройки. например, для слишком длинных строк можно при желании дампить только начало и конец. можно смотреть содержимое строки и решать как дампить ее -- как есть или в виде hex-дампа.
короче, получается три совершенно незавсимых абстрактных слоя.
1) dump для каждого объекта. пишется независимо. например, дамп объета my_obj, состоящий из строки и пары функций, делает dump строкам и функциям, а dump строк и функций пишется независимо от всего остального, хотя дамп функции вызывает дамп строки. короче, получается, что у нас есть только дамп строки. а остальное получается путем преобразования объекта к строке с последующим ее дампом.
2) walker объектов. см. выше. объеты от корня обходятся так же как члены объекта my_obj.
3) дампер объектов -- в соответствии с настройками логгера ограничивает макс. длину строк для дампа, задает бинарный или hex-формат представления, а так же при необходимости киляет дубликаты.
и это возможно только потому, что у каждого объекта есть поддержка for x in obj, есть toString (перекрываемый мной при необходимости) и dump (мой собственный).
именно это и послужило толчком к переосмыслению моего отношения к ооп, ибо в процедурном стиле такая задача красиво не решается в принципе. ну нельзя присобачить к int'у метод toString и dump.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Mamut, Вы писали:
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык ... M>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами. M>Ась?
Ну дык, это же очевидно! На жабаскрипте пишут, в основном, не программисты =)
Здравствуйте, 0K, Вы писали:
0K>А сможете объяснить преимущество ООП кратко? Причем так, чтобы это было понятно ненавистникам ООП.
Программирования в концепции SOLID? Иначе говоря, преимущество ООП в удобстве написания живучего кода.
Однако надо понимать, что SOLID хоть и родился из ООП, языка с оным особенно не требует. Это же концепция проектирования, а не кодирования. В С я прекрасно его пользую, хотя там никакого ООП формально и нет.
А хвостатый задвинул ... я аж смутился от глубины его познаний и широты кругозора. =)))
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, 0K, Вы писали:
0K>>Здравствуйте, мыщъх, Вы писали:
М>классы это ИМХО очень неудачный термин. объекты лучше. объект это некая сущность. типа массив, список...
Класс это правильный термин,определяет множество элементов обладающих некоторыми свойствами. А объект это уже какой то конкретный элемент этого множества. Я думаю, что на выбор термина повлиял тот факт, что во времена создания теории ООП программист думающий что ему математика нафик не сдалась был явлением абстрактным, примерно как материальная точка или идеальный газ.
M>>Все скипнуто. Почему именно С++ и Java — это шуруповерты и отвертки, а JS — молоток, а не наоборот?
ЕА>Да ради бога, пусть будет наоборот
ЕА>Суть в том, что это разные инструменты, заточенные под разные задачи.
Ключевое выделено. Поэтому повторю, используя твои же аналогии: почему все согласны пользоваться шуруповертами и отвертками в случае других языков, но получая в руки, скажем дрель или молоток (JS), начинают ныть и пытаться превратить его в шуруповерт?
Здравствуйте, Mamut, Вы писали:
M>>>Все скипнуто. Почему именно С++ и Java — это шуруповерты и отвертки, а JS — молоток, а не наоборот?
ЕА>>Да ради бога, пусть будет наоборот
ЕА>>Суть в том, что это разные инструменты, заточенные под разные задачи.
M>Ключевое выделено. Поэтому повторю, используя твои же аналогии: почему все согласны пользоваться шуруповертами и отвертками в случае других языков, но получая в руки, скажем дрель или молоток (JS), начинают ныть и пытаться превратить его в шуруповерт?
Тоже повторю: работа у большинства такая — шурупы закручивать, те кто гвозди забивают, наоборот отвертки ругают и все норовят молоток выпросить, но их просто меньше.
Здравствуйте, anonymous, Вы писали:
C>>>>Типов не хватает в JS, типов. А программирование с классами — это самый простой способ типизации кода. A>>>Каких типов не хватает в JavaScript? C>>Статической типизации. Реально не хватает, особенно в больших приложениях. A>А классы тут как помогут?
Как ты себе представляешь статическую типизацию на прототипах? Я лично никак.
Здравствуйте, Cyberax, Вы писали:
C>>>>>Типов не хватает в JS, типов. А программирование с классами — это самый простой способ типизации кода. A>>>>Каких типов не хватает в JavaScript? C>>>Статической типизации. Реально не хватает, особенно в больших приложениях. A>>А классы тут как помогут? C>Как ты себе представляешь статическую типизацию на прототипах? Я лично никак.
А как ты себе представляешь статическую типизацию на классах, если её нет в языке?
Здравствуйте, anonymous, Вы писали:
C>>Как ты себе представляешь статическую типизацию на прототипах? Я лично никак. A>А как ты себе представляешь статическую типизацию на классах, если её нет в языке?
См. Dart.
M>>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
M>>Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
M>>Ась?
I>Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование,
Есть в Питоне, Руби и C#, никто не жалуется
I>пм и тд слишком сложно для общей массы. Массам сложно, они ноют. Ноют массы — значит им сложно. Все просто. Не надо выдумывать.
I>Вариантов три: I>1 Найти волшебную палочку и поднять уровень образования. I>2 Найти волшебную палочку и сделать JS пригодным для масс. I>3 Забить на волшебную палочку.
M>>Есть в Питоне, Руби и C#, никто не жалуется
I>В C# многие даже про yield не знают, а питон и руби на массы не тянут. Ты еще лисп вспомни
Ты про yield return, или про Thread.Yield()? Это, как-бы, совсем разные штуки.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
I>>В C# многие даже про yield не знают, а питон и руби на массы не тянут. Ты еще лисп вспомни
E__>Ты про yield return, или про Thread.Yield()? Это, как-бы, совсем разные штуки.
Здравствуйте, Mamut, Вы писали:
YKU>>Ты не в курсе, как и почему 99% исспользует js? M>Так же, как и любой другой язык
Бида-бида... Сорву покровы: те, кто full-time(или что-то в этом роде) на этом яваскрипте пишут — те и не ноют. Но таких примерно столько-же, сколько твоих Хаскелистов.
M>Я надеялся, что ты объсянишь, что такое «неудобный», «непривычный» и т.п. Но, видимо, н судьба.
А, теперь твоя очередь заниматься "дурацким паясниченьем"?
П>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей типа "добавить еще две строчки текста вон к тому div'у" или "сделать динамическую менюшку с товарами".
Это хорошо если второй. А то бывает, что где-то пятый. Я вот по работе сталкиваюсь с js. Максимум 1% от всего рабочего времени(причем это не браузерный js). Оно мне надо — его изучать на высоком уровне? Да мне в нем три строчки в месяц приходится писать/править.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Пацак, Вы писали:
П>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей типа "добавить еще две строчки текста вон к тому div'у" или "сделать динамическую менюшку с товарами".
П>Теперь представь: у тебя есть нормальный классический автомобиль, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет из себя двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления. Правда те, кто ездит на нем ежедневно, утверждают, что после двух-трех тысяч километров практики на нем можно научиться перепрыгивать лужи и переезжать через реки по бобровым плотинам — но тебе-то оно нахрена, если ты всего-то хотел выехать с семьей на шашлыки к соседнему озеру?
Здравствуйте, Mamut, Вы писали:
M>>>Все скипнуто. Почему именно С++ и Java — это шуруповерты и отвертки, а JS — молоток, а не наоборот?
ЕА>>Да ради бога, пусть будет наоборот
ЕА>>Суть в том, что это разные инструменты, заточенные под разные задачи.
M>Ключевое выделено. Поэтому повторю, используя твои же аналогии: почему все согласны пользоваться шуруповертами и отвертками в случае других языков, но получая в руки, скажем дрель или молоток (JS), начинают ныть и пытаться превратить его в шуруповерт?
Кстати, дрелью можно завинчивать шурупы , многие модели дрелей это умеют.
Здравствуйте, Пацак, Вы писали:
П>Теперь представь: у тебя есть нормальный классический автомобиль, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет из себя двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления. Правда те, кто ездит на нем ежедневно, утверждают, что после двух-трех тысяч километров практики на нем можно научиться перепрыгивать лужи и переезжать через реки по бобровым плотинам — но тебе-то оно нахрена, если ты всего-то хотел выехать с семьей на шашлыки к соседнему озеру?
А почему бы и нет так?
Теперь представь: у тебя есть двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет нормальный классический автомобиль.
YKU>>>Ты не в курсе, как и почему 99% исспользует js? M>>Так же, как и любой другой язык
YKU>Бида-бида... Сорву покровы: те, кто full-time(или что-то в этом роде) на этом яваскрипте пишут — те и не ноют. Но таких примерно столько-же, сколько твоих Хаскелистов.
Тогда в чем проблема? Почему ты считаешь, что надо в обязхательном порядке менять язык?
M>>Я надеялся, что ты объсянишь, что такое «неудобный», «непривычный» и т.п. Но, видимо, н судьба.
YKU>А, теперь твоя очередь заниматься "дурацким паясниченьем"?
Здравствуйте, yoriсk.kiev.ua, Вы писали:
YKU>Здравствуйте, Mamut, Вы писали:
YKU>>>Ты не в курсе, как и почему 99% исспользует js? M>>Так же, как и любой другой язык
YKU>Бида-бида... Сорву покровы: те, кто full-time(или что-то в этом роде) на этом яваскрипте пишут — те и не ноют. Но таких примерно столько-же, сколько твоих Хаскелистов.
Здравствуйте, anonymous, Вы писали:
A>А почему бы и нет так? A>
A>Теперь представь: у тебя есть двухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления, на котором ты ежедневно ездишь по городу. Но чтобы раз в месяц выехать за город ты его использовать не можешь, а то транспортное средство, которое тебе предлагают взять напрокат, представляет нормальный классический автомобиль.
Потому что ездить в автошколах учат все-таки на классических автомобилях.
Здравствуйте, Mamut, Вы писали:
M>Ага. Аналогии, агага. Только почему-то во всех аналогиях JS пытаются выставить, как нечто противоестествненое. Нуну.
Ты, кажется, просил объяснить, что такое "непривычный" — ну так я тебе объяснил. А уж естественно оно или нет — это вопрос десятый. Китайцы вон у живых обезьян мозги едят — тоже вполне естественный процесс питания, если вдуматься...
M>Как ты там нарисовал? «вухколесный экипаж с управлением от штурвала и переставленными местами педалями газа/сцепления». Хм. Почему-то люди ездят на мотоциклах, в которых управление явно не автомобильное, и не жужжат.
Да ну? А у меня вот почему-то есть подозрение, что если среднестатистического автолюбителя посадить на мотоцикл — сходу он на нем далеко не уедет. А уж далеко, безопасно и быстро — тем более. Либо в ГИБДД сидят идиоты, зачем-то придумавшие под это транспортное средство отдельную категорию прав.
M>Но дадададада, JS — зло, из него срочно надо делать очередной С++, ага, как же
I>>>>>Это нынье показывает ровно то, о чем я говорил три года назад именно тебе — фп, генераторы, метапрограммирование,
M>>>>Есть в Питоне, Руби и C#, никто не жалуется
I>>>В C# многие даже про yield не знают,
M>>И? Почему я не вижу стенаний «нам не нужен Linq, нам не нужен yield, нам не нужны делегаты, верните все, как было, чтобы от Java/C++ не отличалось»?
I>Ты ж внимательно читай: "многие даже про yield не знают" Потому и нет стенаний. На С# можно сносно писать "как на С++ и Джаве".
На Javascript можно спокойно писать в процедурном стиле, и?
I>>>а питон и руби на массы не тянут. Ты еще лисп вспомни
M>>Сравнил член с пальцем. Питон и руби — это вполне себе массы, и никто не ноет.
I>Это экзотика относительно JS. JS знают и питинщики и рубисты и джависты и сиплюсники и дотнетчики. Так что если речь про массы, то JS это и есть массы, а питон и перл — так себе.
И? Судя по воплям на этом форуме, никто нифига не знает JS, и — самое главное — не прилагают никаких усилий к тому, чтобы узнать.
M>>>>3-й пункт
I>>>Судя по "надо что-то срочно менять ... а восприятие оного программистами." тебе нравятся п1 и п2.
M>>Нет, пункт 2 мне не нравится точно. Если ты не способен это понять из моих здесь сообщений, то увы
I>Это ты не способен понять, что хочешь поменять людей или сложившийся естественным образом стандарт.
Пытаться людей стоит всегда. Более того, это — постоянно протекающий процесс. Фраза «сложившийся естественным образом стандарт» вообще ускользает от моего упоминания.
C>>>Как ты себе представляешь статическую типизацию на прототипах? Я лично никак. A>>А как ты себе представляешь статическую типизацию на классах, если её нет в языке? C>См. Dart.
Какая ж это статическая типизация? Это, скорее, аннотации типов, чтобы типа компилятору помочь. Опциональность этой типизации сводит все на нет.
А таким образом можно и prototype-based язык сделать и назвать его статически типизированным
Цитирую википедию:
Almost all prototype-based systems are based on interpreted and dynamically typed languages. Systems based on statically typed languages are technically feasible, however. The Omega language discussed in Prototype-Based Programming[2] is an example of such a system, though according to Omega's website even Omega is not exclusively static, but rather its "compiler may choose to use static binding where this is possible and may improve the efficiency of a program."
Здравствуйте, Mamut, Вы писали:
M>Какая ж это статическая типизация? Это, скорее, аннотации типов, чтобы типа компилятору помочь. Опциональность этой типизации сводит все на нет. M>А таким образом можно и prototype-based язык сделать и назвать его статически типизированным
Очевидно, что отказаться от прототипов. Которые особо удачным изобретением не являются — это скорее способ хоть как-то структурировать безтиповой JavaScript.
Метатипы в Питоне — это хороший пример того, как можно более красиво сделать динамический язык.
M>>Какая ж это статическая типизация? Это, скорее, аннотации типов, чтобы типа компилятору помочь. Опциональность этой типизации сводит все на нет. M>>А таким образом можно и prototype-based язык сделать и назвать его статически типизированным C>Очевидно, что отказаться от прототипов.
Я не спросил «каким», я сказал «таким»
C>Которые особо удачным изобретением не являются — это скорее способ хоть как-то структурировать безтиповой JavaScript.
К.О. напоминает, что прототипы появились задолго до JS
C>Метатипы в Питоне — это хороший пример того, как можно более красиво сделать динамический язык.
Если тебе что-то непонятно/непривычно, не значит, что понятное/привычное лучше
А вообще, достаточно взглянуть в Википедию, чтобы увидеть, что еще в 1991-м году предлагался прототипный язык в стиле Dart'а — то есть с верификацией типов на этапе компилирования. Но да, нет пути, кроме C++-liek OOП, агаага
Здравствуйте, Mamut, Вы писали:
M>Аналогия объяснением не является.
Является. Не путай с доказательством.
M>Ну, раз ты так настаиваешь на продолжении аналогий...
Да нет, совершенно не настаиваю — для меня вполне достаточно того факта, что автодороги (за редким исключением) открыты в равной степени и для мотоциклов и для автомобилей. Тогда как js не предлагает в качестве альтернативы "двухколесной езде" практически вообще ничего.
П>>Комплексы, комплексы и агрессия... M>Ну, судя по всему, они у тебя
Я не создавал здесь топиков в стиле "твари и сволочи, почему вы обижаете мою любимую игрушку?!"
Здравствуйте, Mamut, Вы писали:
M>На Javascript можно спокойно писать в процедурном стиле, и?
В качестве иллюстрации — покажи, будь добр, процедурную реализацию такой простенькой вещи, как изменение цвета фона DIV'а при прохождении мыши над ним.
E__>>Это хорошо если второй. А то бывает, что где-то пятый. Я вот по работе сталкиваюсь с js. Максимум 1% от всего рабочего времени(причем это не браузерный js). Оно мне надо — его изучать на высоком уровне? Да мне в нем три строчки в месяц приходится писать/править.
A>Тогда каким же образом тебе удаётся столкнуться со всеми теми характеристиками языка, что вызывают такую реакцию на него?
А мне и не приходится с ними сталкиваться.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
M>>Ну, раз ты так настаиваешь на продолжении аналогий...
П>Да нет, совершенно не настаиваю — для меня вполне достаточно того факта, что автодороги (за редким исключением) открыты в равной степени и для мотоциклов и для автомобилей. Тогда как js не предлагает в качестве альтернативы "двухколесной езде" практически вообще ничего.
А что, классический автомобиль предлагает альтернативу? Нет, четыре колеса, руль, газ-тормоз — вперед.
Или что, мотоцикл предлагает альтернативу? Нет, два колеса, руль, газ-тормоз (не на тех местах, где надо ) — вперед.
Или тебе не нравится, что в браузере есть только яваскрипт? Ну а мне не нравится, что не везде есть дорожки для велосипедистов — и?
Тем более, что выбор уже есть — от Coffeescript'а до Objective-J до фреймворков, эмулирующих твой любимый C++-like ООП
M>>На Javascript можно спокойно писать в процедурном стиле, и?
П>В качестве иллюстрации — покажи, будь добр, процедурную реализацию такой простенькой вещи, как изменение цвета фона DIV'а при прохождении мыши над ним.
Здравствуйте, Mamut, Вы писали:
M>А что, классический автомобиль предлагает альтернативу? Нет, четыре колеса, руль, газ-тормоз — вперед. M>Или что, мотоцикл предлагает альтернативу? Нет, два колеса, руль, газ-тормоз (не на тех местах, где надо ) — вперед.
Классические дороги предлагают альтернативу — я могу сам выбирать, ехать ли мне по ним на двух или на четырех колесах.
M>Или тебе не нравится, что в браузере есть только яваскрипт? Ну а мне не нравится, что не везде есть дорожки для велосипедистов — и?
Можешь ездить в метре от обочины, по любым дорогам. В любом случае тебя никто не заставляет использовать для передвижения именно велосипед. Тогда как браузер+жавоскрипт в большинстве случаев являются практически неразрывной и незаменяемой связкой.
M>Тем более, что выбор уже есть — от Coffeescript'а до Objective-J до фреймворков, эмулирующих твой любимый C++-like ООП
Твой вопрос, насколько мне помнится, был не про них, а про JS. Конкретно — про то, почему люди не любят его "вкусности" и продолжают думать в традиционном стиле. Теперь мы пришли к смене языка и сооружению костылей в виде эмулирующих фреймворков. Логика, если честно, просто поражает.
M>>А что, классический автомобиль предлагает альтернативу? Нет, четыре колеса, руль, газ-тормоз — вперед. M>>Или что, мотоцикл предлагает альтернативу? Нет, два колеса, руль, газ-тормоз (не на тех местах, где надо ) — вперед.
П>Классические дороги предлагают альтернативу — я могу сам выбирать, ехать ли мне по ним на двух или на четырех колесах.
Я так предполагаю, что ты проводишь аналогию классическая дорога == браузер. А если браузер == железная дорога?
M>>Или тебе не нравится, что в браузере есть только яваскрипт? Ну а мне не нравится, что не везде есть дорожки для велосипедистов — и?
П>Можешь ездить в метре от обочины, по любым дорогам. В любом случае тебя никто не заставляет использовать для передвижения именно велосипед. Тогда как браузер+жавоскрипт в большинстве случаев являются практически неразрывной и незаменяемой связкой.
Выше, про железную дорогу.
M>>Тем более, что выбор уже есть — от Coffeescript'а до Objective-J до фреймворков, эмулирующих твой любимый C++-like ООП
П>Твой вопрос, насколько мне помнится, был не про них, а про JS. Конкретно — про то, почему люди не любят его "вкусности" и продолжают думать в традиционном стиле.
Так никто и не ответил, почему не любят и продолжают думать, кроме детсадовского «неудобно».
П>Теперь мы пришли к смене языка и сооружению костылей в виде эмулирующих фреймворков.
Никто никуда не пришел. Ты жалуешься на отсутсвие альтернатив, альтернативы я показал.
Здравствуйте, Eugeny__, Вы писали:
E__>>>Это хорошо если второй. А то бывает, что где-то пятый. Я вот по работе сталкиваюсь с js. Максимум 1% от всего рабочего времени(причем это не браузерный js). Оно мне надо — его изучать на высоком уровне? Да мне в нем три строчки в месяц приходится писать/править. A>>Тогда каким же образом тебе удаётся столкнуться со всеми теми характеристиками языка, что вызывают такую реакцию на него? E__>А мне и не приходится с ними сталкиваться.
Тогда, в контексте обсуждения, разговор не от таких, как ты.
Здравствуйте, Mamut, Вы писали:
M>Я так предполагаю, что ты проводишь аналогию классическая дорога == браузер. А если браузер == железная дорога?
Тогда это требует доказательств. Потому что я, например, в упор не понимаю, что такого исключительного в браузерном коде, что для для его написания нельзя использовать, например, не-прототипное ООП.
M>Так никто и не ответил, почему не любят и продолжают думать, кроме детсадовского «неудобно».
Ничего детсадовского тут нет. Привычность и удобство использования — ключевое свойство любого инструмента.
M>Никто никуда не пришел. Ты жалуешься на отсутсвие альтернатив, альтернативы я показал.
Проблема в том, что эти альтернативы сделали как раз те люди, которым не нравился оригинальный javascript.
Здравствуйте, anonymous, Вы писали:
П>>Потому что ездить в автошколах учат все-таки на классических автомобилях. A>Да, ну? От этого, значит, автомобили с коробкой-автоматом становятся жутко неудобными?
Для владельцев двухколесных экипажей с управлением от штурвала и переставленными педалями — да, наверное.
A>Короче, прекращай играть в ассоциации.
Здравствуйте, Пацак, Вы писали:
П>>>Потому что ездить в автошколах учат все-таки на классических автомобилях. A>>Да, ну? От этого, значит, автомобили с коробкой-автоматом становятся жутко неудобными? П>Для владельцев двухколесных экипажей с управлением от штурвала и переставленными педалями — да, наверное.
Подожди, мы же говорим, о классических автомобилях.
A>>Короче, прекращай играть в ассоциации. П>Прекращай подменять их на лету.
M>>Я так предполагаю, что ты проводишь аналогию классическая дорога == браузер. А если браузер == железная дорога?
П>Тогда это требует доказательств. Потому что я, например, в упор не понимаю, что такого исключительного в браузерном коде, что для для его написания нельзя использовать, например, не-прототипное ООП.
Доказательства должны быть сначала с твоей стороны. Например, что JS — «дальше твое описание странного средства»
M>>Так никто и не ответил, почему не любят и продолжают думать, кроме детсадовского «неудобно».
П>Ничего детсадовского тут нет. Привычность и удобство использования — ключевое свойство любого инструмента.
Опять это слово привычность, агага. Я привык к Erlang'у. Давай все языки превратим в Erlang?
M>>Никто никуда не пришел. Ты жалуешься на отсутсвие альтернатив, альтернативы я показал.
П>Проблема в том, что эти альтернативы сделали как раз те люди, которым не нравился оригинальный javascript.
Где тут проблема? Всегда найдутся люди, которые захотят из одного языка сделать другой И это справедливо для любого языка.
Не нравтся JS? Бери ASP.NET, GWT и т.п. на них можно писать, вообще не прикасаясь к JS
Здравствуйте, Mamut, Вы писали:
M>Доказательства должны быть сначала с твоей стороны. Например, что JS — «дальше твое описание странного средства»
Это нужно доказывать? Странно, я полагал, что это изначально следует из постановки вопроса — "почему программисты не хотят мириться с необычностью джавоскрипта".
M>Опять это слово привычность, агага. Я привык к Erlang'у. Давай все языки превратим в Erlang?
Сильно не уверен, что это возможно — Эрланг это ну о-о-очень специфическая штучка.
П>>Проблема в том, что эти альтернативы сделали как раз те люди, которым не нравился оригинальный javascript. M>Где тут проблема?
Изначально ты возмущался тому, что люди хотят (цитирую) "использовать унифицированный подход к классовому ООП" вместо православного программирования на прототипах. Теперь сам же предлагаешь для этого костыли.
Имхо, единственный недостаток JS — это относительная дороговизна исполнения (затраны на парсинг, анализ и компиляцию), — и абсолютная невозможность сделать под него нормальную IDE. Любой мало-мальски приличный фреймворк для UI на нём начинает свой вес от ~4Mb исходов, а если взять крупные — то счет на десятки. Все текущие решения с IDE — полуработающие костыли на комментариях.
Dart же способен решить обе проблемы, и со скоростью стартапа и с IDE.
Здравствуйте, Пацак, Вы писали:
П>Тогда это требует доказательств. Потому что я, например, в упор не понимаю, что такого исключительного в браузерном коде, что для для его написания нельзя использовать, например, не-прототипное ООП.
А вот это уже интересный вопрос. Действительно, почему внутри браузера — именно джаваскрипт?
(Ну, скажем, в одном отдельно взятом браузере был ещё VBScript, но он скорее мёртв, чем жив.)
У меня есть некоторые гипотезы на сей счёт, но я в них совершенно не уверен.
Скажем, так: лично я не очень себе представляю, как бы мог выглядеть язык с не-прототипным ООП, бегающий внутри браузера.
Очень может быть, что это от убогости лично моей фантазии.
Так что не могли бы вы изобразить некоторый набросок того, как был бы устроен такой язык?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, anonymous, Вы писали:
A>Да, ты сам об этом сказал, в сообщении про автошколы.
...в котором речь все также шла про сравнение классических авто с непривычными двухколесными чудищами. С фига ли ты тут приплел автоматические коробки (которые ставятся ровно на те же классические авто) — неясно совершенно. Если это был такой тонкий намек, что вся специфичность js сделана исключительно чтобы им было проще пользоваться (а с коробками оно именно так), то таки нет — простоты то же прототипное ООП языку не добавляет. А вот разбираться в нем зачем-то приходится.
A>P.S. Мы можем долго ещё разговаривать о машинках, если тебе нечего сказать по существу.
Мы с тобой можем вообще не разговаривать — разговор изначально шел с Мамутом.
Здравствуйте, Mamut, Вы писали:
YKU>>Бида-бида... Сорву покровы: те, кто full-time(или что-то в этом роде) на этом яваскрипте пишут — те и не ноют. Но таких примерно столько-же, сколько твоих Хаскелистов. M>Тогда в чем проблема?
Ты вообще читаешь, что тебе отвечают? На Хабре твоём, я
?
M>Почему ты считаешь, что надо в обязхательном порядке менять язык?
Почему в обязательном? Вариантов два: поменять язык или поменять программистов. Я понимаю, что это удивительно и даже пугающе необьяснимо, но программисты за первый вариант. Можешь удивляться сколько хочешь, считать всех "дурацкими паяцами", но такова обьективаня реальность, данная нам в чём-то там.
M>Ты так и не ответил на этот вопрос.
В словаре посмотри. Что означает "словарь" обьяснять?
Здравствуйте, Пацак, Вы писали:
A>>Да, ты сам об этом сказал, в сообщении про автошколы. П>...в котором речь все также шла про сравнение классических авто с непривычными двухколесными чудищами. С фига ли ты тут приплел автоматические коробки (которые ставятся ровно на те же классические авто) — неясно совершенно. Если это был такой тонкий намек, что вся специфичность js сделана исключительно чтобы им было проще пользоваться (а с коробками оно именно так), то таки нет — простоты то же прототипное ООП языку не добавляет. А вот разбираться в нем зачем-то приходится.
Нет, мне просто моё сравнение больше нравится. При этом оно ничем не хуже твоего. Имеем коробку передач в виде ООП и различную её реализацию.
A>>P.S. Мы можем долго ещё разговаривать о машинках, если тебе нечего сказать по существу. П>Мы с тобой можем вообще не разговаривать — разговор изначально шел с Мамутом.
Здравствуйте, StandAlone, Вы писали:
SA>Для начала — давайте сделаем на JS функционально полный аналог класса .NET String, SortedDictionary и ObservableCollection.
Здравствуйте, мыщъх, Вы писали:
М>скажу о себе. лет десять назад ооп пытался учить дважды. М>так ведь и не осилил ооп и на долгие годы забросил. а тут пару лет назад по долгу службы пришлось зарыться в js. и стало приходить понимание М>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
Суть выделена. Давно замечено, что оторванное от жизни изучение предмета в разы менее эффективно, чем изучение на конкретных задачах с решением конкретных проблем.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, мыщъх, Вы писали:
М>>скажу о себе. лет десять назад ооп пытался учить дважды. М>>так ведь и не осилил ооп и на долгие годы забросил. а тут пару лет назад по долгу службы пришлось зарыться в js. и стало приходить понимание М>>сейчас начал курить java и уже кое-что понимаю в этом вышем ооп. раньше не понимал. вот такой он жаба-скрипт!
IT>Суть выделена. Давно замечено, что оторванное от жизни изучение предмета в разы менее эффективно, чем изучение на конкретных задачах с решением конкретных проблем.
ммм... суть в том, что ооп начинал учить с паскаля (который трубо) и с плюсов. причем с паскалем вопрос был жизни и смерти. тогда я был никому не известный, без опыта и без денег. сунулся в большой город (не москву) в надежде найти что-то по своему профилю. и попалась хорошая работа. вот только турбо вижин был обязательным условием, так что я набросился на него как бык на зебру, т.к. других альтернатив не было. но... увы... не потянул.
а js стал курить в порядке собственной инициативы и главным образом в свбодное от основной работы время. очень прикололи возможности писать код вида:
вот сразу понимаешь, что counter это такой объект, со своим внутренним состоянием. и при каждом вызове он печатает значение на 1 больше, а текущее значение у него внутри. на чистом си тут будет или глобальная переменная или статическая или в counter нужно будет передавать переменную по указателю. причем, первые два решения имеют слишком много побочных эффектов, а последнее уродливо.
кстати, вы в сурсы gzip смортели? я вот щас в них втыкаю и в очередной раз офигиваю. это же надо так запутать все. ну вот прикиньте, функция foo() расживает чего-то. именно так, без аргументов!!! а что она разжимает -- хз. буфер или стрим. в сурсах полчища скрытых аргументов. а все почему? а потому что нельзя красиво реализовать get_byte() на си без побочек.
после js ко мне пришло понимание почему народ мигрировал на плюсы и как на них писать, чтобы код не превращался в кошмар.
то есть я полностью согласен с вами, что в абстрактных рамках языки не выучить сложее бейсика. нужны реальные задачи. но и с реальными задачами -- плюсы это слишком крутой ухаб на дороге. такой даже с разбегу не взять. т.е. программа работать, конечно, будет, но...
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Пацак, Вы писали:
A>>Нет, мне просто моё сравнение больше нравится. При этом оно ничем не хуже твоего. П>Хуже, и я выше уже объяснил, почему. То, что ты это объяснение проигнорил — означает, что ты просто пытаешься подогнать вопрос под ответ.
Я не согласен с твоим объяснением и считаю, что ты пытаешься через негативные аналогии что-то там показать про JavaScript. Дальше-то что, ещё про машинки?
Здравствуйте, StandAlone, Вы писали:
SA>>>Для начала — давайте сделаем на JS функционально полный аналог класса .NET String, SortedDictionary и ObservableCollection. A>>Для чего? SA>Ну мы полноценное RIA на нем будем колбасить, или демонстрационные поделки?
Наличие .NET-подобных сущностей в реализации является неотъемлемым признаком полноценных RIA?
SA>Кстати, как на жабоскрипте замутить поддержку прозрачного прокси для удаленного сервиса с автоматическим маршаллингом параметров? SA>А сортировку и фильтрацию, некий аналог LINQ — ведь наше RIA требует хорошей реализации логики презентации. SA>А давайте забабахаем разные контекстные меню и диалоги? SA>Ну, хотя бы динамический пейджинг сделаем, с кешированием на клиенте полученных данных?
Как? Берёшь редактор и пишешь.
SA>Что, не получается?
Получается.
SA>Никакой гибкости, переносимости, реюзабельности и чистоты структуры кода?
Всё есть.
SA>Про перформанс лучше даже не заикаться, сотня записей в гриде — и привет, тормоза?
Мы про парадигму или что?
SA>Именно такой вердикт и был после знакомства с Sencha Touch.
И что это нам говорит, кроме того, что Sencha Touch тебя не устроил?
SA>Хоть они и шагнули достаточно далеко от ужаса нативного ECMAScript, но для серьезной разработки все это, увы, не торт.
Здравствуйте, anonymous, Вы писали:
A>Я не согласен с твоим объяснением и считаю, что ты пытаешься через негативные аналогии что-то там показать про JavaScript. Дальше-то что, ещё про машинки?
Дальше за несогласием, по идее, должны следовать аргументированные возражения. Но ты, как я понял, зациклился на машинках.
Здравствуйте, Пацак, Вы писали:
A>>Я не согласен с твоим объяснением и считаю, что ты пытаешься через негативные аналогии что-то там показать про JavaScript. Дальше-то что, ещё про машинки? П>Дальше за несогласием, по идее, должны следовать аргументированные возражения. Но ты, как я понял, зациклился на машинках.
Но ты тоже нас аргументами не балуешь, всё про машинки рассказываешь.
Здравствуйте, StandAlone, Вы писали:
SA>А сортировку и фильтрацию, некий аналог LINQ — ведь наше RIA требует хорошей реализации логики презентации. jsinq — я использовал, мне очень подошло. Это так, просто в копилку.
Здравствуйте, мыщъх, Вы писали:
М>counter = my_range(666,999); М>while(1) М>{ М>print(counter()); М>}
М>вот сразу понимаешь, что counter это такой объект, со своим внутренним состоянием. и при каждом вызове он печатает значение на 1 больше, а текущее значение у него внутри. на чистом си тут будет или глобальная переменная или статическая или в counter нужно будет передавать переменную по указателю. причем, первые два решения имеют слишком много побочных эффектов, а последнее уродливо.
Здравствуйте, Пацак, Вы писали:
A>>Но ты тоже нас аргументами не балуешь, всё про машинки рассказываешь. П>Аргументов в топике выше крыши, и далеко не только от меня. Имеющий глаза — да увидит. С любителями же докапываться до аналогий разговаривать, собственно, не о чем.
По этому поводу я тебе уже ответил, но ты продолжаешь со мной разговаривать.
П>По крайней мере до тех пор, пока они не смогут внятно и аргументированно обрисовать суть своих к этой аналогии претензий.
Так это ж у тебя претензии к моей аналогии, правда невнятные какие-то.
Здравствуйте, anonymous, Вы писали:
SA>>Именно такой вердикт и был после знакомства с Sencha Touch.
A>И что это нам говорит, кроме того, что Sencha Touch тебя не устроил?
а есть что-то, на чем можно сделать нормальный интерфейс в браузере?
Я тут как раз выбираю, на чем сделать морду к одной небольшой учетной системке, так что бы нормально работало и на десктопе, и на паншетках, и чтобы, если уж приспичит, можно было с телефона зайти. Посмотрев демки всего, что смог найти в гугле, включая sencha, jquery grid, telerik kendo ui — так и не нашел ни одного приличного грида — даже на моем core i7 многие демки тормозят, а на телефонах и планшетках фактически вообще не шевелятся Ничего сверхестественного не надо, просто обычный грид с сортировками, группировками итд.
Пока пришел к выводу, что вариантов нет, кроме как сделать по клиенту для каждой платформы
Здравствуйте, Константин Б., Вы писали:
КБ>Здравствуйте, мыщъх, Вы писали:
КБ>Ну просто жуть как уродливо %)
"некрасивых женщин не бывает, бывает мало водки" (с)
КБ>
"я столько не выпью" (с)
а так вы все правильно написали. только кол-во сущностей у вас существенно больше даже в этом простом примере. у меня -- два. у вас -- четыре.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
M>>Доказательства должны быть сначала с твоей стороны. Например, что JS — «дальше твое описание странного средства»
П>Это нужно доказывать? Странно, я полагал, что это изначально следует из постановки вопроса — "почему программисты не хотят мириться с необычностью джавоскрипта".
Определение необычности в студию
M>>Опять это слово привычность, агага. Я привык к Erlang'у. Давай все языки превратим в Erlang?
П>Сильно не уверен, что это возможно — Эрланг это ну о-о-очень специфическая штучка.
А мне пофиг. Я хочу, чтобы все языки были такие же, как Erlang
П>>>Проблема в том, что эти альтернативы сделали как раз те люди, которым не нравился оригинальный javascript. M>>Где тут проблема?
П>Изначально ты возмущался тому, что люди хотят (цитирую) "использовать унифицированный подход к классовому ООП" вместо православного программирования на прототипах. Теперь сам же предлагаешь для этого костыли.
Цитату, где я говорю про правсолавность прототипного ООП в студию
YKU>>>Бида-бида... Сорву покровы: те, кто full-time(или что-то в этом роде) на этом яваскрипте пишут — те и не ноют. Но таких примерно столько-же, сколько твоих Хаскелистов. M>>Тогда в чем проблема?
YKU>Ты вообще читаешь, что тебе отвечают? На Хабре твоём, я
Читаю. Итак, дано: фуллтайм программисты на JS не ноют (или ноют совсем по другим причинам), так в чем проблема-то? В индусах?
M>>Почему ты считаешь, что надо в обязхательном порядке менять язык?
YKU>Почему в обязательном? Вариантов два: поменять язык или поменять программистов. Я понимаю, что это удивительно и даже пугающе необьяснимо, но программисты за первый вариант. Можешь удивляться сколько хочешь, считать всех "дурацкими паяцами", но такова обьективаня реальность, данная нам в чём-то там.
M>>Ты так и не ответил на этот вопрос.
YKU>В словаре посмотри. Что означает "словарь" обьяснять?
Повторю:
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? )
M>И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Ты сможешь нятно и объективно ответить на эту цитату. Как только начнешь ныть про прототипное наследование, перечитываешь выделенное.
Ну, так с этим я и не спорю
S>Я уже рассказывал про аналогичную ошибку, которую мы сделали в Java. Но там мембер был руками помечен как static, т.е. шансы допустить такую ошибку — на пару десятичных порядков ниже, чем пропустить var. S>Поймать пропущенный var тестами — крайне сложно. S>При этом мотивация так делать мне совершенно непонятна. Неужели доступ к global scope нужен так часто, что его имеет смысл делать по дефолту? S>Выглядит как ошибка дизайна языка.
A>>Но ты тоже нас аргументами не балуешь, всё про машинки рассказываешь.
П>Аргументов в топике выше крыши, и далеко не только от меня. Имеющий глаза — да увидит.
Здравствуйте, Mamut, Вы писали:
M>Определение необычности в студию
Значительно отличающееся от привычного. Применительно к прототипному ООП, например — от ООП классического.
M>А мне пофиг. Я хочу, чтобы все языки были такие же, как Erlang
И много вас таких хотящих? Или ты реально не видишь разницу между "я привык" и "большинство привыкло"?
M>Цитату, где я говорю про правсолавность прототипного ООП в студию
Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы.
Здравствуйте, Mamut, Вы писали:
П>>Что мешает существовать внутри браузера чему-нибудь типа питона, например? M>Ничего. Был бы Питон, началось бы нытье, «ах, что за убогое ООП с этим вашим self'ом»
Да вот ведь — питон есть, а оно почему-то не начинается.
Здравствуйте, Mamut, Вы писали:
M>Есть в Питоне, Руби и C#, никто не жалуется
Размечтался. Жалуются и еще как. Ладно б на ФП, некоторые даже на скромный шарповский вывод типов бочку катят.
I>>пм и тд слишком сложно для общей массы
ПМ вовсе не сложная штука, там все тривиально и на 100% соответствует простейшим ожиданиям (от ПМ в SQL, к примеру, вроде пока никто не помер). Или ты про алгебраические типы ака discriminated unions?
Даже сложность монад сильно преувеличена — в грамотно причесанном виде у вменяемых разработчиков оно никаких проблем не вызывает, особенно если в математику не лезть.
Здравствуйте, Mamut, Вы писали:
M>И? Почему я не вижу стенаний «нам не нужен Linq
Выборочная слепота? Простейший поиск по форумам:
0K>Сума все с этим Linq посходили! Он вообще не особо то нужен, имхо.
...
ВВ> Синтаксис (linq, прим. мое) сам по себе — не нужен. Его полезность даже в C# — это большой вопрос. Я как-то создавал подобную тему и где-то половина отписавшихся высказывалась, что они синтаксисом не пользуются или просто не считают его особенно полезным.
...
0> По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?".
...
M>Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ.
Здравствуйте, Sinclair, Вы писали:
S>Кстати, есть и конкретные косяки. Вот только что всплыло: http://habrahabr.ru/blogs/nodejs/132078/ S>Поймать пропущенный var тестами — крайне сложно. При этом мотивация так делать мне совершенно непонятна. Неужели доступ к global scope нужен так часто, что его имеет смысл делать по дефолту? Выглядит как ошибка дизайна языка.
Если вспомнить историю создания языка, то задумывался он, как язык, которым смогут пользоваться и непрограммисты, что было весьма актуально на заре веба. Отсюда, вероятно, и тянется возможность опускать var, в простых случаях можно обойтись глобальными переменными и не утруждать себя специальными знаниями об областях видимости.
Здравствуйте, Пацак, Вы писали:
П>>>Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы. A>>Нет никаких религиозных мотивов, есть история. Он был создан прототипным, и вот как раз изменён может быть только по религиозным мотивам. П>Никто и не предлагает его менять. Но ждать, что те, кто его используют изредка, будут с восторгом относиться к ситуации "много траха — мало профита" — это имхо как-то черезчур оптимистично.
Здравствуйте, Пацак, Вы писали:
A>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием. П>Столкнешься. Доработку чужих скриптов еще никто не отменял.
За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков.
Здравствуйте, anonymous, Вы писали:
A>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием.
Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их.
A>А в последние пару лет, в связи с появлением различных фреймворков, даже не на 5 минут, а поболее. Не подходит объяснение.
Подходит. Если читать тред сначала — то подходит. Именно с этого всё и началось: на вопрос, зачем язык, где костыль на костыле и без очередного фреймфорка шагу не ступишь набижали товарищи самураи и популярно стали обьяснять, что "различных фреймворков" — это путь трусов-индусов и надо подстраивться, а лучше парадигм могут быть парадигмы, на которых еще не бывал.
A>>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием. YKU>>Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их.
A>Такой сайт можно создать про любой язык, и скидывать туда перлы от людей, только начинающих изучать программирование.
Справедливости ради, для той же джавы, которая не скрипт, особо подобных странностей и не найдешь.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, anonymous, Вы писали:
YKU>>Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их. A>Такой сайт можно создать про любой язык, и скидывать туда перлы от людей, только начинающих изучать программирование.
Да вы на сайт сходите сначала, потом уже отвечайте.
q>Почти все библиотеки так или иначе эмулируют классы. A>Интересно, и много ты пишешь на других языках без использования фреймворков и библиотек?
Здравствуйте, yoriсk.kiev.ua, Вы писали:
YKU>>>Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их. A>>Такой сайт можно создать про любой язык, и скидывать туда перлы от людей, только начинающих изучать программирование. YKU>Да вы на сайт сходите сначала, потом уже отвечайте.
Сходил, и?
q>>Почти все библиотеки так или иначе эмулируют классы. A>>Интересно, и много ты пишешь на других языках без использования фреймворков и библиотек? YKU>Бида какая-то, даже и не знаю как вам ответить...
Здравствуйте, Пацак, Вы писали:
A>>За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков. П>OK, один день раз в полгода — и? Что это меняет-то?
Здравствуйте, Eugeny__, Вы писали:
A>>>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием. YKU>>>Прототипы — это далеко не единственное. К сказаному другими могу еще добавить http://wtfjs.com — тысячи их. A>>Такой сайт можно создать про любой язык, и скидывать туда перлы от людей, только начинающих изучать программирование. E__>Справедливости ради, для той же джавы, которая не скрипт, особо подобных странностей и не найдешь.
Ну, не знаю. По мне, так писать целый класс ради вывода "Hello, World!" — уже странно.
M>>Где? Ссылки в студию. Если их выше крыши, ты наберешь хотя бы три?
П>1) нетипизированность (Cyberax) П>3) var (Sinclair)
Про это и я тебе могу рассказать, и много.
П>2) прототипное ООП (все)
Далеко не все. Более того, против протипного ООП не было высказано ни одного внятного аргумента.
П>От себя могу добавить еще странную модульность, реализуемую через всякие requirejs и т.п. велосипеды.
П>Дим, выделенное — это плач Ярославны. Никто не будет досконально изучать все тонкости языка, который нужен бывает на полчаса один раз в неделю. Ни js, ни эрланга, ни какого-то другого.
Я где-то требую досконального изучения всех особенностей JS?
П>Я понимаю, тебя это бесит, но такова уж реальность, смирись с ней. Это не значит, что сам js плохой, боже упаси — если потренироваться и хорошенько навостриться, то он очень даже хороший. Но просто не совсем понятно, нафига это нужно — городить тренировки на ровном месте и что мешало использовать в языке чуть более мейнстримовый подход.
Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо?
А язык такой, потому что его так спроектировали. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не? Повторю в нцатый раз, когда ты используешь другой язык, предполагается, что ты его изучишь, хоть как-то, не? Почему этот же критерий ты не применяешь к JS?
M>>по сути, отсутсвует
НС>Это ты к чему вообще? И какое отношение к джаве имеют делегаты и винформсы?
Мы ВНЕЗАПНО начали говоить про Джаву? Где? Если ты про скобочки [java], то, извини, на РСДНе нет отдельного тэга для подсветки JS, а для второго куска кода я ошибся — там должен быть c#
M>>И? Почему я не вижу стенаний «нам не нужен Linq
НС>Выборочная слепота? Простейший поиск по форумам: НС>
0K>>Сума все с этим Linq посходили! Он вообще не особо то нужен, имхо.
НС>...
ВВ>> Синтаксис (linq, прим. мое) сам по себе — не нужен. Его полезность даже в C# — это большой вопрос. Я как-то создавал подобную тему и где-то половина отписавшихся высказывалась, что они синтаксисом не пользуются или просто не считают его особенно полезным.
НС>...
0>> По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?".
НС>...
M>>Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ.
Ладно, убедил, жалуются
Заметь, что ты единственный, кто вообще решил ответить на этот вопрос
M>>Определение необычности в студию
П>Значительно отличающееся от привычного. Применительно к прототипному ООП, например — от ООП классического.
Определение классического ООП в студию (потому что реализаций ООП — полно, и каждое отличается от другого)
M>>А мне пофиг. Я хочу, чтобы все языки были такие же, как Erlang
П>И много вас таких хотящих? Или ты реально не видишь разницу между "я привык" и "большинство привыкло"?
Больгинство привыкло индусокод писать и?
M>>Цитату, где я говорю про правсолавность прототипного ООП в студию
П>Ты не привел ни одного объективного требования, по которому js должен быть именно прототипным. Методом исключения — остаются религиозные мотивы.
Стопстопстоп. Почему это я должен что-то доказывать? Я даю данность: есть язык, к которому должны применяться точно такие же критерии, как и к любому другому языку, а именно: при использовании любого языка программирования предполагается, что ты выучишь те подходы и парадигмы, что в нем используются. Это справедливо для любого языка с любым уровнем популярности. Почему этот критерий не применяется, в том числе и тобой, к JS?
M>>Читаю. Итак, дано: фуллтайм программисты на JS не ноют (или ноют совсем по другим причинам), так в чем проблема-то? В индусах?
YKU>Таки не читаешь. Проблема в том, что 99% вылазят из уютненького мирка C#/java/чё-то еще в волшебній мир javascript чиста на 5 минут. Именно что-бы отвалидировать телефон. Ну или там в грид чё-то засунуть, но это в пиковом случае(именно тут и берутся over 90K программистов javascript и "самый популярный в мире"). И тут внезапно выясняется, что то, что обычно делается негляпяпроходязаднейпяткой надо делать через ж. Т.е. оно может и не совсем, если всё через неё делать — может оно ничего, некоторым даже нравится. Но привычно(то самое сложное слово, да) — через другое место и за две минуты.
И почему в этом ВНЕЗАПНО виноват JS?
M>>>>Почему ты считаешь, что надо в обязхательном порядке менять язык?
YKU>>>Почему в обязательном? Вариантов два: поменять язык или поменять программистов. Я понимаю, что это удивительно и даже пугающе необьяснимо, но программисты за первый вариант. Можешь удивляться сколько хочешь, считать всех "дурацкими паяцами", но такова обьективаня реальность, данная нам в чём-то там.
M>>Повторю: M>>Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п.
YKU>Повторю. Ничего от них не ожидается, это твои домыслы. А мои домыслы таковы: Почему-то, когда люди переходят на другой язык, ожидается, что на этом языке они будут делать то-же самое, но проще/быстрее/производительнее(только давай без гоняния к словарю, что означают эти слова, а?). Брейнфак тоже несёт в себе новый неповторимый вкус, но чё-то как-то оно не того. И масса академиков тоже. Но брейнфак — это лирика, а яваскрипт — ж0сткая практика. И тогда выясняется, что парадигма — это хорошо, но оно же чё-то нихрена не проще, а еще более через упомянутое место. И все начинают ныть — зачем всё это, верните деньги, сволочи! YKU>Неужели я говорю что-то неочевидное?
Пока что я слышу только одно: есть некий язык программирования, который используется, как неосновной. Кнему, почему-то, начинают предъявлятся требования, отличные от требований
к любым другим языкам. И это мне, мягко говоря, непонятно
YKU>А рассуждения энтузиастов про то, что в гамаке и на лыжах — это круто, главное не бояться трудностей и надо только выучить разные подходы только улыбают, уж извини.
Опять эти аналогии про гамаки и лыжи, ага
YKU>Вроде достаточно внятно и даже без наследования... Ты вообще не с того конца идёшь. Так ты корову не продашь, это не позитивистский подход. Ну ок, прекрасный язык яваскрипт, завтра куплю книгу и постигну новые парадигмы. С тебя ответ: зачем? Как только начнешь ныть про "разные подходы к типам и типизации, разные подходы к наследованию", перечитываешь абзац выше.
Затем, что ты это сделаешь для любого другого языка программирования, но, блин, почему-то только не для JS
SA>>>Именно такой вердикт и был после знакомства с Sencha Touch.
A>>И что это нам говорит, кроме того, что Sencha Touch тебя не устроил?
ЕА>а есть что-то, на чем можно сделать нормальный интерфейс в браузере?
ЕА>Я тут как раз выбираю, на чем сделать морду к одной небольшой учетной системке, так что бы нормально работало и на десктопе, и на паншетках, и чтобы, если уж приспичит, можно было с телефона зайти. Посмотрев демки всего, что смог найти в гугле, включая sencha, jquery grid, telerik kendo ui — так и не нашел ни одного приличного грида — даже на моем core i7 многие демки тормозят, а на телефонах и планшетках фактически вообще не шевелятся Ничего сверхестественного не надо, просто обычный грид с сортировками, группировками итд.
ЕА>Пока пришел к выводу, что вариантов нет, кроме как сделать по клиенту для каждой платформы
Начинается с того, что выписываются требования к этому гриду, а только потом смотрится, что есть. Вполне возможно, что дело решится банальной таблицей, jQuery и двумя-тремя Ajax-запросами
ЕА>а есть что-то, на чем можно сделать нормальный интерфейс в браузере?
ЕА>Я тут как раз выбираю, на чем сделать морду к одной небольшой учетной системке, так что бы нормально работало и на десктопе, и на паншетках, и чтобы, если уж приспичит, можно было с телефона зайти. Посмотрев демки всего, что смог найти в гугле, включая sencha, jquery grid, telerik kendo ui — так и не нашел ни одного приличного грида — даже на моем core i7 многие демки тормозят, а на телефонах и планшетках фактически вообще не шевелятся Ничего сверхестественного не надо, просто обычный грид с сортировками, группировками итд.
ЕА>Пока пришел к выводу, что вариантов нет, кроме как сделать по клиенту для каждой платформы
Вдогонку к вышесказанному мной, проблемы UI в браузере — это даже близко не проблемы JS, как такового, а DOM'а и прочего бардака под названием HTML+CSS.
q>>>>Почти все библиотеки так или иначе эмулируют классы. A>>>>Интересно, и много ты пишешь на других языках без использования фреймворков и библиотек? YKU>>>Бида какая-то, даже и не знаю как вам ответить... A>>Правду говори.
YKU>Тут бесполезно ИМХО.
А ты попробуй. В этом топика не было практически ни одного внятного возражения против JS. Про костыли разговор заходит, по-моему, не первый раз, а что за костыли неизвестно никому.
Здравствуйте, Пацак, Вы писали:
A>>Так топикстартеру и отвечай. А мне, будь добр, пиши в контексте нашего диалога. П>У нас с тобой нет диалога. Я тебе давно уже сказал, с кем я тут общаюсь — но ты все равно продолжаешь влезать в разговор.
Я тебе уже дано сказал: не хочешь, не разговаривай, — но ты всё равно продолжаешь мне отвечать. А ещё на публичном форуме понятия «влезть в разговор» не существует.
Здравствуйте, Пацак, Вы писали:
П>>>OK, один день раз в полгода — и? Что это меняет-то? A>>Это меняет исходные условия. П>Нет, не меняет — по отношению к основному языку процент использования js как был мизерным, так и остается.
Это вопрос погружения в изучение: за пять минут поправить одну строчку или целый день сидеть над кодом.
Здравствуйте, Mamut, Вы писали:
M>Про это и я тебе могу рассказать, и много.
Ну видишь — сам всё прекрасно понимаешь.
M>Я где-то требую досконального изучения всех особенностей JS?
Здрасьте!
Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.
Не знаю как ты, а я как-то с трудом представляю себе "подстроение под язык" без досконального изучения его особенностей. Потому что иначе — это будет хождение по граблям. Как оно частенько с тем же js и бывает.
M>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо?
Во-первых не будем — даже перечисленные языки, при всей их внешней похожести, тем не менее вполне себе самобытны. А во-вторых — кому от этого будет плохо? Что страшного произошло бы, если бы js был изначально чуть ближе к мейнстриму?
M>А язык такой, потому что его так спроектировали. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось.
Но и любить его за это тоже никто не обязан.
M>Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не?
Не так. Он стал популярным и именно поэтому приходится изучать его подход. И вот как раз это отношение долженствования людей и напрягает. Потому что какого-то особенного профита от осознания того факта, что объекты могут создаваться клонированием, а переменные — по умолчанию торчать в глобальном контексте, в общем-то не получается. А граблей на пути приходится собрать далеко не одни.
Здравствуйте, Mamut, Вы писали:
SA>>>>Именно такой вердикт и был после знакомства с Sencha Touch.
A>>>И что это нам говорит, кроме того, что Sencha Touch тебя не устроил?
ЕА>>а есть что-то, на чем можно сделать нормальный интерфейс в браузере?
ЕА>>Я тут как раз выбираю, на чем сделать морду к одной небольшой учетной системке, так что бы нормально работало и на десктопе, и на паншетках, и чтобы, если уж приспичит, можно было с телефона зайти. Посмотрев демки всего, что смог найти в гугле, включая sencha, jquery grid, telerik kendo ui — так и не нашел ни одного приличного грида — даже на моем core i7 многие демки тормозят, а на телефонах и планшетках фактически вообще не шевелятся Ничего сверхестественного не надо, просто обычный грид с сортировками, группировками итд.
ЕА>>Пока пришел к выводу, что вариантов нет, кроме как сделать по клиенту для каждой платформы
M>Начинается с того, что выписываются требования к этому гриду, а только потом смотрится, что есть. Вполне возможно, что дело решится банальной таблицей, jQuery и двумя-тремя Ajax-запросами
Т.е. предложить все-таки нечего. Не хочу никого обидеть, но реально звучит как издевка.
Это как если ли бы я выбирал внедорожник, а ты мне сказал: выпиши список требований, вдруг тебя и самокат устроит.
П>>>OK, один день раз в полгода — и? Что это меняет-то? M>>Если это — скрипт на Питоне, это что-то изменит?
П>Как ни странно, по питону вопросов в таком режиме возникает куда меньше — по крайней мере у меня.
A>>>Если ты вылазишь в этот мир на 5 минут, то ты не столкнёшься с прототипным программированием.
П>>Столкнешься. Доработку чужих скриптов еще никто не отменял.
E__>С другой стороны, я не могу понять, что все так носятся с этим прототипным программированием как с писанной торбой, будто бы это какой-то невероятный рокет сайнс.
Как к рокет саенсу к нему относятся только люди, которые неспособны применить к JS те е критерии, как и к другим языкам (тут, выделенное
A>>>>За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков. П>>>OK, один день раз в полгода — и? Что это меняет-то? M>>Если это — скрипт на Питоне, это что-то изменит? Если да, то что? А если на Ruby? C>Питон гораздо лучше структурирован.
Что это значит?
C>В нём есть нормальные классы с нормальной семантикой, а не их эмуляция через прототипы.
Для того, чтобы «раз в полгода» что-то исправить, общий объем знаний для Питона и JS примерно одинаковый. «Нормальные классы» — в ту же топку, что и любые доказательства по аналогии в этом топике.
Здравствуйте, Mamut, Вы писали:
M>Я-то понимаю, В этом же топике кроме нытья и попыток доказать чтото неверными аналогиями, ничего и не было
Тебе только что привели три конкретных примера неудобств js, с которыми ты согласился. Теперь зачем-то включаешь реверс и начинаешь изображать непонимание.
M>Почему обязательно доскональное?
Потому что поверхностное — дает хождение по граблям. Собственно, многие именно на них и учатся — оттого и возмущение.
M>Java стала популярной, поэтому мне придется изучать ее для (поставить нужное) M>C++ стал популярным, поэтому мне придется изучать ее для (поставить нужное) M>C# стал популярным, поэтому мне придется изучать ее для (поставить нужное)
Java стала популярной, поэтому мне придется изучать ее для каждодневного использования
C++ стал популярным, поэтому мне придется изучать ее для каждодневного использования
Javascript стал популярным, поэтому мне придется изучать ее для того, чтобы раз в три месяца что-то поправить на домашней страничке
Я уж не знаю, как еще дальше объяснять эту разницу. Создается впечатление, что ты давно уже все прекрасно понимаешь и просто валяешь дурочку.
Здравствуйте, Mamut, Вы писали:
П>>Как ни странно, по питону вопросов в таком режиме возникает куда меньше — по крайней мере у меня. M>Почему?
Питон, если не влезать в особые дебри, прост, как блин — такие же классы, такие же модули, что и в той же джаве, например. "Переходный барьер" на него с другого мейнстримового языка очень низкий. В js над некоторыми вещами приходится ломать голову уже изначально — даже над совершенно базовыми вопросами, типа "как мне сделать такой-то объект". Через пару месяцев эти тонкости забываются — и ломка головы начинается сначала.
Здравствуйте, Mamut, Вы писали:
П>>Твой вопрос, насколько мне помнится, был не про них, а про JS. Конкретно — про то, почему люди не любят его "вкусности" и продолжают думать в традиционном стиле. M>Так никто и не ответил, почему не любят и продолжают думать, кроме детсадовского «неудобно».
вот покупал я на днях шуруповерт. Присматривался, присматривался к одному. Ну всем хорош. Только вот мелочь — ручка для моей руки великовата. Ну не лежит и все.
Ты скажешь — блажь и детсадовство?
А я вот так не думаю. Купил другой. Не уверен, что так же хорош, но в руку сел как влитой.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Ну, не знаю. По мне, так писать целый класс ради вывода "Hello, World!" — уже странно. НС>Можно и не писать. К примеру, так: НС>
НС><%="Hello, World!"=>
НС>
На чистой Java то?
НС>Но аргумент твой, сам по себе, конечно знатный, ничего не скажешь.
M>>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо?
НС>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков?
Ты этот вопрос на полном серьезе задаешь?
M>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу.
Java — GWT, C# — ASP.NET вообще не требуют написания JS, насколько я знаю. Даже поверх JS есть толпа решений для «вменяемой альтернативы» (Objective-J, Coffescript и т.п. вон, даже erlang есть)
M>> Он стал популярным и, может быть, именно поэтому имеет смысл изучить именно его подход, не?
НС>Типа миллион леммингов не могут ошибаться? НС>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин.
M>>Меня, конечно, рдует, что итаты вырезаются специально, чтобы сделать видимость, что твой оппонент дурак
НС>Тебе показалось.
НС>>>Это ты к чему вообще?
НС>Вот это был основной вопрос. Ты на него не ответил.
Блин, вот ответ:
НС>Это ты к чему вообще? И какое отношение к джаве имеют делегаты и винформсы?
Мы ВНЕЗАПНО начали говоить про Джаву? Где? Если ты про скобочки [java], то, извини, на РСДНе нет отдельного тэга для подсветки JS
Если ты не способен выразить свои мысли так, чтобы тебя поняли, извини, это не мои проблемы
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, Mamut, Вы писали:
П>>>Как ни странно, по питону вопросов в таком режиме возникает куда меньше — по крайней мере у меня. M>>Почему?
П>Питон, если не влезать в особые дебри, прост, как блин — такие же классы, такие же модули, что и в той же джаве, например.
А если переходить не с Джавы, а с C++? А с JS (более мейнстримный язык еще поискать надо)?
П>"Переходный барьер" на него с другого мейнстримового языка очень низкий. В js над некоторыми вещами приходится ломать голову уже изначально — даже над совершенно базовыми вопросами, типа "как мне сделать такой-то объект". Через пару месяцев эти тонкости забываются — и ломка головы начинается сначала.
M>>Я-то понимаю, В этом же топике кроме нытья и попыток доказать чтото неверными аналогиями, ничего и не было
П>Тебе только что привели три конкретных примера неудобств js, с которыми ты согласился. Теперь зачем-то включаешь реверс и начинаешь изображать непонимание.
Подобных проблем в любом языке наберется выше крыши. Ты же упорно хочешь сделать из JS С++/C#/Java (какой из них, кстати?) без внятного объяснения причин А вышеуказанные проблемы ВНЕЗАПНО появились у тебя в руках только сейчас.
M>>Почему обязательно доскональное? П>Потому что поверхностное — дает хождение по граблям. Собственно, многие именно на них и учатся — оттого и возмущение.
Для того, чтобы что-то подправить на домашней страницке, доскональное знание тебе не понадобится, а граблей тебе надо знать не больше, чем в любом другом языке.
M>>Java стала популярной, поэтому мне придется изучать ее для (поставить нужное) M>>C++ стал популярным, поэтому мне придется изучать ее для (поставить нужное) M>>C# стал популярным, поэтому мне придется изучать ее для (поставить нужное)
П>Java стала популярной, поэтому мне придется изучать ее для каждодневного использования П>C++ стал популярным, поэтому мне придется изучать ее для каждодневного использования П>Javascript стал популярным, поэтому мне придется изучать ее для того, чтобы раз в три месяца что-то поправить на домашней страничке
П>Я уж не знаю, как еще дальше объяснять эту разницу. Создается впечатление, что ты давно уже все прекрасно понимаешь и просто валяешь дурочку.
Нет, я не понимаю Если мне надо использовать Java/Python/Ruby/C++/C# для того, чтобы раз в три месяца что-то поправить (скрипты и т.п.), предполагается, что я не буду ныть «ах, почему оно не похоже на подставить любой язык программирования, давайте все переделаем»
Здравствуйте, anonymous, Вы писали:
A>На чистой Java то?
Чистая, не чистая, это все лирика. Главное — Java.
НС>>Но аргумент твой, сам по себе, конечно знатный, ничего не скажешь.
A>Что за намёки? Говори прямо.
Здравствуйте, Mamut, Вы писали:
НС>>>>Это ты к чему вообще? НС>>Вот это был основной вопрос. Ты на него не ответил.
M>Блин, вот ответ:
Это ответ на второстепенное замечание про джаву. А основной вопрос — что ты вообще хотел сказать своим постом. И то, что ты на него уже который пост ответить не можешь, наводит меня на мысль, что ты и сам не знаешь.
M>Если ты не способен выразить свои мысли так, чтобы тебя поняли
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>На чистой Java то? НС>Чистая, не чистая, это все лирика. Главное — Java.
Ну так пользуйте jQuery и прочее и не жужжите.
НС>>>Но аргумент твой, сам по себе, конечно знатный, ничего не скажешь. A>>Что за намёки? Говори прямо. НС>Это не намек, это я прямо и сказал.
Здравствуйте, Mamut, Вы писали:
П>>Питон, если не влезать в особые дебри, прост, как блин — такие же классы, такие же модули, что и в той же джаве, например. M>А если переходить не с Джавы, а с C++?
Я первоначально юзал его параллельно с дельфями. Проблем не возникало. С жавоскриптом в то же самое время — увы.
M>Вот тебе кусок скрипта на JS: https://gist.github.com/1450469, где и что надо ломать голову?
Новичку? Как минимум — над синтаксисом listener'ов и над тем, зачем из них торчат ссылки на глобальные переменные.
Встречный вопрос: как ты считаешь, сколько раз матюгнется тот же пришедший из джавы программист, написав на js что-нибудь типа такого?
function Foo(age, name) {
this.name = name;
this.age = age;
function bar() {
if (age>16) {
return"Welcome to Port Royal, Mr. " + this.name + "!";
}
return"Sorry, Mr." + this.name + ". You are too young to leave the boat without your parents";
}
}
foo = new Foo("Smith", 5);
alert(foo.bar());
foo.age = 33;
alert(foo.bar());
И главное — нафига? В чем профит-то у всех этих js-особенностей?
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>>>На чистой Java то? НС>>>Чистая, не чистая, это все лирика. Главное — Java. A>>Ну так пользуйте jQuery НС>Зачем?
НС>>>>>Это ты к чему вообще? НС>>>Вот это был основной вопрос. Ты на него не ответил.
M>>Блин, вот ответ:
НС>Это ответ на второстепенное замечание про джаву. А основной вопрос — что ты вообще хотел сказать своим постом. И то, что ты на него уже который пост ответить не можешь, наводит меня на мысль, что ты и сам не знаешь.
Я не понимаю, что тебе вообще не нравится в моем ответе
M>>Если ты не способен выразить свои мысли так, чтобы тебя поняли
НС>Не поняли, а понял.
Повторяю специально, чтобы ты понял: разница между JS и каким-нибудь C#, а контексте постоянного нытья «хочу, как привык» иногда вообще практически исчезает.
M>>Вот тебе кусок скрипта на JS: https://gist.github.com/1450469, где и что надо ломать голову?
П>Новичку? Как минимум — над синтаксисом listener'ов и над тем, зачем из них торчат ссылки на глобальные переменные.
Ой, како ужас. Срочносрочно выкидываем из всех языков функциональное программирование, ага Из C# в срочном порядке выкидываем делегаты
, а то бедным-несчастным новичкам придется что-то учить, ага
П>Встречный вопрос: как ты считаешь, сколько раз матюгнется тот же пришедший из джавы программист, написав на js что-нибудь типа такого?
П>
П>function Foo(age, name) {
П> this.name = name;
П> this.age = age;
П> function bar() {
П> if (age>16) {
П> return"Welcome to Port Royal, Mr. " + this.name + "!";
П> }
П> return
П> "Sorry, Mr." + this.name + ". You are too young to leave the boat without your parents";
П> }
П>}
П>foo = new Foo("Smith", 5);
П>alert(foo.bar());
П>foo.age = 33;
П>alert(foo.bar());
П>
П>И главное — нафига? В чем профит-то у всех этих js-особенностей?
Еще раз повторю: у JS есть есть много объективных проблем, которые постепенно выправляются. Одну из таких объективных проблем ты описал выше. Но это — объектвиная проблема, и я уже об этом тебе говорил.
НС>>>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков? M>>Ты этот вопрос на полном серьезе задаешь?
НС>Даже и не знаю что тебе и ответить. Ты, судя по всему, на полном серьезе считаешь, что чем больше языков в мейнстриме, тем лучше?
Второе выделенное выше не следует из первого выделенного выше, и, более того, не следует из моего ответа. Это во-первых.
Во-вторых предлагаю сделать единственным мейнстримным языком ассемблер. Тебе понравится?
M>>>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>>>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу.
M>>Java — GWT
НС>Это не очень вменяемая альтернатива, увы.
M>>, C# — ASP.NET вообще не требуют написания JS, насколько я знаю.
НС>А, ну ну.
M>> Даже поверх JS есть толпа решений для «вменяемой альтернативы» (Objective-J, Coffescript и т.п. вон, даже erlang есть)
НС>И все они косячные.
НС>>>Типа миллион леммингов не могут ошибаться? НС>>>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин.
M>>Заменяй JS на С++/Java, что изменится?
НС>Java — продукт долгой эволюции, а не кавалерийский наскок типа JS.
Это — не аргумент И да, эволюция идет, так что замечание вообще не в кассу.
Здравствуйте, Mamut, Вы писали:
M>Ой, како ужас. Срочносрочно выкидываем из всех языков функциональное программирование, ага Из C# в срочном порядке выкидываем делегаты
, а то бедным-несчастным новичкам придется что-то учить, ага
Придется, ага. В режиме "ежедневно, по 40+ часов в неделю". А не "разок-другой с перерывом в два месяца". О чем тебе здесь разные люди сказали уже раз десять, если не больше.
M>Еще раз повторю: у JS есть есть много объективных проблем, которые постепенно выправляются. Одну из таких объективных проблем ты описал выше.
Вообще-то в приведенном выше куске кода проблемных участков несколько. И то, что ты заметил только один — уже само по себе о многом говорит.
M>Но это — объектвиная проблема, и я уже об этом тебе говорил.
Так никто кроме тебя в этом топике и не утверждает, что люди недовольны джавоскриптом по субъективным причинам.
Здравствуйте, Mamut, Вы писали:
M>Второе выделенное выше не следует из первого выделенного выше, и, более того, не следует из моего ответа. Это во-первых.
Тогда поясни свою мысль про количество языков подробнее.
M>Во-вторых предлагаю сделать единственным мейнстримным языком ассемблер. Тебе понравится?
Этот прием демагогии называется передергивание.
НС>>Java — продукт долгой эволюции, а не кавалерийский наскок типа JS. M>Это — не аргумент
Здравствуйте, Mamut, Вы писали:
M>Я не понимаю, что тебе вообще не нравится в моем ответе
Я не могу понять, какую мысль ты этим постом хотел выразить. Привел два куска кода, сказал что разница между ними отсутствует. Но какая связь с сообщением Пацака, на которое ты отвечал, я что то уловить не могу.
НС>>Не поняли, а понял. M>Повторяю специально, чтобы ты понял: разница между JS и каким-нибудь C#, а контексте постоянного нытья «хочу, как привык» иногда вообще практически исчезает.
Ну и что? А если привести в пример выражение 2+2, то вообще разница между почти всеми ЯВУ исчезнет. Это как то доказывает, что все языки вообще одинаковы?
M>>Второе выделенное выше не следует из первого выделенного выше, и, более того, не следует из моего ответа. Это во-первых.
НС>Тогда поясни свою мысль про количество языков подробнее.
Цитату с моей мыслью в студию
M>>Во-вторых предлагаю сделать единственным мейнстримным языком ассемблер. Тебе понравится?
НС>Этот прием демагогии называется передергивание. Сорри, им занимаешься ты, а не я
НС>>>Java — продукт долгой эволюции, а не кавалерийский наскок типа JS. M>>Это — не аргумент
НС>Это объяснение, в чем разница между джавой и JS.
Здравствуйте, Ночной Смотрящий, Вы писали:
M>>>>Потому что в итоге мы будем иметь везде только один С++ (ну или Java или C#). Кому от этого будет хорошо? НС>>>Почти всем. Вообще, интересные у тебя мысли — а зачем ты так жаждешь обязательно большого количества языков? A>>А почему ты так жаждешь обязательно наличия только одного языка? НС>Это где я такое писал?
Ты этого не писал, я за тебя додумал. Но раз я ошибся, значит языков должно быть несколько. Почему бы среди них не существовать такому, как JavaScript?
M>>>>. То, что он стал популярным не приводит к тому, что он обязан стать каким-то другим, только потому, что так кому-то захотелось. НС>>>Да ради бога. Тут вроде никто JS менять и не хочет. Хотят вменяемую альтернативу. A>>Вменяемые альтернативы есть. НС>Нету.
CoffeScript, Dart не подходят? Почему?
НС>>>Он стал популярным вовсе не из-за своего подхода, а в силу исторических причин. A>>В силу подхода тоже, языком должны были пользоваться люди, не являющиеся профессиональными программистами. НС>Прям как в анекдоте — сделай язык, которым могут пользоваться дураки, и только дураки будут им пользоваться
Это, конечно, здорово — анекдот в качестве аргумента. В русле прочей аргументации, типа набивших оскомину леммингов.
A>>А то, что у вас психотравма НС>Психотравма, мил человек, у тебя, что ты абсолютно без повода начинаешь хамить незнакомым лично тебе людям.
П>>>Так никто кроме тебя в этом топике и не утверждает, что люди недовольны джавоскриптом по субъективным причинам. M>>Ты утверждаешь. Все твое нытье про прототипное ООП.
П>Нет, про субъективизм тут долдонишь исключительно ты. И ноешь, кстати, тоже — ты даже начал этот топик с того же, с нытья. Примеры же объективных трудностей, с которыми новичкам приходится сталкиваться в javascript ты попросту игноришь.
Это «новичкам придется выучить синтаксис listener'ов» — это объективная проблема?
П>Равно как вопросы, а что же такого магического и волшебного дают программисту эти выкрутасы.
Какие выкрутасы?
Вообще, ты ВНЕЗАПНО вспомнил про списко проблем только после того, как оказалось, что против прототипного ООП (против которого ты выступал на протяжение большй части обуждения) у тебя нет ни одного внятного аргумента.
Здравствуйте, anonymous, Вы писали:
A>Ты этого не писал, я за тебя додумал. Но раз я ошибся, значит языков должно быть несколько. Почему бы среди них не существовать такому, как JavaScript?
Так это не я ужасался перспективе сокращения количества языков.
A>CoffeScript, Dart не подходят? Почему?
Потому что унаследовали часть недостатков JS и потому что необходимость трансляции JS накладывает определенные ограничения.
НС>>Психотравма, мил человек, у тебя, что ты абсолютно без повода начинаешь хамить незнакомым лично тебе людям.
A>К зеркалу, милый человек.
Про листенеров я тебе уже сказал. Если ты считаешь это проблемой, я не понимаю, что ты вообще делаешь в этой профессии
П>И не только listener'ов. Дополнительные трудозатраты на изучение и полезный выхлоп от этих трудозатрат — это самый что ни на есть объективный признак, хочется тебе этого или нет.
Давай ты уже раз в изни начнешь говорить не общими фразами, а будешь называть конкретные претензии: например, что такое «трудозатраты на изучение и полезный выхлоп от этих трудозатрат». Чтобы «выучить» JS в достаточном объеме для домашних страничек раз в три месяца с головой хватает одной простейшей статьи
.
M>>Вообще, ты ВНЕЗАПНО вспомнил про списко проблем только после того, как оказалось, что против прототипного ООП (против которого ты выступал на протяжение большй части обуждения) у тебя нет ни одного внятного аргумента.
П>Против прототипного ООП у меня есть один железобетонный аргумент — оно не нужно
Да уж. Аргумент просто железобетонный, ага Даю тебе ровно такой же железобетонный аргумент: ООП в стиле С++ не нужно.
П>и ничего полезного по сравнению с обычным
Давай определение «обычного» в студию. Потому что как ни возьмешь какой язык — везде разная реализация со своими заморочками
П>в себе не несет. Обратного ты так и не доказал, как тебя об этом ни просили.
Вообще-то, доказательство чего-либо ложится на плечи выдвигающего какие-либо утверждения. Например, толкьо что ты выдвинул два:
— оно не нужно
— ничего полезного по сравнению с обычным в себе не несет
Заявляешь это ты уже не первый раз безапелляционно, но каких-то доказательств или аргументов, поддерживающих эти два заявления, ты так и не приводишь, требуя чтобы я приводил контрдоказательства. С какого перепугу?
Ну ладно, приведу свои слова с Хабра:
> Какой смысл сохранять прототипное наследование, если оно не давая никаких приемуществ при этом блокирует вразумительную статическую типизацию?
Кто сказал, что преимущест не дает?
stackoverflow.com/q/4428503
lee.fov120.com/ecoop.pdf
waltersmith.us/newton/OOPSLA95.pdf
programmers.stackexchange.com/q/110939
Это так, беглый взгляд по первой странице гугла.
Насчет статической типизации: кто сказал, что она нужна в обязательном порядке?
Жду от тебя хоть один внятный аргумент в защиту твоих тезисов.
M>>Это «новичкам придется выучить синтаксис listener'ов» — это объективная проблема?
П>Именно. И не только listener'ов. Дополнительные трудозатраты на изучение и полезный выхлоп от этих трудозатрат — это самый что ни на есть объективный признак, хочется тебе этого или нет.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Ты этого не писал, я за тебя додумал. Но раз я ошибся, значит языков должно быть несколько. Почему бы среди них не существовать такому, как JavaScript? НС>Так это не я ужасался перспективе сокращения количества языков.
Ты выступал за сокращение количества языков. Как выяснилось, не до одного единственного. Отсюда и мой вопрос.
A>>CoffeScript, Dart не подходят? Почему? НС>Потому что унаследовали часть недостатков JS и потому что необходимость трансляции JS накладывает определенные ограничения.
Какие недостатки и какие ограничения?
НС>>>Психотравма, мил человек, у тебя, что ты абсолютно без повода начинаешь хамить незнакомым лично тебе людям. A>>К зеркалу, милый человек. НС>А, ну ну.
Да-да, незнакомые тебе дураки и лемминги считают, что повод был.
Здравствуйте, anonymous, Вы писали:
A>Ты выступал за сокращение количества языков.
Ложь.
НС>>Потому что унаследовали часть недостатков JS и потому что необходимость трансляции JS накладывает определенные ограничения. A>Какие недостатки и какие ограничения?
Перечитай топик
A>Да-да, незнакомые тебе дураки и лемминги считают, что повод был.
Здравствуйте, Mamut, Вы писали:
M>А ты попробуй. В этом топика не было практически ни одного внятного возражения против JS. Про костыли разговор заходит, по-моему, не первый раз, а что за костыли неизвестно никому.
А смысл? Я спрашиваю "зачем всё это надо, какие задачи это позволит решить" — а в ответ " а затем".
Ну Ок — затем — так затем, о чём тогда разговор? Все аж бегом "затем" прямо щас уже ломанулись учить js, победа яваскриптизма совсем близко, все прочие умирают как динозавры. С чего кипишь-то?
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Ты выступал за сокращение количества языков. НС>Ложь.
Тогда какова твоя позиция. Оставить всё как есть?
НС>>>Потому что унаследовали часть недостатков JS и потому что необходимость трансляции JS накладывает определенные ограничения. A>>Какие недостатки и какие ограничения? НС>Перечитай топик
Нет, спасибо. Будем считать, что тебе нечего сказать.
A>>Да-да, незнакомые тебе дураки и лемминги считают, что повод был. НС>Ну так приведи цитату, где я тебе нахамил.
Здравствуйте, yoriсk.kiev.ua, Вы писали:
M>>А ты попробуй. В этом топика не было практически ни одного внятного возражения против JS. Про костыли разговор заходит, по-моему, не первый раз, а что за костыли неизвестно никому. YKU>А смысл?
Действительно, ведь тогда придётся искать доказательства своим слова про костыли и фреймворки.
M>>А ты попробуй. В этом топика не было практически ни одного внятного возражения против JS. Про костыли разговор заходит, по-моему, не первый раз, а что за костыли неизвестно никому.
YKU>А смысл? Я спрашиваю "зачем всё это надо, какие задачи это позволит решить" — а в ответ " а затем".
Ты не понимаешь, какие задачи позволяет решить что? Тебе непонятно, какие задачи решает ООП? Или, например, функциональное программирование (и то и другое есть в JS)?
П>>>Так никто кроме тебя в этом топике и не утверждает, что люди недовольны джавоскриптом по субъективным причинам. M>>Ты утверждаешь. Все твое нытье про прототипное ООП.
П>Нет, про субъективизм тут долдонишь исключительно ты. И ноешь, кстати, тоже — ты даже начал этот топик с того же, с нытья. Примеры же объективных трудностей, с которыми новичкам приходится сталкиваться в javascript ты попросту игноришь.
Не игнорю. И повторю для тупых: про объективные причины я и не спорю, до тех пор пока они объективны. Часть этих причин ты вспомнил хорошо, если на тысячном сообщении в этом топике. При том, что таких объективных причин можно набрать вагонами для любого языка программирования.
И есть то что ты считаешь «объективными» тимпа «ахахахахах, синтаксис лдистенеров непривычный для новичка», что является настолько бредятиной, что вообзе не достойно комментировнаия. В частности, что листенеры:
— не относятся к JS, а к DOM'у
— ничем не отличаются от тех же делегатов в C# потому что
— являются применением ФВП (или их тоже надо выкинуть, а?)
П>Равно как вопросы, а что же такого магического и волшебного дают программисту эти выкрутасы.
Для тупых повторю еще раз: тезисы выдвигаете вы, вам и доказывать, что в JS обязательно должен быть «классический ООП», при том, что:
— я уже привел ссылки на то, что дает прототипный ООП
— язадал вопро «а что такое "классический ооп" и из какого языка реализацию будем брать»
Здравствуйте, anonymous, Вы писали:
A>>>Ты выступал за сокращение количества языков. НС>>Ложь.
A>Тогда какова твоя позиция. Оставить всё как есть?
Моя позиция — не пытаться вообще сокращать или увеличивать количество языков исскуственно. В идеале, в процессе эволюции языков, их количество должно сокращаться. Но это в идеале. А на практике все определяется способностью языковых технологий покрывать максимальное количество сценариев минимальным оверхедом.
A>Нет, спасибо. Будем считать, что тебе нечего сказать.
Я не хочу провторять одно и то же и давать тебе возможность прицепиться к деталям, недостатки JS всем хорошо известны, в том числе и тебе. Или ты считаешь, что ву JS недостатков нет?
A>>>Да-да, незнакомые тебе дураки и лемминги считают, что повод был. НС>>Ну так приведи цитату, где я тебе нахамил.
A>Перечитай топик.
Здравствуйте, Mamut, Вы писали:
M>- я уже привел ссылки на то, что дает прототипный ООП
Знаешь, по большинству применений этот самый прототипный ООП на самом деле и не ООП вовсе, а некий аналог extension methods в дотнете. Синтаксический сахарок, то есть.
M>>- я уже привел ссылки на то, что дает прототипный ООП
НС>Знаешь, по большинству применений этот самый прототипный ООП на самом деле и не ООП вовсе, а некий аналог extension methods в дотнете. Синтаксический сахарок, то есть.
— ответа тут до сих пор нет. Видимо и не будет. Аргументы-то у тебя только «железобетонные»
A>Задай ты этот вопрос, он мне не отвечает, обиделся.
Он мне уже тоже не отвечает
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Тогда какова твоя позиция. Оставить всё как есть? НС>Моя позиция — не пытаться вообще сокращать или увеличивать количество языков исскуственно. В идеале, в процессе эволюции языков, их количество должно сокращаться. Но это в идеале. А на практике все определяется способностью языковых технологий покрывать максимальное количество сценариев минимальным оверхедом.
JavaScript вполне укладывается в этот сценарий. Это не язык ради языка.
A>>Нет, спасибо. Будем считать, что тебе нечего сказать. НС>Я не хочу провторять одно и то же и давать тебе возможность прицепиться к деталям, недостатки JS всем хорошо известны, в том числе и тебе. Или ты считаешь, что ву JS недостатков нет?
Нет, я так не считаю, но пока что тут никто про объективные недостатки JS и не говорил. Разговоры все о прототипах, которые недостатком не являются, если не считать необходимость их изучения.
A>>>>Да-да, незнакомые тебе дураки и лемминги считают, что повод был. НС>>>Ну так приведи цитату, где я тебе нахамил. A>>Перечитай топик. НС>Так и запишем — цитату привести не в состоянии.
Раз ты соизволил ответить, то и я напишу:
Прям как в анекдоте — сделай язык, которым могут пользоваться дураки, и только дураки будут им пользоваться
Здравствуйте, Mamut, Вы писали:
НС>>Знаешь, по большинству применений этот самый прототипный ООП на самом деле и не ООП вовсе, а некий аналог extension methods в дотнете. Синтаксический сахарок, то есть.
M>Аналогично для «классического» ООП
Да ну на. Полиморфизм в классическом ООП одна из основных фич.
Здравствуйте, anonymous, Вы писали:
A>JavaScript вполне укладывается в этот сценарий.
А разве я говорил что не укладывается? Меня просто удивил аргумент, что джаваскрипт нужен, потому что иначе было бы меньше языков.
A>Нет, я так не считаю, но пока что тут никто про объективные недостатки JS и не говорил.
Разве?
НС>>Так и запишем — цитату привести не в состоянии.
A>Раз ты соизволил ответить, то и я напишу: A>
Прям как в анекдоте — сделай язык, которым могут пользоваться дураки, и только дураки будут им пользоваться
И кому я тут нахамил?
A>
Типа миллион леммингов не могут ошибаться?
Это разве хамство?
А теперь сравни со своим:
А то, что у вас психотравма, вызванная долгим изучением ООП на классах, не проблема языка.
Если непонятно, в чем разница: в моих цитатах нет упоминания личности собеседника, в отличие от.
НС>>>Знаешь, по большинству применений этот самый прототипный ООП на самом деле и не ООП вовсе, а некий аналог extension methods в дотнете. Синтаксический сахарок, то есть.
M>>Аналогично для «классического» ООП
НС>Да ну на. Полиморфизм в классическом ООП одна из основных фич.
Ты уже определись, ты про фичи или про применение?
Здравствуйте, Mamut, Вы писали:
НС>>Да ну на. Полиморфизм в классическом ООП одна из основных фич.
M>Ты уже определись, ты про фичи или про применение?
Ты считаешь что полиморфизм в типичной ОО программе применяется редко?
НС>>>Да ну на. Полиморфизм в классическом ООП одна из основных фич.
M>>Ты уже определись, ты про фичи или про применение?
НС>Ты считаешь что полиморфизм в типичной ОО программе применяется редко?
Ты считаешь, что полиморфизм редко применяется в JS?
Повторю, чтобы ты не терял контекста:
> Знаешь, по большинству применений этот самый прототипный ООП на самом деле и не ООП вовсе, а некий аналог extension methods в дотнете. Синтаксический сахарок, то есть.
Аналогично для «классического» ООП
Наверное, 90% применений ООП выливается в «добавить один-два новых метода к существующему классу». Хм, странно. Как и в JS.
Здравствуйте, Mamut, Вы писали:
НС>>Ты считаешь что полиморфизм в типичной ОО программе применяется редко?
M>Ты считаешь, что полиморфизм редко применяется в JS?
В сочетании с доопределенными в пользовательском коде свойствами и методами — нечасто.
НС>>>Ты считаешь что полиморфизм в типичной ОО программе применяется редко?
M>>Ты считаешь, что полиморфизм редко применяется в JS?
НС>В сочетании с доопределенными в пользовательском коде свойствами и методами — нечасто.
Переведи эту фразу на русский, плиз.
Ну и раз ты сам заговорил об extension methods... Вот вы с Пацаком продолжаете твердить, что, мол, в JS должен быть ООП, как и в других мейнстримных языках. Я задавал этот вопрос уже раза три, и ни разу никто так на него и не ответил: какую реализацию ООП возьмем?
Вот, например, extension methods из C#. В prototype-based OO функциональность, ими предоставляемая, существует, что говорится, «искаропки». Собственно, из-за определения prototype-based OO.
А теперь предположим, что мир сошел с ум и пошел по предлагаемому вами пути. То есть на JS взяли и натянули «классическое» ООП. Так какую реализацию этого самого ООП берем?
— с множественным наследованием или без?
— с интерфйсами или без?
— с extension methods или без?
Здравствуйте, Mamut, Вы писали:
D>>Один вопрос. Как мне на JS сделать иерархию классов с передачей параметров конструктора базовому классу?
M>Можно посмотреть, как это сделано в ExtJS, например. Сейчас просто навскидку не скажу
Не знаю за ExtJS, но в yui, к примеру, это сделано через задницу. Нормального способа не существует, а агрегация — не всегда решение (мне лично что-то сложное на JS нужно только когда я дублирую серверный код, скажем те же формы для client-only валидации и прочей динамики).
Здравствуйте, Mamut, Вы писали:
НС>>В сочетании с доопределенными в пользовательском коде свойствами и методами — нечасто.
M>Переведи эту фразу на русский, плиз.
А что тут непонятного? Чтобы прототипное ООП действительно им было, нужен полиморфизм по методам, которые динамически добавляются в пользовательском коде.
M>Ну и раз ты сам заговорил об extension methods... Вот вы с Пацаком продолжаете твердить, что, мол, в JS должен быть ООП
Ложь. Я такого никогда не утверждал.
M>Я задавал этот вопрос уже раза три, и ни разу никто так на него и не ответил: какую реализацию ООП возьмем?
В каком смысле какую? Можно поконкретнее?
M>Вот, например, extension methods из C#. В prototype-based OO функциональность, ими предоставляемая, существует, что говорится, «искаропки». Собственно, из-за определения prototype-based OO.
Здравствуйте, anonymous, Вы писали:
A>>>Нет, я так не считаю, но пока что тут никто про объективные недостатки JS и не говорил. НС>>Разве?
A>Точно тебе говорю.
А мне, показалось что, к примеру, обсуждали ситуацию, когда несколько дней было потеряно из-за пропущенного var. По мне так такое для современного ЯП — epic fail и такой язык хорошим называться не может.
НС>>Если непонятно, в чем разница: в моих цитатах нет упоминания личности собеседника, в отличие от. A>Обезличенное хамство не менее хамовато.
НС>>>В сочетании с доопределенными в пользовательском коде свойствами и методами — нечасто.
M>>Переведи эту фразу на русский, плиз.
НС>А что тут непонятного? Чтобы прототипное ООП действительно им было, нужен полиморфизм по методам, которые динамически добавляются в пользовательском коде.
У тебя странное понимание или ООП или полиморфизма, или и того и другого вместе
(специально для тебя, а то у тебя опять странные ассоциации начнутся: тэг java ниже использован только потому, что на RSDN нет тэга для подсветки javascript'а)
// вместо Object может быть любой другой объект, тут просто иллюстрацияvar a = new Object();
// типа extension methods
// функциональность доступна из коробки в любом прототипном языке по определению
// Более того, это ничем не отличается от банального добавления нового метода в определение класса
// Единственная разница — добавление может происходить динамически
Object.protype.new_method = function(){...};
// Полиморфизм никуда не делся
// то, что он выглядит/реализован по-другому
// не значит, что его нет или он редко используется
// Вот он, во всей красе:
// у объекта а поменялся класс
// теперь он — наследник базового класса, с новым методом
a.another_method = function(){ ... };
// Разовьем идею, дадим ей черты
// - с одной стороны, нужные, если нам нужна новая функциональность на основе базового класса
// чаще, чем один раз
// - с другой стороны, более привычная всяким зашоренным мозгам:
// примеры из ExtJS, используемые функции приводить не буду, и так все понятно должно быть
// создали объект класса Ext.Panel
// пердположим, что у Panel есть метод renderTo();var panel = new Ext.Panel({...});
// создали новый класс-наследник Ext.Panel, отличающийся от родителя одним новым методомvar MyCustomPanel = Ext.extend(Ext.Panel, {
new_method: function(){...};
});
// создаем объект класса MyCustomPanelvar custom_panel = new MyCustomPanel({...})
panel.renderTo(...); // ура, сработало
panel.new_method(); // ошибка, потому что нетути такого в базовом классе
custom_panel.renderTo(); // ура, сработало, потому что наследование и полиморфизм
custom_panel.new_method(); // ура, сработало, по тем же причинам
Я привел список из трех пунктов, которые ты решил не цитировать, и на него не отвечать. Куда ж еще конкретнее?
M>>Вот, например, extension methods из C#. В prototype-based OO функциональность, ими предоставляемая, существует, что говорится, «искаропки». Собственно, из-за определения prototype-based OO.
НС>extension methods это не ООП.
Без разницы. Какую именно реализацию берем, и почему?
D>>>Один вопрос. Как мне на JS сделать иерархию классов с передачей параметров конструктора базовому классу?
M>>Можно посмотреть, как это сделано в ExtJS, например. Сейчас просто навскидку не скажу
D>Не знаю за ExtJS, но в yui, к примеру, это сделано через задницу. Нормального способа не существует, а агрегация — не всегда решение (мне лично что-то сложное на JS нужно только когда я дублирую серверный код, скажем те же формы для client-only валидации и прочей динамики).
Здравствуйте, fmiracle, Вы писали:
F>С JS очень часто приходится "по-чуть-чуть" взаимодействовать людям, пишущим на C# или Java. Т.е. основной для них язык с "традиционной" схемой наследования. Пишут серверную часть веб прилады и время-от-времени, но редко, требуется сделать немного кода на стороне клиента. И вот тут начинается ломка.
Ему это уже раз десять говорили. Без толку — человек принципиально не понимает разницы между "писать ежедневно" и "пописывать иногда". Либо (более вероятно имхо) делает вид, что не понимает этой разницы.
A>>>>За 5 минут чужие скрипты не дорабатывают, ни на одном из новых для программиста языков. П>>>OK, один день раз в полгода — и? Что это меняет-то? M>>Если это — скрипт на Питоне, это что-то изменит? Если да, то что? А если на Ruby?
F>Изменит.
F>С JS очень часто приходится "по-чуть-чуть" взаимодействовать людям, пишущим на C# или Java. Т.е. основной для них язык с "традиционной" схемой наследования. Пишут серверную часть веб прилады и время-от-времени, но редко, требуется сделать немного кода на стороне клиента. И вот тут начинается ломка. На первый взгляд язык похож на C#/Java, даже названием, а потом вдруг начинаются проблемы. Причем он не воспринимается как серьезный язык данным программистом. Потому что для него основная программа — это серверный код. А эти js-дополнения просто вспомогательные расширения. Человеку как-то не приходит в голову, что эту фигню надо тоже тщательно заранее изучить.
Опять. В одном предложении «по чуть-чуть» и «тщательно изучить». Вы уже определитесь, что вы делаете — по чуть чуть или все жа тщательно. Если по чуть-чуть, то ничего особо странного в JS нет.
F>>С JS очень часто приходится "по-чуть-чуть" взаимодействовать людям, пишущим на C# или Java. Т.е. основной для них язык с "традиционной" схемой наследования. Пишут серверную часть веб прилады и время-от-времени, но редко, требуется сделать немного кода на стороне клиента. И вот тут начинается ломка.
П>Ему это уже раз десять говорили. Без толку — человек принципиально не понимает разницы между "писать ежедневно" и "пописывать иногда". Либо (более вероятно имхо) делает вид, что не понимает этой разницы.
Тебе уже тоже 10 паз говорили, что при «пописывать иногда» всех твоих страхов никогда не видно.
Здравствуйте, Mamut, Вы писали:
M>Тебе уже тоже 10 паз говорили, что при «пописывать иногда» всех твоих страхов никогда не видно.
И каждый раз это утверждение заканчивалось словами "...надо только изучить и заюзать костыль библиотечку под названием XXXXX". Тогда как речь, напоминаю, идет не о библиотеках, а об языке. Который в чистом виде для такого режима не удобен ни разу.
Лично мне, благодаря некоторому общему опыту, прототипы и классы в js не вызывают проблем. Но я бы тоже предпочел, чтобы язык в браузере был ближе к языку на сервере, поскольку переключение парадигмы — не очень-то удобно. Плюс необходимость в более глубоких концепциях js возникает настолько редко, что детали забываются, и когда таки возникает необходимость что-то такое сделать, зачастую приходится лезть за справочником...
M>>Опять. В одном предложении «по чуть-чуть» и «тщательно изучить». Вы уже определитесь, что вы делаете — по чуть чуть или все жа тщательно. Если по чуть-чуть, то ничего особо странного в JS нет.
F>Это ты определись — на что тебе жалуются. На то, что в JS "неправильные классы" или на то, что "в нем вааще-вааще ничего невозможно сделать".
Вот я и пытаюсь. Начинаещь подходить со стороны «новый инструмент надо изучать», начинается нытье про «раз в полгода» и сказки про страшные делегаты
как тут же начинается, цитирую тебя в этом же сообщении: к нам приходят на работу (!) люди, чья задача (!) писать какую-то функциональность на JS.
Но, блин, JS виноват в том, что для изучения инструмента, от которого зависит решение определенной задачи считается нормальным подход «И тут бы ему изучить js тщательно, ан нет — задача решена и так, все работает»
При том, что если бы такой подход был применен к любому другому инструменту на той же работе, человек вылетел бы на улицу на второй же день
Так что вы давайте определяйтесь, что такое у вас «чуть-чуть» и «раз в полгода»
Потому что код на js, занимающийся валидацией данных — без прототипов! — мало чем будет отличаться от аналогичного кода на том же C#.
Ах, да. Там не будет слова class, а будет, наверное, слово function
F>В результате у человека остается: F>1. умение работать с js на базовом уровне, достаточном для решения всех его практических задач (хотя и зачастую весьма неудобным образом). Что убирает необходимость в его дальнейшем изучении. F>2. впечатление, что язык ограничен именно этим базовым уровнем, а для более сложных вещей, используется какая-то черная магия и непонятные костыли.
Угу. И в этом виноват — внезапно — язык, а не человек. Нуну.
M>>Тебе уже тоже 10 паз говорили, что при «пописывать иногда» всех твоих страхов никогда не видно.
П>И каждый раз это утверждение заканчивалось словами "...надо только изучить и заюзать костыль библиотечку под названием XXXXX". Тогда как речь, напоминаю, идет не о библиотеках, а об языке. Который в чистом виде для такого режима не удобен ни разу.
Ага, известный аргумент. Как только JS — надо обязательно писать только на голом JS. Как только другой язык — бури люую библиотеку вплоть до use System.Windows.Forms.
Но дадада. Одинаковые подходы ко всем языкам и инструментам — это для слабаков.
Здравствуйте, Mamut, Вы писали:
M>Ага, известный аргумент. Как только JS — надо обязательно писать только на голом JS. Как только другой язык — бури люую библиотеку вплоть до use System.Windows.Forms.
Ога, именно так. Потому что на любом другом языке момент "используй библиотеку" у человека наступает обычно после того, как он более-менее сносно поймет сам язык. А не вместо этого, как это предлагаешь ты.
M>Но дадада. Одинаковые подходы ко всем языкам и инструментам — это для слабаков.
Вот интересно, сколько еще человек и сколько раз тебе должны тут написать о том, что в случае js подход изначально кардинально отличается от повседневно используемых языков, чтобы ты перестал делать вид, что ты этого не понимаешь? Вот выше fmiracle уж совсем разжевал и чуть ли не в рот положил — ан нет, никакого эффекта, продолжаешь всё тот же бессмысленный плач Ярославны. Самому-то не надоело еще?
F>P.S. F>Долго писал, забыл добавить.
F>Лично мне, благодаря некоторому общему опыту, прототипы и классы в js не вызывают проблем. Но я бы тоже предпочел, чтобы язык в браузере был ближе к языку на сервере, поскольку переключение парадигмы — не очень-то удобно. Плюс необходимость в более глубоких концепциях js возникает настолько редко, что детали забываются, и когда таки возникает необходимость что-то такое сделать, зачастую приходится лезть за справочником...
Совсем забыл. Я бы тоже был совсем не против иметь одинаковый язык на сервере и в браузере. Только вот языков на сервере — легион
M>>Для того, чтобы сносно понять JS нужно полдня. Ладно, один.
П>Угу — день чтобы выучить и полдня — чтобы вспомнить. При том, что ровно те же полдня-день обычно имеются в распоряжении программиста для того, чтобы на нем что-то закодить. Об чем тебе тут уже не меньше десяти раз сказали.
Для того, чтобы вспомнить, нао сильно меньше полудня.
M>>Чем он кардинально отличается?
П>Вот вышенаписанным и отличается. Об чем тебе тут уже не меньше десяти раз сказали. Но вместо того, чтобы это наконец уже вкурить — ты предпочитаешь продолжать свой плач Ярославны про "плохих программистов, которые не играют в твою любимую игрушку".
Чем, всем? Ты мне уже сказки про листенеры рассказывал, на прямо заданный вопрос
M>>Для того, чтобы вспомнить, нао сильно меньше полудня.
П>Не настолько сильно, чтобы это не было критично при разовой быстрой разработке. О чем тебе здесь уже десять раз сказали.
Настолько сильно.
П>>>Вот вышенаписанным и отличается. Об чем тебе тут уже не меньше десяти раз сказали. Но вместо того, чтобы это наконец уже вкурить — ты предпочитаешь продолжать свой плач Ярославны про "плохих программистов, которые не играют в твою любимую игрушку".
M>>Чем, всем?
П>Где ты увидел слово "всем"? Начались твои стандартные игры в подгонку вопросов под ответ?
Сорри, имелось в виду «вышеописанное» или ты не все вышеописанное имеешь в виду?
M>>Ты мне уже сказки про листенеры рассказывал, на прямо заданный вопрос
(не один раз), чем таким они отличаются ты так и не смог ответить.
П>Тебе десять (а может уже и двадцать) раз уже сказали — разница не в сложности синтаксиса, а в том, в каком режиме изучаются его отличия.
Раз двадцать про эти отличия я уже спрашивал, кроме нытья в ответ ничего услышано не было.
П>Причем в том самом сообщении, на которое ты ссылаешься я тебе об этом сказал тоже.
В каком именно?
П>О том, как с этим бороться, тебе также написали неоднократно — в том числе и я, в первом же ответе
этого топика. Ты успешно перевел стрелки, отправил эти ответы в игнор и продолжил ныть про нехороших программистов, не желающих учить твой любимый язык.
То, что я не ответил на это конкретное сообщение, не значит, что я его проигнорировал. И гле ты там видишь перевод стрелок —
П>О чем с тобой вообще после этого можно разговаривать? Ты фанат, Дима, и как любой фанат — ты невменяем.
Я, вообще-то, задаю конкретные вопросы, ан которые ты пока не родил ни одного внятного ответа. Ни про листенеры, ни про уобъем работ, выполняемый программистом «раз в полгода» ни на прочие
M>>На прямо заданный вопрос
anonymous'а ты точно так же не смог ответить.
П> Я утверждаю, что писать домашние страницы на прототипном ООП неудобно и сложно — и я же должен искать этому опровержения в виде написанных на нем страниц? Да ты не офигел ли, уважаемый? Это вы с анонимусом должны с полпинка находить их тоннами, чтобы доказать мне легкость этого процесса.
Мы тебе хором говорим, что для написания домашних страниц, знание прототипов тебе не понадобится совсем. Ты продолжаешь ныть про сложность яваскрипта и «отличие листенеров». КТо из нас фанат?
П>Но пока всё, чего вы достигли — это перевели стрелки с чистого js на костыль в виде jQuery.
Маркетинг рулит. Главная задача jQuery — облегчить работу с DOM'ом, который к JS вообще никакого отношения не имеет. Что понятно из контекста того абзаца, из которого ты выдрал цитату.
Здравствуйте, Mamut, Вы писали:
П>>Не настолько сильно, чтобы это не было критично при разовой быстрой разработке. О чем тебе здесь уже десять раз сказали. M>Настолько сильно.
Не настолько.
M>Сорри, имелось в виду «вышеописанное» или ты не все вышеописанное имеешь в виду?
Выше там было написано только одно:
Угу — день чтобы выучить и полдня — чтобы вспомнить. При том, что ровно те же полдня-день обычно имеются в распоряжении программиста для того, чтобы на нем что-то закодить. Об чем тебе тут уже не меньше десяти раз сказали.
Что из этого короткого абзаца ты считаешь "всем", а что "не всем" — я хз, но писали тебе об этом уже раз двадцать.
M>Раз двадцать про эти отличия я уже спрашивал, кроме нытья в ответ ничего услышано не было.
Ни фига подобного. Тебе уже несколько раз подробно все объясняли. Последний раз это пытался сделать fmiracle страницей выше. В ответ ты как обычно прикинулся непонимающим и заныл про сложные листенеры и профнепригодных программистов.
П>>Причем в том самом сообщении, на которое ты ссылаешься я тебе об этом сказал тоже. M>В каком именно?
Внезапно разучился ходить по приведенным тобой же ссылкам?
M>Я, вообще-то, задаю конкретные вопросы, ан которые ты пока не родил ни одного внятного ответа.
И не собираюсь — потому что этими вопросами ты тупо переводишь тему.
M>Мы тебе хором говорим, что для написания домашних страниц, знание прототипов тебе не понадобится совсем.
Зато понадобится знание jQuery — что в принципе те же яйца, но видимые под другим углом.
M>Ты продолжаешь ныть про сложность яваскрипта и «отличие листенеров».
Не я, а ты. Пеняя при этом почему-то на программистов.
M>КТо из нас фанат?
M>>Сорри, имелось в виду «вышеописанное» или ты не все вышеописанное имеешь в виду?
П>Выше там было написано только одно: П>
П>Угу — день чтобы выучить и полдня — чтобы вспомнить. При том, что ровно те же полдня-день обычно имеются в распоряжении программиста для того, чтобы на нем что-то закодить. Об чем тебе тут уже не меньше десяти раз сказали.
П>Что из этого короткого абзаца ты считаешь "всем", а что "не всем" — я хз, но писали тебе об этом уже раз двадцать.
Я думал, ты говоришь про текст fmiracle.
M>>Раз двадцать про эти отличия я уже спрашивал, кроме нытья в ответ ничего услышано не было.
П>Ни фига подобного. Тебе уже несколько раз подробно все объясняли. Последний раз это пытался сделать fmiracle страницей выше. В ответ ты как обычно прикинулся непонимающим и заныл про сложные листенеры и профнепригодных программистов.
Начинаешь подходить со стороны «новый инструмент надо изучать», начинается нытье про «раз в полгода» и сказки про страшные делегаты и т.п.
Ладно. Начинаем спрашивать про новичков, что именно страшно — jQuеry там или прототипы или те же листенеры как тут же начинается, цитирую тебя в этом же сообщении: к нам приходят на работу (!) люди, чья задача (!) писать какую-то функциональность на JS.
То есть с вашей стороны постоянные пляски с подменой понятий. Не гвооря уже о том, что самое якобы страшное, что есть в JS — протипный ООП, против которого большинство выступлений, не нужен ни в том ни в другом случае.
П>>>Причем в том самом сообщении, на которое ты ссылаешься я тебе об этом сказал тоже. M>>В каком именно?
П>Внезапно разучился ходить по приведенным тобой же ссылкам?
Приведи, плз, ссылку, потому что я не совсем понимаю, что ты имеешь в виду.
M>>Мы тебе хором говорим, что для написания домашних страниц, знание прототипов тебе не понадобится совсем.
П>Зато понадобится знание jQuery — что в принципе те же яйца, но видимые под другим углом.
Издеваешься? Для изучения jQuery нужно минут 20 при условии, если человек знает, что такое ФВП/анонимные функции. Если он знает C#, он это уже знает.
M>>Ты продолжаешь ныть про сложность яваскрипта и «отличие листенеров». П>Не я, а ты. Пеняя при этом почему-то на программистов.
Как раз не я, а ты. Про листенеры, которые якобы сильно отличаются от C# — это твои буйные фантазии.
Здравствуйте, Mamut, Вы писали:
M>Совсем забыл. Я бы тоже был совсем не против иметь одинаковый язык на сервере и в браузере. Только вот языков на сервере — легион
Не, очень мало. Когда софт пишется для конкретного — крупного — заказчика, тот вводит ограничения по тому, какие языки он допускает, чтобы потом не иметь проблем с поддержкой созданной системы.
И ограничивает круг только очень широко распространенными, чтобы не иметь проблем с поддержкой.
И доказать полезность другого решения нереально — требования диктуются корпоративной политикой из центрального офиса, возможно даже заграничного, и туда недокричишься.
Здравствуйте, Mamut, Вы писали:
M>То есть с вашей стороны постоянные пляски с подменой понятий.
Ничуть не бывало — в обоих случаях обсуждается один и тот же сценарий — человек, который ИНОГДА что-то пишет на js. Штат client-side разработчиков, лабающих скрипты по сорок часов в неделю, содержат очень немногие конторы. А для человека, пишущего на той же джаве или шарпе, необходимость изредка переходить на js обозначает, что ему придется регулярно переключать контекст. И материть он за это будет не основной используемый язык, а то необычное чудо, на которое ему придется переключаться. О чем тебе тут тоже уже раз двадцать говорили.
M>Не гвооря уже о том, что самое якобы страшное, что есть в JS — протипный ООП, против которого большинство выступлений, не нужен ни в том ни в другом случае.
Ну тебе конечно издалека виднее, чем fmiracle, который приводил этот пример. Но лично мне, например, объекты даже в юзерскрипте однажды пригодились. Хотя подход "раз сложно юзать — будем считать, что это и не надо" — он, конечно, универсальный, тут особо не поспоришь.
M>Приведи, плз, ссылку, потому что я не совсем понимаю, что ты имеешь в виду.
Тяжелый случай... Вот твоя же цитата:
M>Ты мне уже сказки про листенеры рассказывал, на прямо заданный вопрос
M>Издеваешься? Для изучения jQuery нужно минут 20 при условии, если человек знает, что такое ФВП/анонимные функции.
О, в обсуждении внезапно снова появились конкретные синтаксические конструкции. Т.е. внезапно выясняется, что знание их специфики в js нам для работы все-таки тоже необходимо. В итоге от чего ушли — к тому и пришли:
Javascript стал популярным, поэтому мне придется изучать его для того, чтобы раз в три месяца что-то поправить на домашней страничке
Стоило столько отбрыкиваться, да...
M>Как раз не я, а ты. Про листенеры, которые якобы сильно отличаются от C# — это твои буйные фантазии.
Все, что я тебе сказал — это то, что их синтаксис неочевиден с первого взгляда и вхождение в него требует времени. Которое человек, пишуший на js лишь изредка, справедливо воспринимает как бесполезно потраченное. Про то, что они сами по себе чем-то сложнее или проще, чем в шарпе — это уже исключительно ТВОИ буйные фантазии, я такого нигде не утверждал. Проблема js — это не проблема языка, это проблема использования этого языка. О чем тебе уже раз двадцать тут говорили.
Здравствуйте, fmiracle, Вы писали:
F>Если бы вместо JS в браузере был Питон, то жалобы были бы не на классы, а на отступы.
Нет. Отступы, по большому счету, это элемент культуры — человек, который привык нормально форматировать исходники, не испытает большого дискомфорта и от необходимости форматировать их всегда. Жалобы были бы, скорее всего, на вещи типа self и чудес с областью видимости. Но их было бы всяко меньше, т.к. Гвидо не выпендривался и сделал язык по крайней мере в базовых вещах довольно близким к мейнстриму. Зачем понадобилось выпендриваться создателям js — непонятно, а объяснения типа "зато прототипы позволяют легко создать миллион разных классов" применительно к браузерной вспомогалке как-то даже не улыбают.
M>>Угу. И в этом виноват — внезапно — язык, а не человек. Нуну.
F>Да. Для большинства людей источник проблем всегда не в них, а в неправильно устроенном мире вокруг них. Тебя это удивляет?
Мнея удивляет, что ты считаешь процитированное нормальным поведением твоего же сотрудника/коллеги:
Откатывается на вариант 1, по-быстрому копипастит клоны методов и материт js, "что все в нем неправильно".
И тут бы ему изучить js тщательно, ан нет — задача решена и так, все работает, а следующее рандеву с js как-то пока не предвитися (оно будет, спустя какое-то время, но не сейчас).
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, Mamut, Вы писали:
M>>То есть с вашей стороны постоянные пляски с подменой понятий.
П>Ничуть не бывало — в обоих случаях обсуждается один и тот же сценарий — человек, который ИНОГДА что-то пишет на js. Штат client-side разработчиков, лабающих скрипты по сорок часов в неделю, содержат очень немногие конторы. А для человека, пишущего на той же джаве или шарпе, необходимость изредка переходить на js обозначает, что ему придется регулярно переключать контекст. И материть он за это будет не основной используемый язык, а то необычное чудо, на которое ему придется переключаться. О чем тебе тут тоже уже раз двадцать говорили.
Все поскипано. Начнем сначала. Список «необычных чудес», с которым надо сталкиваться в обязательном порядке — в студию. А то, что-то мы огромный GUI-проект писали без необходимости трогать прототипное наследование вообще, а ты мне рассказываешь сказки про необходимость знать прототипное наследование для домашних страничек
M>>Ну блин, аналогично для любого языка программирования. M>>Был бы питон, ныли бы про отступы, self в декларациях методов и крявый синтаксис лямбд. ПОтому что это все отличается от Java/C#/C++/бог знает, что
F>В точку. Я как раз хотел привести этот пример, а ты и сам привел. F>Если бы вместо JS в браузере был Питон, то жалобы были бы не на классы, а на отступы.
Ну так и я о том же А мне рассказывают сказки про то, что если бы был Питон/Руби, все было бы гораздо лучше и замечательнее Я бы своих Javascript-программистов к Ruby не подпустил бы на пушечный выстрел, да и они сами бы не подошли
того, какую хренотню может написать на js тот же приходящий в него изредка java-программист. В итоге каждый раз выяснялось, что ты в курсе, но тебя это не колышет
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, fmiracle, Вы писали:
F>>Если бы вместо JS в браузере был Питон, то жалобы были бы не на классы, а на отступы.
П>Нет. Отступы, по большому счету, это элемент культуры — человек, который привык нормально форматировать исходники, не испытает большого дискомфорта и от необходимости форматировать их всегда.
Да это вообще задача IDE-хи.
П>Жалобы были бы, скорее всего, на вещи типа self и чудес с областью видимости. Но их было бы всяко меньше, т.к. Гвидо не выпендривался и сделал язык по крайней мере в базовых вещах довольно близким к мейнстриму. Зачем понадобилось выпендриваться создателям js — непонятно, а объяснения типа "зато прототипы позволяют легко создать миллион разных классов" применительно к браузерной вспомогалке как-то даже не улыбают.
Исторически сложилось. Жабаскрипт развивался давно, и странными путями. Не так, как жаба(все по стандарту, стандарт держим без изменений по максимуму), не так как шарп(МС — наше все, верим в него и его заповеди, хотя в заповедях как-то много от жабы), не так, как плюсы(во что бы то ни стало держим курс на производительность и низкий уровень, на все остальное насрать), не так как питон(я хз, не знаю его).
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
того, какую хренотню может написать на js тот же приходящий в него изредка java-программист. В итоге каждый раз выяснялось, что ты в курсе, но тебя это не колышет
. Что здесь с таким подходом можно дальше обсуждать — я не представляю.
Не, ну если читать только то, что тебе хочется — да. В последней ссылке:
у JS есть есть много объективных проблем, которые постепенно выправляются. Одну из таких объективных проблем ты описал выше. Но это — объектвиная проблема, и я уже об этом тебе говорил.
По поводу остального:
M>Где? Ссылки в студию. Если их выше крыши, ты наберешь хотя бы три?
1) нетипизированность (Cyberax)
2) прототипное ООП (все)
3) var (Sinclair)
От себя могу добавить еще странную модульность, реализуемую через всякие requirejs и т.п. велосипеды.
Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз
Прототипное ООП «раз в полгода», «новичку» и «для домашнй страницы» не понадобится вообще никогда
var — см. комментарий про объективные проблемы
модульность не проблема для тех же «раз в полгода», «новичку» и «для домашнй страницы»
что такое т.п. велосипеды — неизвестно. Хотя известно, что с твоей точи зрения использовать библиотеки в других языках нормально, а в JS — это зло и велосипеды, агага
Здравствуйте, Mamut, Вы писали:
M> у JS есть есть много объективных проблем, которые постепенно выправляются. Одну из таких объективных проблем ты описал выше. Но это — объектвиная проблема, и я уже об этом тебе говорил.
Ну то есть ровно как я и сказал, подход — "я в курсе проблем, но они мне похрен, а кому не нравится с этим трахаться — это их проблемы, пусть заткнутся и молчат в трубочку".
M>> у JS есть есть много объективных проблем, которые постепенно выправляются. Одну из таких объективных проблем ты описал выше. Но это — объектвиная проблема, и я уже об этом тебе говорил.
П>Ну то есть ровно как я и сказал, подход — "я в курсе проблем, но они мне похрен, а кому не нравится с этим трахаться — это их проблемы, пусть заткнутся и молчат в трубочку".
Неверно. Ты, как всегда, читаешь только то, что тебе хочется читать. Не говоря уже о том, что проблем в любом языке будет выше крыши, но тебя смущает, почему-то, только JS. То, что ты скипнул все остальное, весьма показательно.
M>>>>Руби и Питон тоже нетипизированы. ВНЕЗАПНО сюрприз. Что не мешает тебе рассказывать сказки про то, что Питон/Руби будут лучше КБ>>>Не знаю как руби, а Питон вполне себе строго-типизирован. Строку с числом просто так сложить не получится. M>>Не путай статическуб типизацию и строгую типизацию.
КБ>Это ты не путай. Претензии к говнотипизации яваскрипта, в первую очередь к ее не строгости. Да ну, каким образом ты это вывел из «нетипизрованости яваскрипта» выше?
, с того, о чем тебе тут уже раз двадцать говорили:
П>
П>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей
П>Иметь ради этой фигни геморрой с изучением js-специфики — нафиг никому не надо, когда ты это уже наконец поймешь...
Хорошо, начнем. Почему ты считаешь, что Питон/Руби будут лучше, несмотря на то, что специфики там столько же, а то и больше? Только не надо рассказывать сказки про автомобили.
П>>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей
П>>Иметь ради этой фигни геморрой с изучением js-специфики — нафиг никому не надо, когда ты это уже наконец поймешь... M>Хорошо, начнем. Почему ты считаешь, что Питон/Руби будут лучше, несмотря на то, что специфики там столько же, а то и больше?
Извините, что вмешиваюсь, но это уже какой-то клинический фанатизм-евангелизм. Вы то что вам отвечают не читаете принципиально или просто понять не можете?
П>>>Основная причина имхо в том, что js для большинства пишущих на нем программистов — это второй язык, который используется только время от времени для чисто вспомогательных вещей
П>>>Иметь ради этой фигни геморрой с изучением js-специфики — нафиг никому не надо, когда ты это уже наконец поймешь... M>>Хорошо, начнем. Почему ты считаешь, что Питон/Руби будут лучше, несмотря на то, что специфики там столько же, а то и больше?
YKU>Извините, что вмешиваюсь, но это уже какой-то клинический фанатизм-евангелизм. Вы то что вам отвечают не читаете принципиально или просто понять не можете?
Я читаю, и задаю уточняющие вопросы. Причем, почему я их уточняю, я уже раз двадцать написал подробно.
Повторю в двадцать первый.
Вот мне дали (причем не с первого раза) список (далеко не полный) проблем, которые, с точки зрения моих оппонентов, есть в JS.
После этого списка моими оппонентами были выдвинуты следующие заявления (возьмем пока только эти я тоже люблю цитировать избирательно):
1. нафига программисту такой геморрой?
2. Питон/Руби были бы лучше, потому что они, якобы, блие в концепциях программистам на мейнстримных языках
И до этого списка:
3. JS обычно второй язык, поэтому все его заморочки никто учить не будет.
На что у меня возникают встречные вопросы/заявления:
1. в зависимости от того, что именно требуется, геморроя не будет вообще или будет не больше, чем в любом другом языке программирования.
Поясню: на протяжении топика то говорилось про программистов, которые по работе раз в полгода что-то правят, то про правку домашней страницы. Особенно это было весело в контексте прототипного наследования, которое в превом случае скорее всего даже не появится, а во втором случае просто не появится.
2. чем Питон/Руби будут лучше, если в каждом из них есть целая толпа собственных заморочек, которые программисту надо будет точно так же учить?
3. то, что JS — второй язык, не значит, что его вообще учить не надо. Но не значит, что надо учить все 100% его возможностей и странностей. Для описанных в топике задач хватает процентов 10 знаний Яваскрипта. Но и это не суть важно. Если бы был не JS, а Питон/Руби, все что угодно, нытье про «ай,в торой язык, зачем учить его заморочки» все так же останутся в силе?