LINUX.ORG.RU

[вброс]Почему объектно-ориентированное программирование провалилось?

 


2

7

http://citforum.ru/gazeta/165/

по линку многабукаф, немного для Ъ:

факт остаётся фактом: сторона, представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp’еров была куда убедительней и последовательней, чем сторонников ООП.

Другой крупный критик ООП – это известный специалист по программированию Александр Степанов, который, работая в Bell Labs, участвовал в создании C++ вместе c Бьерном Страуструпом (Bjarne Stroustrup), а впоследствии, уже после приглашения в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП; в частности, он пишет: “Я уверен, что парадигма ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы вы приходите к тому, что оказываетесь в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг – из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле”.

Ричард Столлман (Richard Stallman) также известен своим критическим отношением к ООП, особенно он любит шутить насчет того мифа объектников, что ООП “ускоряет разработку программ”: “Как только ты сказал слово «объект», можешь сразу забыть о модульности”.

Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла “тихая революция”.

Ответ на: комментарий от siberean

> Платить vs бесплатно - это не разница?

бесплатное пиво?

YUI же код _реально_ открыт, а не на словах.

bsd же код _реально_ открыт, а не на словах.

fix.

стало быть gpl код закрыт. мило.

гай может захотеть ещё больше денег

ты так говоришь, как будто продавать gpl софт — это плохо.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

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

Юзать гпл можно, но менять фреймвок - плати деньги. А нам надо было именно менять, и нельзя открывать. И проект можно считать коммерческим. Т.е. так и получается, что гпл - нельзя.
А зачем платить, зависеть, если можно взять YUI, зачем??? Ради каких таких супер-фич?

siberean
()
Ответ на: комментарий от Rastafarra

давай не переливать из пустого в порожнее, не я один такой. Я дал линки на всполошённую общественность (после изменении лицензии), которые думают так же как и я. Да даже если бы была бсд лицензия - этого было бы недостаточно. Я же сказал - что надо смотреть на размер компании, сколько девелоперов, каких - за продуктом стоят, итд. Т.е. прогнозировать на будущее развитие. И второе слило YUI хотя бы по количеству девелоперов и их рангу и тогда и наверное сейчас.

siberean
()
Ответ на: комментарий от korvin_

>> жаба-скрипт

языки с нестрогой типизацией не нужны

Запили себе проверку типов и наслаждайся

SV0L0CH
()
Ответ на: комментарий от siberean

> Юзать гпл можно, но менять фреймвок - плати деньги.

чуть подробнее: я слил gpl сырцы, поменял всякое разное. и...? чего нельзя-то?

Ради каких таких супер-фич?

paginator? сортировка по столбцам на стороне клиента? скроллинг табов? чего ты там еще хотел?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от siberean

> второе слило YUI хотя бы по количеству девелоперов и их рангу и тогда и наверное сейчас.

бугага. судя по способу оформления тех же аяксовых запросов и наличию элементарных фич ты сильно переоцениваешь yui.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от annoynimous

> > с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни

GPS, ускорители как источники излучения для нужд физики, химии и биологии. Это первое, что приходит в голову

annoynimous ***** (26.09.2010 20:17:29)

Слышал что-нибудь о кратности ускорителей ? Ну там предполагается, что в кольце вертится не один пучок (сгусток), а несколько. А можно считать, что просто частицы движутся быстрее скорости света одним пучком. Если это начинает кто-то обсуждать на публике, то его сразу посылают курить маны ... ох прошу прощения: ландафшица.

ЗЫ. Почему что-то принимаешь на веру ... неправильно как-то для анонимуса

anonymous
()
Ответ на: комментарий от anonymous

Как можно говорить о частоте фотона, если у фотона, движущегося со скоростью света, время должно полностью остановиться с соответствии с ТО. И значит вся его частота должна быть всегда 0 по ТО.

anonymous
()
Ответ на: комментарий от DNA_Seq

> разницу между предметом «геометрия» и геометрией улавливаем?

Улавливаю, еще со студенческих времен. Математику можно преподавать двумя способами: в каждом разделе аксиомы, теоремы и будет все «красиво», а слушатель станет болваном. Или вскрывать подземные взаимосвязи между разделами и тогда окажется, что красивого в математике не так уж и много ... ну или этих красивостей сразу незаметно.

Вышку можно преподавать только первым способ.

anonymous
()
Ответ на: комментарий от anonymous

> Слышал что-нибудь о кратности ускорителей ? Ну там предполагается, что в кольце вертится не один пучок (сгусток), а несколько. А можно считать, что просто частицы движутся быстрее скорости света одним пучком. Если это начинает кто-то обсуждать на публике, то его сразу посылают курить маны ... ох прошу прощения: ландафшица.

Не понял тезиса. Как математический прием отменяет действие СТО? Так мы договоримся, что математический прем описания инверсной заселенности через отрицательную термодинамическую температуру отменяет термодинамику... Факт остается фактом: при строительстве и эксплуатации ускорителей нужно использовать СТО.

ЗЫ. Почему что-то принимаешь на веру ... неправильно как-то для анонимуса

Извиняюсь, я профессионально физикой занимаюсь, какая вера?

annoynimous ★★★★★
()
Ответ на: комментарий от anonymous

> Математику можно преподавать двумя способами: в каждом разделе аксиомы, теоремы и будет все «красиво», а слушатель станет болваном. Или вскрывать подземные взаимосвязи между разделами и тогда окажется, что красивого в математике не так уж и много ... ну или этих красивостей сразу незаметно.

Как раз тогда и выясняется, что математика не абстрактно красива, а практически. Как инструмент.

tailgunner ★★★★★
()
Ответ на: комментарий от annoynimous

как профессионал в физике расскажите анонимусу откуда у фотона частота берётся, если он всегда движется со скоростью света и значит по логике ТО там время вообще не течёт, застывает на весь период жизни фотона, понятие частота неприменимо значит. И время жизни фотона значит равно 0, так как время застывает, а медленно он двигаться не может, что бы сдвинуть время.

anonymous
()
Ответ на: комментарий от anonymous

О, я-то думал получил ответ профессионала, а здесь как всегда недоучка какой-то...

О частоте: вообще-то частота измеряется не в системе покоя фотона (а такой системы просто _не_существует_, ибо по той же СТО он в любой системе движется со скоростью c), а в системе покоя наблюдателя. При этом частота не является инвариантом: движущиеся наблюдатели получают другое ее значение (продольный и поперечный эффекты Доплера).

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

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

>здесь как всегда недоучка какой-то...

я давно заметил, что свойство всех релятивистов - быстро переходить на личности и сыпать оскорблениями в адрес всех сомневающихся в ТО.

anonymous
()
Ответ на: комментарий от anonymous

> я давно заметил, что свойство всех релятивистов - быстро переходить на личности и сыпать оскорблениями в адрес всех сомневающихся в ТО.

Я давно заметил, что свойства всех критиков — будь-то СТО или квантовая механика — состоит в том, что противоречие физической теории их «здравому смыслу» полностью теорию опровергает. И пофигу на то, что СТО описывает объективную реальность, ее предсказания многократно проверены, что в в передельном случае c->inf она становится механикой Ньютона, которая также проверена вдоль и поперек, и, в свою очередь, является базой для той же QED, которая является самой точной физической теорией на сегодняшний день. Еще у критиков чаще всего незаконченное высшее образование или высшее техническое, некоторые даже являются к.т.н. Как это называется? Вроде «неасилил», а выделиться хочется, так?

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

> откуда у фотона частота берётся, если он всегда движется со

скоростью света и значит по логике ТО там время вообще не течёт


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

archimag ★★★
()
Ответ на: комментарий от Rastafarra

> чуть подробнее: я слил gpl сырцы, поменял всякое разное. и...? чего нельзя-то?

если «слил gpl сырцы, поменял всякое разное» - обязан свою программу залить обратно, на публичное обозрение. Если тебе менагер это неразрешит (по каким-то причинам) - то ты не можешь пользоваться gpl.

paginator? сортировка по столбцам на стороне клиента? скроллинг табов? чего ты там еще хотел?


всё кроме скролинга табов в yui есть. Из-за него одного - потерплю.

бугага. судя по способу оформления тех же аяксовых запросов и наличию элементарных фич ты сильно переоцениваешь yui.


очень понятное и красивое оформление. А как в ext?

   var onDataBack ={
      success: function(o){
         if(o.responseText !== undefined){
            if(o.responseText != ""){
               processData();
            }
         }
      },
      failure: function(o){
         alert(«Cannot retrieve data from the server»);
      },
      timeout: 5000
   };

   //makes async call to the server for the data. After data will arrive -
   // the UI will be refreshed (see onDataBack callback and onSuccess handler)
   function loadData(){
      var url = «main?cmd=data&tab=» + currentTab+«&»+Math.random();
      YAHOO.util.Connect.asyncRequest('GET', url, onDataBack);
   }

siberean
()
Ответ на: комментарий от siberean

ещё один пример, но тоже всё понятно. определяем колбеки (как в обычном аяксе) и всё (я не знаю - как может выглядеть юседж проще. Либо просто не имеешь контроля):

   //ToolTip callback
   var handleSuccessTT = function(o){
      if(!tt)
         return;
      if(o.responseText !== undefined){
         if(o.responseText != ""){
            tt.cfg.setProperty(«text», o.responseText);
            tt.show();
         }
      }
   };
   var handleFailureTT = function(o){
      //alert(«Cannot retrieve tooltip»); //do not report - no tooltip is fine
   };
   var onTooltipBack ={
      success: handleSuccessTT,
      failure: handleFailureTT,
      //argument: { foo:«foo», bar:«bar» },
      timeout: 5000
   };
   //ToolTip end
   
var request = YAHOO.util.Connect.asyncRequest('GET', url, onTooltipBack);

siberean
()
Ответ на: комментарий от siberean

> если «слил gpl сырцы, поменял всякое разное» - обязан свою программу залить обратно, на публичное обозрение.

ты умеешь пользовать js и никому его не показывать? поделишься секретом?

как в ext?

в ext — ext.direct, который очень красиво вяжется с server side (особо если оно жабское :) ).

var url = «main?cmd=data&tab=» + currentTab+«&»+Math.random();

ну уродство же.

http://bitbucket.org/cattus/hqextdirect/wiki/Tutorial.wiki — вот как надо.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

> http://bitbucket.org/cattus/hqextdirect/wiki/Tutorial.wiki  — вот как надо.

ой, какой ужас.
спасибо, не надо

а если сервер на пхп? на питоне, на перле, или на рельсах?

и это называется простота? Я могу работать и под ви и с любым сервером и не привязан к жабовским бинам и IDE.

(я предложил несклько строк на клиенте, короче чем в виде традиционных хтмльных формочек, а на сервере в любом коде да хоть cgi или жабовском сервлете - возвращаем дату в нескольких десятках строк одной функции. Вот это действительно просто, особенно по сравнению с тем что насоветовано по линку)


Короче, мне всё ясно с вашим забиванием гвоздей микроскопами. Продолжайте. (А лучше - вернитесь из ограниченного мирка жабы - к традиционному вебу, где по-барабану - на чём пишется REST, хоть на лиспе).

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

siberean
()
Ответ на: комментарий от siberean

> а если сервер на пхп? на питоне, на перле, или на рельсах?

да ради бога. что мешает?

Я могу работать и под ви и с любым сервером и не привязан к жабовским бинам и IDE.

я вообще был не в курсе, что vi может цепляться к серверам (по ххтп видимо?), но имхо нифига ты в примере не понял.

лучше - вернитесь из ограниченного мирка жабы - к традиционному вебу, где по-барабану - на чём пишется REST, хоть на лиспе

в твоем «традиционном» вебе все делается руками. сбор запроса — выдача ответа... именно отсюда растет это убожество с «var url = „main?cmd=data&tab=“ + currentTab+»&«+Math.random();». нормальные люди от этого устали и давно автоматизировали.

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

уф... тебе в самом деле под 40...?

объясняю: фича примера не в жабе как языке. и даже не в jvm платформе. фича примера в _рефлексии_. сюрприз.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

> в твоем «традиционном» вебе все делается руками. сбор запроса —

выдача ответа... именно отсюда растет это убожество с «var url =

„main?cmd=data&tab=“ + currentTab+»&«+Math.random();»



Это действительно уродство и прежде всего потому, что противоречит REST.

нормальные люди от этого устали и давно автоматизировали.


Не, по ссылке вообще фигня какая-то.

archimag ★★★
()
Ответ на: комментарий от archimag

> Не, по ссылке вообще фигня какая-то.

4.2

по линку очень правильная и удобная штука.

кстати можешь показать лучше, будет интересно взглянуть.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

> кстати можешь показать лучше, будет интересно взглянуть.

Самый обыкновенный REST. Есть ресурсы, доступ к которым возможен череp нормальные URL, как я такие делаю можно посмотреть здесь. При получении описания какого-либо ресурса с сервера приходят ссылки на связанные ресурсы (как в обычном веб). Что бы JavaScript получил информацию о первоначальных нужных ему ресурсах (ссылках) генерирую специальны js-файл, типа:

(ps:compile-script 
  `(defvar action-links
    (ps:make-object :xxx ,(restas:genurl 'resource-xxx)
                    :yyy ,(restas:genurl 'resource-yyy)
                    ...
                    :zzz ,(restas:genurl 'resource-zzz)))

что даст примерно такой код на JS (очень условно):

var actionLinks = {
  xxx: "/foo/bar/xxx",
  yyy: "/date/yyy",
  ...
  zzz: "/foo/bar/xxx/zzz" 
}

В итоге в JS коде есть полный набор ссылок, по которым он может работать с помощью GET, POST, PUT и DELETE запросов.

Всё очень просто и ясно, без рефлексий и прочих дикостей, а просто строго по REST.

archimag ★★★
()
Ответ на: комментарий от Rastafarra

> ты умеешь пользовать js и никому его не показывать? поделишься секретом?

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

Короче, мне надоело, отвечать больше не обещаю. Мне кажется, моя позиция понятна, и много раз озвучена.

siberean
()
Ответ на: комментарий от Rastafarra

> уф... тебе в самом деле под 40...?

больше

объясняю


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

И всё же ты пропихиваешь жабу (пример то жабовский)

siberean
()
Ответ на: комментарий от Rastafarra

> в твоем «традиционном» вебе все делается руками. сбор запроса — выдача ответа... именно отсюда растет это убожество с «var url = „main?cmd=data&tab=“ + currentTab+»&«+Math.random();». нормальные люди от этого устали и давно автоматизировали.

REST - это сервер.
Я не приводил пример сервера (мы ведь говорим о yui, а не абстракции линков).

В конце концов линки я могу скрыть jsp и любыми другими темплейтами.
Но...не буду для простоты.
комманд-лайн паттерн проще фиксить (команд может быть сотни и даже бесконечное число).

siberean
()

мы, кстати, отклонились от обсуждения удобства клиентовского аякс фреймвока и переключились на реализацию REST.
Как строить компоненты на клиенте - отдельный, хорошо изолированный (в случае с yui) вопрос.
Если перемешивать клиент и сервер и генерировать слишком много кода на сервере - то получится слишком сильное связывание, сложность и трудность перехода сервера на другию реализацию - в случае надобности. И наоборот - если через 3 года окажется, что клиент на gwt генерировать удобнее - то я со своим полным decaupling (комманд-лайн) - поменяю все ГУИ на клиенте, оставив текущую реализацию сервера, ничего на ней не меняя. В этом была сила формочек и CGI, в этом и сила раздельного девелопмента клиента и сервера.

siberean
()
Ответ на: комментарий от archimag

> Что бы JavaScript получил информацию о первоначальных нужных ему ресурсах (ссылках) генерирую специальны js-файл

ну все +/- так же собсно.

Всё очень просто и ясно, без рефлексий и прочих дикостей, а просто строго по REST.

а обратно как читаешь?

пришел тебе post запрос. и чего с ним делать?

у меня в жабе все прозрачно:

js: Flood.save («многа букаф»)

java: Class Flood { void save (String) {} }

и где-то в недрах оно из js этот Flood.save разворачивает в аяксину, а на жабской стороне из пришедшего запроса делает строку и вызывает метод класса. мне остается только в соответствующем месте (генераторе) перечислить все обработчики, которые я хочу выставить наружу.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от siberean

> Если перемешивать клиент и сервер и генерировать слишком
> много кода на сервере - то получится слишком сильное связывание

Лидер индустрии с вами категорически не согласен! Посмотрите на Google Closure Templates, которая используется в gmail, Google App и т.д.

> в этом и сила раздельного девелопмента клиента и сервера.

Нет тут никакой силы, никто такими переделками ведь реально не занимается, просто это фактическое положение, что сервером и клиентом обычно занимаются разные люди, просто как следствие нехватки квалификации.

Когда Google опубликовал Closure Templates у меня был дикий восторг, но, к своему удивлению, я обнаружил, что почти никто не понял и не оценил эту библиотеку. До меня не сразу дошла разница: в Google люди занимаются как сервером, так и клиентом, но в большей части организаций эти роли чётко разделены. Я уже почти полгода использую cl-closure-templatе и обнаружил, что это ведь к очень и очень существенному упрощению разработки. Возможность использования фактически одного и того же кода как на сервере, так и на клиенте - это просто убойная возможность.

archimag ★★★
()
Ответ на: комментарий от siberean

> Я вижу общую сложность твоего подхода, и моего, количество артефактов.

на моей стороне автоматизация запрос/ответов, на твоей ручная сборка/разборка. автоматизации на моей стороне больше — не спорю.

И всё же ты пропихиваешь жабу (пример то жабовский)

просто на работе у меня щас scala, а до нее была жаба. по горячим следам, так сказать.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от archimag

> Возможность использования фактически одного и того же кода как на сервере, так и на клиенте - это просто убойная возможность.

вот!

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от archimag

> Лидер индустрии с вами категорически не согласен! Посмотрите на Google Closure Templates, которая используется в gmail, Google App и т.д.

именно поэтому я не пользуюсь гугловской библиотекой!
Долго пытался к ней привыкнуть, но традиционный веб 90х формами - мешает. Нет даже: просто не хватает контроля - когда за тебя слишком много генерируют. Я хочу всё писать сам. И знаю - что последует за каждой командой.

gwt ужасен на мой взгляд, зря они так. Надо было разделить - и было бы счастье. Потому как компоненты у них побогаче чем у yui на сегодня.

siberean
()
Ответ на: комментарий от siberean

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

раздельный девелопмент — это тормоза развития и общая несогласованноть. чем дальше — тем больше.

или тебя в самом деле развлекает писать сначала на серванте какую-то хрень, потом ее же описывать на клиенте. БД кстати, да? фактически 3 раза пишется одно и тоже, вместо кодогенерации. удивительное рядом.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

> у меня в жабе все прозрачно:

js: Flood.save («многа букаф»)

java: Class Flood { void save (String) {} }

У меня всё гораздо проще и без «чёрной магии».

На клиенте:

$.post(actionLins.save, "многа букаф")

Обработчик на сервере:

(restas:define-route save ("/foo/bar/save"
                           :method :post)
  ;;; Что-то делаем)

Ну и ещё генерация ссылок:

(restas:define-route acton-links-js ("/js/action-links.js"
                                      :content-type "text/javascript")
  (ps:compile-script 
    `(defvar action-links
      (ps:create :xxx ,(restas:genurl 'save))
archimag ★★★
()
Ответ на: комментарий от siberean

> gwt ужасен на мой взгляд, зря они так

Ну разве я про gwt говорил?

archimag ★★★
()
Ответ на: комментарий от Rastafarra

я вас понимаю (сам был в восторге в 90х и начале 2000х от темплейтовых библиотек и написал несколько, в том числе до сих пор работающей на крупнейшей американской газете с миллионами юзеров в день), потом - то же самое стало можно делать с jsp (когда томкат вышел из беты, году в 2000м(?), и все эти JSTL, таглибс, tiles итд итп. На всём делал сайты.
Но со временем понял - что как оно было в 90х - когда веб-мастера ваяли сайты на студиях, а программисты писали CGI - это самый правильных подход.
Жабисты (вернее asp, кажется в 98ом) неправильно забрали у вебмастеров, владеющих стилями и формочками - все эти формочки в свои IDE.

Уже в 2000х я слишком много видел проектов - где жаба веб-девелоперы сидят и ваяют сайты, а вебмастера и художники только рисуют картинки и не у дел (разметку онио править не могут! Это уже темплейтовый код, сложный для них, а главное - пишется он в ИДЕ).
Всё было на веб-программисте, всё абсолютно. И какой-то линк вставить в больших проектах - это был отдельный мини-проект. Но это же неправильно!
И аякс дал возможность опять разделить, вернуться к формочкам и раздельному клиент и сервер-девелопменту!

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

siberean
()
Ответ на: комментарий от Rastafarra

зачем 3 раза? Всё один раз.
На клиенте пишутся только ГУИ компоненты, которые запрашивают для себя дату. Дата возвращается сервером один раз.

siberean
()
Ответ на: комментарий от siberean

> И аякс дал возможность опять разделить, вернуться к формочкам

и раздельному клиент и сервер-девелопменту!


Не, понял, дизайнеры стали писать JS или серверную часть? Или дизайнеры больше не нужны? Короче, ничего не понял.

Это уже темплейтовый код, сложный для них,


Да ладно, сложный. Closure Templates очень и очень простой язык. Человек осиливший html разберётся с ним без труда, это вам не Smarty.

а главное - пишется он в ИДЕ


В каком IDE? Я предпочитаю Emacs. Но можно и в блокноте.

Ваять всё на жабе, включая разметку.


Я на жабе вообще не пишу. Но нет, не на жабе, а на специальном DSL.

Но может я слишком олд-скул


Угу ))

archimag ★★★
()
Ответ на: комментарий от archimag

я говорил о разметке страницы.
JS конечно пишется девелопером.
Но это легко разделяется - дамми данными. Т.е. традиционные вебмастера делают статичную страницы в студиях, а жабаскрипт наполняет уже реальной датой.

В темплейтовом подходе, когда эти темплейты в жабе - программист правит все эти таблицы, отступы, где торчит рекламма и прочую разметку страницы.

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

siberean
()
Ответ на: комментарий от siberean

либо ты нифига не понимаешь, либо я тебя не понимаю.

пиши свои формочки, разметку и темплейтовый код как угодно, мне пофиг.

еще раз:

var url = "main?cmd=data&tab=" + currentTab+"&"+Math.random();
YAHOO.util.Connect.asyncRequest('GET', url, onDataBack);

это хрень невнятная, при том, что мы еще код сервера не видели.

должно быть так:

на серванте должнен быть примерно такой твой код:

 class Main { def getData (curTab : Int) : Data = {} } 

пишется на сервантовом языке, и обсасывается какой-то кодогенерилкой, которая выплевывает описание в виде js кода. этот js код всасыает браузер, и тоже его разворачивает. после таких манипуляций у тебя на клиенте появляется функция

Main.getData (currentTab)

как только ты ее позвал, она разворачивается в какую-то хрень типа твоей аяксины, запрос посылается серванту, где обсасывается и передается классу Main в метод getData c параметром типа Int. проверка типов естественно входит в этап обсасывания. естественно тип может быть любым, даже твои собственным. естественно то, что результат getData, ровно так же, _прозрачно_ должно вернуться клиенту, и клиент _прозрачно_ ее воспримет, как объект.

круто, да?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от siberean

> В темплейтовом подходе, когда эти темплейты в жабе - программист правит все эти таблицы, отступы, где торчит рекламма и прочую разметку страницы.

у вас какие-то неправильные темплейты.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

> это хрень невнятная

должно быть так:


это по-твоему

в реале - крупные сайты живут десятки лет и там чёрт ногу сломит (там как в легаси - много очень старого кода из разных проектов), работает много девелоперов одновременно и никто всего не контролирует. Никто тебе на даст его переписывать с нуля, да и нет таких денег. Это домашнюю страничку ты можешь переписать на ДСЛях.
Здесь - много много проектов, создававшихся годами разными фирмами, на разных технологиях.

siberean
()
Ответ на: комментарий от Rastafarra

> у вас какие-то неправильные темплейты.

не у нас, а в тех конторах, где я работал последние 10 лет. Навидался всякого.

siberean
()
Ответ на: комментарий от siberean

в реале - крупные сайты живут десятки лет и там чёрт ногу сломит

бугага. не ты ли чуть выше рвался переписывать сайтецы каждые 3 года? вот тебе шикарная возможность.

Здесь - много много проектов, создававшихся годами разными фирмами, на разных технологиях.

что характерно: они и сейчас создаются. что мешает создавать новые проекты в новом, хорошом, удобном и правильном русле?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от siberean

> это по-твоему

это вообще, в целом. вне зависимости от того, что где-то есть кренделя, которые любят писать много бесполезного кода.

Rastafarra ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.