Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>>[...] R>>>В-третьих, оно там не нужно. ГВ>>В десятку: Lisp сам по себе превосходно заменяет XML.
E>Тем не менее, в исходной постановке задачи был XML. А программирование подразумевает, что требуется решать конкретные задачи. И если заказчику нужно обрабатывать именно XML описания, то никуда не денешься. Он может быть и сам бы хотел вместо XML что-нибудь другое использовать, а изменить не в состоянии, т.к. не возможно это изменить.
Вот-вот, как раз иллюстрация к моему соседнему посту пятиминутной давности. Я — о принципах, ты — о конкретике. Задача поиска конкретного компромисса в кокнретных условиях — это, что называется, совсем другая задача. Здесь сразу можно поставить очень много конкретных вопросов, начиная от "а с чего это вдруг именно XML?" и заканчивая деталями интимных отношений сотрудников разных организаций, всё зависит от незашорености мышления (не подумай, что я тебя в этом пытаюсь уличить) и подвешенности языка.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
E>>На самом деле, вполне нормальный ответ был бы: "Извините, но у меня нет времени на решение подобных тестовых задач".
ГВ>Женя, вот тут я с тобой категорически не согласен.
Да нет проблем
ГВ> Во-первых, витиеватые извинения,
Извинений я не видел и сам не писал.
ГВ> как и требования от оппонентов чего-либо в форуме попросту неуместны, чай не пансион благородных девиц.
Вот здесь я категорически не согласен. Программирование -- это с одной стороны, наука. И здесь действительно, если что-то было когда-то сделано, то повторение не имеет смысла. Ну покорил кто-то Эверест, значит это возможно. Значит новые восходжения с этой точки зрения не добавляют ничего нового.
Но с другой стороны, программирование -- это получение конкретного результата. И если мне нужно подняться на Эверест, то уже не важно, что до меня это делали сотни раз. Важно, как я это сделаю. Я понимаю, что это можно сделать. Но как именно? Я нахожу конкретное решение, но если я слышу какие-то невнятные упреки в неграмотности или о том, что я не тот путь выбрал, то пускай укажет, как это можно было сделать еще. А не может, пусть молчит.
ГВ> Во-вторых, я понаблюдал за дискуссией с reductor-ом и впечатление сложилось не очень. Разводить на конкретику типа: "а покажи, как сделать XML-трансформер" в таком споре почти всегда неконструктивно.
Кому как. Мы вот, помниться, с VladD2 разные решения одной задачки на C#, Ruby и C++ приводили друг другу. Было очень интересно лично для меня.
ГВ> Никто не помешает вопрошающему сказать что-то вроде: "Ой, ужоснах какой! Да это же нормальному человеку не понять! Ни шиша ты мне, короче, не доказал, балбес хренов!" и закрутить новую итерацию бесполезного плевания конкретными примерами, которые на самом деле никому ничего не доказывают. Уводят дискуссию в сторону бодания вокруг звёздочек и значков — это да, это запросто.
А это уже грязная борьба. Меня она не интересует.
ГВ>Ну и вопросы про портфолио — они тоже наводят на мысль о мерянии, кхм, ну ты понял, чем, тем паче, что reductor, как раз, сбил тебя на конкретику просто блестяще. И кстати, вполне оправданно.
Я не задавал вопросов про портфолио.
И не заметил, чтобы reductor меня как-то здесь сбил. Если посмотреть внимательно, у нас совсем разный опыт. У меня опыт небольших (по меркам reductor-а) проектов, с очень маленькими командами, где на каждого участника приходится большой объем работы и обязанностей. Меня никто не убедил, что в таких условиях выгодно использовать много языков. Более того, мне реально приходилось подхватывать чужие куски работы, когда мои коллеги выбывали из разработки на длительный срок из-за болезни. Если бы разработка шла не на одном языке, а не 5-10, сделать это было бы крайне тяжело.
Reductor не сказал, что он участвовал в написании кода в больших проектах (там где счет идет на миллионы строк). Да и я не верю, что подобные проекты делаются командами из 4-5 человек. И что весь проект состоит из одного модуля, в который все в конце-концов собирается. Более вероятно, что проект разбит на N частей, каждая из которых не сильно большая по объему. Фактически, отдельные мелькие проекты, для каждого из которых есть своя команда, свой язык и свой инструментарий. И если проекты независимы, на выходе получаются разные модули, взаимодействующие через какие-то стандартные IPC механизмы (SOAP, Corba или даже через общую базу данных), то для всего проекта безразлично, на чем реализуется отдельный компонент, если снаружи видны только его Corba интерфейсы.
У нас сейчас в компании около двадцати разработчиков, 6 или 7 активных проектов, которые в конце-концов могут объединяться через разные протоколы в одну большую прикладную систему. Но проекты относительно независимые и продаются/внедряются сами по себе без остальных компонентов. Суммарный объем никто не считал, но думаю, что только C++ кода там будет под миллион. А еще столько же на Java. Но и все равно зоопарка языков нет. Одной из причин является сложность подбора персонала с нормальными знаниями хотя бы C++ или Java. Ну не Москва мы, не Питер и не USA. Нет свободы для маневра.
ГВ>Так что, reductor оппонентов довольно экономично послал
За послал нормальные люди морду бьют. И правильно делают.
E>>[...] А жаль, многие высказывания reductor-а действительно интересны и полезны.
ГВ>В одной посылке, как минимум, я с ним согласен — важно понять принципы, а потом уже освоение языков, использующих эти принципы, особой проблемы не представляет.
Против этого и я не возражал. Я лишь дополнил, что знание не есть умение. Знать принципы/патерны/языки/технологии -- это одно. А вот успешное их применение -- совсем другое. Большая эрудиция не приводит автоматически к большому количеству умений. Я об этом говорил.
ГВ> ГВ>Сначала хотел написать тебе в мыло, но показалось, что такое рассуждение будет интересно не только тебе одному. Тем паче, что дискуссия-то открытая. Вот и оценка — тоже открытая. Nothing personal.
Да нормально все.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Геннадий Васильев, Вы писали:
E>>Тем не менее, в исходной постановке задачи был XML. А программирование подразумевает, что требуется решать конкретные задачи. И если заказчику нужно обрабатывать именно XML описания, то никуда не денешься. Он может быть и сам бы хотел вместо XML что-нибудь другое использовать, а изменить не в состоянии, т.к. не возможно это изменить.
ГВ>Вот-вот, как раз иллюстрация к моему соседнему посту пятиминутной давности. Я — о принципах, ты — о конкретике.
Угу, битие определяет сознание.
Абыдно, блин. Тогда было две больших темы о том, какой крутой Lisp. Затем была поставлена конкретная задача, чтобы посмотреть, как крутой Lisp с ней справится (ну вдруг он и правда так крут). Оказалось, что из всех приведенных решений поставленную задачу решает только пример на Ruby. Спрашивается, нахрена старался, XML парсил, сделал бы описание на Ruby, не хуже бы чем на Lisp-е получилось (а по сравнению с приведенным мной решением так еще и компактнее). Зато все по принципам было бы
Гена, я все понимаю. И слова reductor правильные говорит про образование, про необходимость расширения кругозора, про необходимость выбора инструментов и пр. И ты про незашоренность правильно говоришь. Просто все как-то высоконаучно получается. Вот и возникает у меня непреодолимое желание приземлить. Что-то типа вандализма,попадаешь в Эрмитаж и хочется на каком-нибудь столике семнадцатого века нацарапать: "здесь был eao197"
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
eao197,
E>Гена, я все понимаю. И слова reductor правильные говорит про образование, про необходимость расширения кругозора, про необходимость выбора инструментов и пр. И ты про незашоренность правильно говоришь.
Да тут всё просто и сложно одновременно. Есть такой дяденька Маркс, (он у нас теперь не в почёте к сож.), но он умную мысль сказал: "Практика без теории слепа, теория без практики мертва". Баланс нужен.
+
(Т) | (П)
+====+====+
|
/|\
E> Просто все как-то высоконаучно получается. Вот и возникает у меня непреодолимое желание приземлить. Что-то типа вандализма,попадаешь в Эрмитаж и хочется на каком-нибудь столике семнадцатого века нацарапать: "здесь был eao197"
Здравствуйте, reductor, Вы писали:
R>Лисп не менее императивный, чем руби. У лиспа нет синтаксиса вообще, я повторяю, заучите это, распечатайте, повесьте на стену, вытатуируйте где-нибудь. Не знаю каким еще языком это сказать — У лиспа. Нет. Синтаксиса. Синтаксиса у него НЕТ. Вообще.
Побуду буквоедом Правда за весь лисп говорить не буду, только за диалект коммон лисп. Взято примерно отсюда
draft proposed American National Standard for Information Systems
Programming Language
Common Lisp
X3J13/94-101
...
Chapter 2. Syntax
The Lisp reader takes characters from a stream, interprets them as a printed representation of an object, constructs that object, and returns it.
The syntax described by this chapter is called the standard syntax...
Стандарт правда черновой, но все-таки странно для языка у которого НЕТ синтаксиса Вообще иметь в стандарте главу с таким названием, к тому же с определением термина "стандартный синтаксис". Хотя, возможно, Вы подразумевали другой диалект лиспа.
Правда, дальше в стандарте написано следущее:
...Operations are provided by Common Lisp so that various aspects of the syntax information represented by a readtablecan be modified under program control; see Chapter 23 (Reader). Except as explicitly stated otherwise, the syntax used throughout this document is standard syntax.
Может быть, именно об этом Вы и говорили, утверждая что у лиспа синтаксиса нет?
Здравствуйте, lazyden, Вы писали:
R>>Лисп не менее императивный, чем руби. У лиспа нет синтаксиса вообще, я повторяю, заучите это, распечатайте, повесьте на стену, вытатуируйте где-нибудь. Не знаю каким еще языком это сказать — У лиспа. Нет. Синтаксиса. Синтаксиса у него НЕТ. Вообще.
L>The Lisp reader takes characters from a stream, interprets them as a printed representation of an object, constructs that object, and returns it.
L>The syntax described by this chapter is called the standard syntax...
Вчитайтесь внимательно. Речь идет о стандартном синтаксисе лисповского ридера.
Который полностью меняется, расширяется и что угодно еще.
У лиспа как языка синтаксис отсутствует — все операции происходят с уже готовым AST.
На всякий случай уточню — что синтаксис языка — это наличие лексических конструкций, которые не изменяемы и обладают собственной семантикой.
L>Стандарт правда черновой, но все-таки странно для языка у которого НЕТ синтаксиса Вообще иметь в стандарте главу с таким названием, к тому же с определением термина "стандартный синтаксис". Хотя, возможно, Вы подразумевали другой диалект лиспа.
alexeiz wrote: > > C>ЗЫ: а вы случайно не замаскированый Луговской? Уж больно том похож... > А кто такой этот Луговской?
ФИДОшник, физик и программист, работал преподавателем. Сторонник
функциональных языков.
Известен своим характером (склонность к употреблению нецензурных фраз),
из-за которого его забанили в эхе SU.SCIENCE (за критику
"альтернативных" ученых) и некотороых других.
Поищите в Google Groups по словам "Vitaly Lugovsky".
Здравствуйте, reductor, Вы писали:
R>Вчитайтесь внимательно. Речь идет о стандартном синтаксисе лисповского ридера. R>Который полностью меняется, расширяется и что угодно еще. R>У лиспа как языка синтаксис отсутствует — все операции происходят с уже готовым AST. R>На всякий случай уточню — что синтаксис языка — это наличие лексических конструкций, которые не изменяемы и обладают собственной семантикой.
Гм. Т.е есть стандартное текстовое представление этого самого AST и есть стандартный ридер, который знает про скобочки, числа и т.д. и который может текст перевести в некоторое внутренее представление.
Получается, скобочки это совсем не часть лиспа .
Слегка оффтоп. Может Вы знаете еще какие-нибудь встраиваемые реализации коммон лиспа кроме вот этой http://ecls.sourceforge.net.
L>Гм. Т.е есть стандартное текстовое представление этого самого AST и есть стандартный ридер, который знает про скобочки, числа и т.д. и который может текст перевести в некоторое внутренее представление.
L>Получается, скобочки это совсем не часть лиспа .
Да, так и получается.
L>Слегка оффтоп. Может Вы знаете еще какие-нибудь встраиваемые реализации коммон лиспа кроме вот этой http://ecls.sourceforge.net.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, reductor, Вы писали:
R>>Вы не о том спрашиваете и не там. R>>Спросите себя — зачем вы программируете? R>>Чтобы просто получать N долларов в час за работу и программирование для вас просто способ зарабатывания на хлеб с маслом — тогда совершенно неважно что выбирать. Платить вам будут всегда за время здесь или там — и технологии не имеют никого значения.
R>>А если вам это интересно и вы хотите развиваться, учиться и вообще расти как профессионал потому что вам это нравится — тогда учить следует все подряд. А иначе — ничего не выйдет. Читать дискуссии, документацию, книжки и самостоятельно, вдумчиво сравнивать одно с другим и задавать _себе_ вопрос кто прав, а кто — нет. R>>Да, это требует много времени, сил, упорства и денег. Но если вам интересно, это все ерунда и взамен вы для себя получите гораздо больше. Даже если придется убедиться, что ничего менять не нужно.
AB>Простите, что не по теме. Можно вопрос личного характера? Вы женаты? Дети?
Можно я за него — мне не сложно ответить. Я женат. Дети. И согласен с докладчиком.
Какие еще вы придумаете оправдания для нежелания учиться и повышать свою квалификацию?
Gaperton wrote: > Какие еще вы придумаете оправдания для нежелания учиться и повышать свою > квалификацию?
Вроде бы с этим никто не спорит. Гораздо интереснее другой момент —
стоит ли обращать внимание на альтернативные мейнстриму языки, или лучше
заняться изучением на досуге какого-нибудь фреймворка для С++?
Здравствуйте, Gaperton, Вы писали:
AB>>Простите, что не по теме. Можно вопрос личного характера? Вы женаты? Дети?
G>Можно я за него — мне не сложно ответить. Я женат. Дети. И согласен с докладчиком.
G>Какие еще вы придумаете оправдания для нежелания учиться и повышать свою квалификацию?
Можно уточняющий вопрос? Учеба и повышение квалификации обязательно подразумевает изучение новых языков? Или же можно изучать новые (для себя) библиотеки/фреймоворки/подходы в рамках текущего используемого языка? К примеру, язык программирования C++, в качестве библиотек, например, ACE или какая-нибудь реализация MPI (вроде http://www.lam-mpi.org/).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Cyberax wrote: > >> Какие еще вы придумаете оправдания для нежелания учиться и повышать свою >> квалификацию? > Вроде бы с этим никто не спорит. Гораздо интереснее другой момент — > стоит ли обращать внимание на альтернативные мейнстриму языки, или лучше > заняться изучением на досуге какого-нибудь фреймворка для С++?
Я думаю, очередной фреймворк для C++ можно изучить и по ходу дела (я вот
вообще на C++ не программирую, считая этот инструмент бесполезный
свистулькой, и ничего, проблем пока не испытываю).
С другой стороны, расширять свой кругозор в сторону альтернативных
подходов к жизни (в частности, в сторону не-мейнстримовых языков)
занятие куда более полезное.
Здравствуйте, reductor, Вы писали:
R>Вообще же вопрос — а для чего нужно это встраиваемое? т.е чем просто интероп через FFI не устраивает, например? или что-то подобное.
Общими словами: есть более-менее работающая связка си плюс луа. Т.е программа и базовые операции на си, реализация самой логики на луа.
Ну и если пробовать поюзать лисп, то хотелось бы его опробовать по такой же схеме .
eao197 wrote: > > Можно уточняющий вопрос? Учеба и повышение квалификации обязательно > подразумевает изучение новых языков? Или же можно изучать новые (для > себя) библиотеки/фреймоворки/подходы в рамках текущего используемого > языка? К примеру, язык программирования C++, в качестве библиотек, > например, ACE или какая-нибудь реализация MPI (вроде > http://www.lam-mpi.org/).
Ну что такого нового можно узнать, изучая какую-нибудь очередную ACE?
Здравствуйте, eao197, Вы писали:
E>Можно уточняющий вопрос? Учеба и повышение квалификации обязательно подразумевает изучение новых языков? Или же можно изучать новые (для себя) библиотеки/фреймоворки/подходы в рамках текущего используемого языка?
А чем отличается изучение другого языка от изучения того же boost?
Или, прости господи, от этого: http://www.intelib.org/
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Gaperton, Вы писали:
AB>>>Простите, что не по теме. Можно вопрос личного характера? Вы женаты? Дети?
G>>Можно я за него — мне не сложно ответить. Я женат. Дети. И согласен с докладчиком.
G>>Какие еще вы придумаете оправдания для нежелания учиться и повышать свою квалификацию?
E>Можно уточняющий вопрос? Учеба и повышение квалификации обязательно подразумевает изучение новых языков? Или же можно изучать новые (для себя) библиотеки/фреймоворки/подходы в рамках текущего используемого языка? К примеру, язык программирования C++, в качестве библиотек, например, ACE или какая-нибудь реализация MPI (вроде http://www.lam-mpi.org/).
Учеба и привычка к повышению квалификации предполагает как минимум отсутствие выкриков в духе "нафиг надо учить новые языки". А сами — изучайте себе что хотите, или не изучайте совсем ничего — думаете кому-то до вас есть дело?
Более того, я не могу понять, почему изучение новых языков должно обязательно мешать семье, а и изучение очередной идиотской библиотеки — нет. И вообще, то, что вы "в составе организованной группы" здесь развели, включая совершенно хамские переходы на личности — очень глупо и некрасиво. Отвечать и влезать в эту "дискуссию" противно, так что я этого делать не стал.
Здравствуйте, lazyden, Вы писали:
L>Здравствуйте, reductor, Вы писали:
R>>Вообще же вопрос — а для чего нужно это встраиваемое? т.е чем просто интероп через FFI не устраивает, например? или что-то подобное. L>Общими словами: есть более-менее работающая связка си плюс луа. Т.е программа и базовые операции на си, реализация самой логики на луа. L>Ну и если пробовать поюзать лисп, то хотелось бы его опробовать по такой же схеме .
Common Lisp — это сам по себе большой язык. С огромной библиотекой и прочим. Язык более навороченный, чем С++ со всем вытекающим.
Если уж как клей что и использовать, так это схему.
Самая широкоиспользуемая embedded-реализация — это скорее всего guile
Впрочем, думаю, подцепить mzscheme или scheme48 будет не сложнее.
Здравствуйте, reductor, Вы писали:
E>>Можно уточняющий вопрос? Учеба и повышение квалификации обязательно подразумевает изучение новых языков? Или же можно изучать новые (для себя) библиотеки/фреймоворки/подходы в рамках текущего используемого языка?
R>А чем отличается изучение другого языка от изучения того же boost?
Перспективами.
Вот к примеру у меня сейчас есть серьезная необходимость добавить в свой фреймворк прозрачную работу через разные IPC механизмы (пока есть только TCP/IP). Изучение ACE или MPI помогает увидеть, как подобные проблемы решаются в других разработках. И позволяют сравнить выбранный мной подход с выбранным в ACE. И заставляют задуматься о том, как внедрить ACE в собственный фреймворк с обеспечением максимальной совместимости с предыдущими версиями. Но в то же время, чтобы задействовать по максимуму возможности ACE каркасов Reactor и Acceptor-Connector. Либо о том, как реализовать в ObjESSty работу с файлами через фасады ACE и каркас Proactor.
Т.е. это знания, которые будут сразу же востребованны и использованы.
Похожая ситуация с изучением какого-нибудь мейнстримового языка, вроде C# или Java.
Перспективы изучения чего-то вроде Lisp-а или OCaml-а для меня туманны. Просто потому, что я очень быстро забываю то, что не использую. Поэтому, если я выучу OCaml и не буду на нем программировать, то через 8-10 месяцев мне придется учить его заново. Применять OCaml или Lisp на работе я просто физически не смогу, для себя вряд ли стану, т.к. у меня есть разработки, которыми я пытаюсь для себя заниматься, но они на C++.
В общем, хотелось бы услышать, что, кроме банальной эрудиции, дает изучение не мейнстримовых языков программирования.
R>Или, прости господи, от этого: http://www.intelib.org/
Вот этого вообще не могу понять. Ну нравится программировать на Lisp, так программируй на Lisp, зачем же C++ уродовать?
Эту штуку (или похожую) уже, кажется, обсуждали в C/C++: Lisp на C++