LINUX.ORG.RU

Стандартный набор OCaml'щика ;)


0

0

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

Небольшая экскурсия (начиная с самого верхнего окна):
- Topcameleon --- графическая интерактивная система (toplevel);
- Doc box --- браузер документации, сгенерированной ocamldoc;
- OCamlCVS --- GUI к CVS;
- Cameleon --- самое главное окно (не считая конечно XEmacs ;)) ---
IDE, которая совмещает кучу разных утилит (например OCamlCVS) +
расширяется через плагины (например общается c XEmacs через
gnuclient);
- XEmacs --- самая главная тулза! ;)))

За кадром остались:
- Zoggy --- построитель графического интерфейса (с использованием
LablGTK);
- DBForge --- генератор кода для доступа к нескольким видам СУБД,
посредством задания схемы (реализован еще не полностью);
- Epeire --- GUI к OCaml debugger;
- MLChat --- графический чат для разработчиков;
- Omom --- графический генератор Makefile'ов;
- Report --- графический описатель/генератор кода для доступа к XML
документам.

Все перечисленные тулзы цепляются к Cameleon с помощью плагинов.

Все это крутится под: Debian Woody R3.0 + IceWM без всяких излишеств
;)) (типа Gkrellm, обоев, и прочих погремушек-свистулек).

Ну теперь, можете пинать... :)))

>>> Просмотр (1024x768, 54 Kb)



Проверено: maxcom
Ответ на: комментарий от anonymous

> мля где такой скин к xmms взял?? Это был пинок ниже пояса

kedder
()

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

dmiceman ★★★★★
()

Nu ti daesh. Zdorovo! A ne podskagesh gde ka4nut progi s tvoego screena:
- OCamlCVS
- Cameleon
- Zoggy
- Epeire
- Omom

sobenno menya Onom i IDE zainteresovali, a to ya uge 2 goa pod linux igu i protakoe dage ne slishal!
Vobshem kin ssilki ili suda ili na infapx(at)yandex.ru
Zarane blagodaren.

svyatogor ★★★★★
()

Ну все! Бросаю программировать на Java 2 EE - перехожу на CAML!

NikS, непросвещенный отcталый императивщик.

NikS
()

Если не секрет - какие задачи на ml решаете, товарищи? Действительно очень интересно про область применения...

svu ★★★★★
()

<Ну все! Бросаю программировать на Java 2 EE - перехожу на CAML!>
А что ж не на "мелкий базар"? Это ж так корпоратиивно...:)

AC
()

Мне и про ОКамль инерестно...
Мне всегда казалось что это эдакий эстетский изыск из области теории яз программирования
Посему просветите неуча
P.S. Про ml тоже инетерстно узнать... Вот только не давайте ссылок на сайт. Хоцца знать просто человеческое мнение об оласти применимости, удобстве и тд

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

<Если не секрет - какие задачи на ml решаете, товарищи?>
RAD и "наброска" алгоритмов. Которые, как отработаны, потом переписываются на C++.

AC
()

Сценарий 1
Идем на www.dice.com
Набираем CAML
Получаем: "Sorry, there were no results matching your search request."

Сценарий 2
Идем на www.dice.com
Набираем Java
Получаем: Jobs 1 - 10 of 3089 matching your search request.

Сценарий 3
Идем на www.dice.com
Набираем C++
Jobs 1 - 10 of 2145 matching your search request.

>>
<Ну все! Бросаю программировать на Java 2 EE - перехожу на CAML!>
А что ж не на "мелкий базар"? Это ж так корпоратиивно...:)
>>

А спорить с любителями CAML'ов, Smalltalk'ов, haskel'ей и прочей дребедени, изобретенной "большими учеными" - бесполезно.
Я сам перевожу код с Smalltalk на Java (как было понятно из моего предыдущего скриншота).

>>
<Если не секрет - какие задачи на ml решаете, товарищи?>
RAD и "наброска" алгоритмов. Которые, как отработаны, потом
переписываются на C++.
>>
Байки про доказательство кода своим детям рассказывайте. Когда подрастете...

NikS, знакомый с книгой А.Филда и П.Харрисона "Функциональное программирование".

Цитата дня:
"Фундаментальное свойство математических функций -
это функциональность"
(Филд, Харрисон, ISBN 5-03-001870-0, стр.17)
NikS, любитель масленного масла или
функциональной функциональности.

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

>> RAD и "наброска" алгоритмов. Которые, как отработаны, >> потом переписываются на C++.

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

(http://mmweek.spbu.ru/default.asp?mode=humour&submode=1&prepod=39)

Надо же и сюда "функцианальщики" пробрались!

anonymous
()

2NikS: к цитате: [далее следовало] "... (прозрачность по ссылкам)". Вкраце это означает "отсутствие побочных эффектов". (Филд, Харрисон, ISBN 5-03-001870-0, стр.17, объяснение следовало чуть ниже).

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

Там же "Говорят, что императивные языки являются нефункциональными."

Но самое классное стр 19.: "Языки, основанные на программировании с использованием функций, обладают свойством функциональности" ;)))

Если Linux написан на "нефункциональном" C, то какой прок от "прозрачности по ссылкам" для задач типа "Hello, World!", написаных на "функциональных" языках программирования? 

"Доказательство экспоненты" для любой архитектуры в лекциях Харрисона (Харрисон - это,наверное, общая фамилие (surname) для всех функциональщиков, получающих подачки из благотворительных фондов развития "науки ради науки")- это умора (John Harrison, Introduction to Functional Programming, lection No 7)

#let rec exp x n = 
  if n = 0 then 1 
  else x * exp x (n - 1);;

А далее идет докозательство кода. Оказывается на
практике я получу экспоненту хоть для  n =
100000000000000000000000000000000000000000000... и
не важно сколько разрядный у меня компьютер.
;)))

-------------------------------------------------------
аргументы "функциональщиков не стоят и выеденного яйца"

Примерчик (адаптированный мной для Java) из книги
A.J.Field & P.G.Harrison "Functional Programming"
(c) Adisson-Wesley, 1988:

class My 
{
    static boolean flag;

    static int m(int i)
    {
	int ret = 0;
	if (flag)
	    ret = i;
	else 
	    ret = 2 * i;
	flag = !flag;
	return ret;
    }	
   
    public static void main(String[] args)
    {
	flag = true;
	System.out.println(m(1) + m(2));
	System.out.println(m(2) + m(1));
	System.out.println(lazy(1, 2));
	System.out.println(lazy(2, 1));
    }
}

Побочный эффект в методе:

static int m(int i)
{
    int ret = 0;
    if (flag)
	ret = i;
    else 
	ret = 2 * i;
    flag = !flag;
    return ret;
}

обращающемся к перменой среды flag.

(Будет: 
5 
4)
 
Однако меня за такой бы код из _реальной конторы_ 
просто выгналли бы.
Я должен "лениво откладывать" счет аргументов 
в фактических параметрах, например:

class My 
{
    static boolean flag;

    static int m(int i)
    {
	int ret = 0;
	if (flag)
	    ret = i;
	else 
	    ret = 2 * i;
	flag = !flag;
	return ret;
    }	

    static int lazy(int i1, int i2)
    {
	flag = true;
	int ret1 = m(i1);
	flag = true; 
	int ret2 = m(i2);
	return ret1 + ret2;
    } 
   
    public static void main(String[] args)
    {
	flag = true;
	System.out.println(lazy(1, 2));
	System.out.println(lazy(2, 1));
    }
}

(Будет: 
3 
3)

или в более общем случае использовать методы 
getИдентификатор() и setИдентификатор() в методе 

static int lazy(int i1, int i2)
{
    // get/set для среды
    int ret1 = m(i1);

    // get/set для среды
    int ret2 = m(i2);

    return ret1 + ret2;
}

что позволяют делать и _императивные_ 
языки программирования.

JavaBeans для инкапсуляции параметров 
среды меня абсолютно не напрягают.








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

<А спорить с любителями CAML'ов, Smalltalk'ов, haskel'ей и прочей дребедени>
Ты ж вроде любитель мелкого базара и всего, связанного с ИБМ. Сам же недавно распинался о его достоинствах.

<Байки про доказательство кода своим детям рассказывайте. Когда подрастете... >
Дядя, причем здесь доказательство кода? Ты напиши тот же maxflow сначала на ocaml, а потом на плюсах. Сравни размер текста, и время, затраченное на написание. Мне во время _разработки_ нахрен не сдалось возиться памятью, классами, шаблонами и прочими крайне полезными и нужными вещами, но полезными и нужными не сейчас. Гм, а потом напиши то же самое на своей любимой жабе -- и иди пить кофе, ожидая, пока твой код отработает.
Джава -- для всяких там сервлетов, middleware и прочего конторского добра. Не суй ее куда не надо.

AC
()

2 AC: насчет Caml (и прочих ML) все очень хорошо расставляет по местам тест Niks'a на dice.com. Я бы (как руководитель предприятия) не стал бы доверять. Уволится у меня такой специалист - иди ищи ветра в поле подобных специалистов.

На Java гнать не надо. Все летает, даже GUI. Для этого нужен хотя бы PC-2000.

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

>>Ты ж вроде любитель мелкого базара и всего, связанного с ИБМ. Сам же недавно распинался о его достоинствах.

Правда? А я то думал, что Java была написана в Sun Microsystems, а не в IBM.

>> Мне во время _разработки_ нахрен не сдалось возиться памятью, классами, шаблонами и прочими крайне полезными и нужными вещами, но полезными и нужными не сейчас. >>

1. Разве Java явно работает с оперативной памятью? 2. Разве в Java есть шаблоны? 3. Не нужны классы? Вы не бредите?

>>> Гм, а потом напиши то же самое на своей любимой жабе -- и иди пить кофе, ожидая, пока твой код отработает. >>> Что же у Вас за машина такая? 486SX25 что ли?

>>> Джава -- для всяких там сервлетов, middleware и прочего конторского добра. >>>

Бред полный!

http://www.amazon.com/exec/obidos/tg/detail/-/1558606793/qid=1034765978/sr=1-...

NikS
()

Уважаемый НикС!

все правильно в Вашем коде на Жава и Ваших рассуждениях о том, что на императивных языках можно все это сделать. Но, этот спор сводится к уже банальносму "да, на ассемблере, блин, все можно сделать!!"

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

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

>>освобождает бедного кодера еще от одной проблемы - "слежение за 
>> ссылками" и "побочным эффектом".

Функциональщики сами героически создают себе проблемы, а потом героически их решают. Ну нету в JavaBeans побочного эффекта, нету!
Да если бы Вы внимательно почитали Гослинга, то увидели бы, что  
там такого:

class Demo {

   void m1(int i) {
      i *= 10;
      System.out.println(i);
   }

   public static void main(String[] args) {
       int i = 2;
       String s = "2";
       Demo demo = new Demo();
       System.out.println(i);
       demo.m1(i);
       System.out.println(i);
       // И чему i будет здесь равно?      
   }
}

------------------------------------------------------------------
"Трудно найти в темной комнате черную кошку, особенно, если ее там нет"

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

<1. Разве Java явно работает с оперативной памятью? >

А что, разве нет??? Кто-то new отменял? Или, с пулами теперь не надо париться? Дайте, дайте мне такую джаву!!

<3. Не нужны классы? >

Конечно, вовсе не всегда нужны.

<Что же у Вас за машина такая? 486SX25 что ли? >

Машина должна работать, а не кастить объекты на каждый чих.

<http://www.amazon.com/exec/obidos/tg/detail/-/1558606793/qid=1034765978/sr=1-... >
Во-первых, слово Introduction в названии хорошо видно? Во-вторых, само название этой книги, равно как и сочетание Numerical Methods и Java -- оксюморон. И не надо мне ссылаться на oonumerics.org -- то, что там предлагается, это _не_ ООП.

AC
()

Кто то правильно недавно заметил:

"А вообще что-то последнее время тут организовалась горстка ублюдков типа антихриста, которые внушили себе, что их любимые Haskell/Lisp/Erlang/Smalltalk кручивее всех остальных."

На что, тот кто спровоцировал флейм ради очередного прикола над Луговским, ответил:

"Полностью разделяю Вашу точку зрения. Только В.Луговский aka Mauhuur aka Antichrist любит Caml. (См. мой предыдущий скриншот;))))"

Так что этот скриншот про Стандартный набор OCampl'щика ;) тоже опять лишний повод повеселиться над В.Луговским?

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

<"Трудно найти в темной комнате черную кошку, особенно, если ее там нет">
Бесплатный совет -- Вы все же перечитайте ненавистных Харрисонов еще раз, повнимательнее, и выясните для себя наконец, что же такое этот самый побочный эффект, что дает его гарантированное отсутствие, и все такое.

AC
()

Пример с примитивными типами я не принимаю. Как Вам вот этот пример:

import java.util.ArrayList; class Demo { void m2(ArrayList a) { a.add("World!"); System.out.println(a.size()); } public static void main(String[] args) { ArrayList a = new ArrayList(); System.out.println(a.size()); demo.m2(a); System.out.println(a.size()); } }

ЗЫ кстати, причем здесь вообще JavaBeans. Очевидно, что это просто технология (ни ахти какая классная) к конкретному языку

yurban
()

Прошу прощения за нечитаемый и некомпилируемый код. Высылаю ещё раз

<pre>


import java.util.ArrayList; 

class Demo { 

  void m2(ArrayList a) { 
    a.add("World!"); 
    System.out.println(a.size()); 
  } 
  
  public static void main(String[] args) { 
    ArrayList a = new ArrayList(); 
    System.out.println(a.size()); 
    Demo demo = new Demo();
    demo.m2(a); 
    System.out.println(a.size()); 
  } 
} 


</pre>

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

>>> <1. Разве Java явно работает с оперативной памятью? > А что, разве нет??? >>>

Читать внимательно надо. _ЯВНО_ Java с оперативной памятью не работает. Указателей в Java нет. Читайте Гослинга, а не смешите людей.

>> Кто-то new отменял?

Никто. new были даже в Smalltalk. Отменили delete. Как это шибко умный AC создаст новый объек без new???

>> Или, с пулами теперь не надо париться?

О чем это он? О пулах соединений к СУБД?

>> Дайте, дайте мне такую джаву!!

Скачайте SunONE4 на www.javasoft.com. Там это есть (если AC смог правильно выразить свою мысль.)

>> Конечно, вовсе не всегда нужны.

Да, классы не нужны при написании "Hello, World!". В реальной жизни они нужны.

>> Машина должна работать, а не кастить объекты на каждый чих.

"Кастить объекты"? Если читать Гослинга, то операция casting предназначена:

1. ТИПОВ ДАННЫЕ, то есть классов, а не объектов (щелбан за откровенное незнание основ программирования!)

2. используется не всегда, а только, например, JFrame f1 = new MyFrame("Title"); или HelloHome helloHome = (HelloHome)PortableRemoteObject.narrow(objref, HeloHome.class); что встречается не "на каждый чих" (еще щелбан!)

>> Numerical Methods и Java -- оксюморон.

Это уже клиника!

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

В Вашем примере нет никакого побочного эффекта.
Ибо нет СРЕДЫ (сравните с примером из F&H в моем изложении)
Это просто тавтология:

import java.util.ArrayList;

class Demo {
/*
void m2(ArrayList a) {
a.add("World!");
System.out.println(a.size());
}
*/
public static void main(String[] args) {
ArrayList a = new ArrayList();
System.out.println(a.size()); // 0
Demo demo = new Demo();
// demo.m2(a);
a.add("World!"); // So what?
System.out.println(a.size()); // 1
}
}

Боюсь, что Вы не читали Гослинга. В лучшем случае только пролистали Книгу.

Вот более интересный пример - я его специально оставил на последок, хотя String s = "2"; у меня уже была;) :

class Demo {

// static String s = "2";
String s = "2";

void m1(int i) {
i = 5;
System.out.println(i);
}

void m2(String s) {
s = "!";
System.out.println(s);
}

public static void main(String[] args) {
int i = 2;
// String s = "2";
Demo demo = new Demo();
System.out.println(i);
demo.m1(i);
System.out.println(i);
System.out.println(demo.s);
demo.m2(demo.s);
System.out.println(demo.s);
}
}

Будет:

2
5
2
2
!
2

Или мне написАть везде java.lang.String вместо String?Или String стал примитивным, а не ссылочным типом данных?

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

>> ЗЫ кстати, причем здесь вообще JavaBeans.

При том, что JavaBeans это не технология, а

1. Класс у которого есть пустой конструктор
2. Все поля закрыты.
3. Обращения к полям только через открытые методы sеtX и getX.

К "технологии" можно отнести (с натяжкой) интроспекцию, которая отнюдь не обязательна для JavaBeans.

Вы наверное спутали с "технологией" технологию Enterprise Java Beans.

>> ни ахти какая классная

Ну если Вашими оценками заинтересуются Sun или IBM - то тогда Ваши слова будут иметь хоть какое то значение.

NikS
()

пример с ArrayList'ом - это и есть побочный эффект! кто скажет, то без обстоятельных аргументов не принимаю.

На счет String'a - одну минуту - ищу атворитетный источник для цитирования

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

< Как это шибко умный AC создаст новый объек без new??? >

Легко.

<О чем это он? >

О пулах небольших объектов для их повторного использования использования и избежания частых аллокаций. Читаем Java Performance Tuning. И это джавщик не понимает с намека и полуслова?

<В реальной жизни они нужны. >

Нет. В массе случаев достаточно просто АТД. Наследование нужно вовсе не всегда. Высоченные деревья классов от XXXObject -- в далеком прошлом.

<1. ТИПОВ ДАННЫЕ, то есть классов, а не объектов (щелбан за откровенное незнание основ программирования!) >

Операция casting применяется к _объекту_. Результат casting -- объект другого класса. Это _другой_ объект. Читаем Гради Буча "Как правило, такие преобразования используются по отношению к объекту специализированного класса, чтобы _присвоить_ его значение _объекту_ более общего класса" (выделено мной). Отдохните.

<2. используется не всегда, а только, например, >

А также:
for(Iterator it = MyCollection.iterator();it.hasNext();) {
MyObject o = (MyObject)it.next();
}
Это я и называю "на каждый чих". Отдохните еще раз.

<Это уже клиника! >

Уважаемый "доктор", вы так хорошо рылись по dice.com Может, вы пороетесь еще где-нибудь, и найдете хотя бы пару десятков ссылок на _реальные_ _работающие_ конкурентоспособные промышленные и академические проекты, где Java использовалась бы для Numerical Methods? Уж не побрезгуйте.

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

<При том, что JavaBeans это не технология, а

1. Класс у которого есть пустой конструктор
2. Все поля закрыты.
3. Обращения к полям только через открытые методы sеtX и getX.
>

Ну вот, можно и так.
------------------------------------------------------------
class E {
public static changeE() {
s = "changed";
}
public static String getE() {
return s;
}
static String s = "ok";
}

class Closed {
public Closed() {}
public setX(int XV) {
E.changeE();
x = XV;
}
public int getX() {
return x;
}
int x;
}

public class A {
public static void main(String[] Args) {
System.out.println(E.getE());
Closed v = new Closed();
v.setX();
System.out.println(E.getE());
}
}
------------------------------------------------------

А теперь гарантируйте, что ни один set-метод не меняет среду.

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

>>

< Как это шибко умный AC создаст новый объек без new??? >

Легко.

>>

Определение _объекта_ на бочку, pls. И пример.

>> и избежания частых аллокаций.

??????
А разве нет пула объектов баз данных в Sun ONE Studio 4 или IBM WebSphere??? (Незнание не принимается как аргумент!)

>>>>
"Как правило, такие преобразования используются по отношению к объекту специализированного класса, чтобы _присвоить_ его значение _объекту_ более общего класса"
>>>>

HelloHome helloHome = (HelloHome) PortableRemoteObject.narrow(...);

Кто это более общий: HelloHome или PortableRemoteObject???
Что за чушь???

>> Это я и называю "на каждый чих".

Называйте на здоровье. Ваш авторитет непререкаем.

>> Отдохните еще раз.

Отдохну. Где-нибудь на Мальте. После здачи проекта.

>> промышленные ...

Ну-ну! Это Вы говорите _мне_?


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

Вы сначала не Java программы писать научитесь!!!! ПРИМЕР РАБОТАТЬ НЕ БУДЕТ!

class Closed { public Closed() {} public setX(int XV) { E.changeE(); x = XV; }

public setX() - ГДЕ ВОЗВРАЩАЕМЫЙ ТИП ДАННЫХ, ДВОЕЧНИК??!!! ;-((((

Не позорьтесь!!! Выучите сначала Java! ;-)))

NikS
()

пример, из которого явно видно, что метод m3(...) - метод с побочным эффектом


class Demo {
  int i;
 
  static void m3(Demo d) {
    d.i++;
    System.out.println(d.i);
  }
 
  public static void main(String[] args) {
    Demo demo = new Demo();
    System.out.println(demo.i);
    m3(demo);
    System.out.println(demo.i);
  }
}

yurban
()

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

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

<Определение _объекта_ на бочку, pls. И пример. >
За первым -- ну не мне же вас учить. За вторым -- читайте любую книжку по ФП.

<А разве нет пула объектов баз данных в Sun ONE Studio 4 или IBM WebSphere???>

Может быть, и есть. В мире вообще много что есть.

<Что за чушь??? >

Вы больны или не умеет читать?? _КАК_ ваш пример отменяет то, что результат операции преобразования типов -- _другой_ объект.

<Называйте на здоровье. Ваш авторитет непререкаем. >

Возразить нечего. Начинается демагогия. Прелестно.

<Это Вы говорите _мне_? >

Да _Вам_. Я по-прежнему жду ссылок на проекты, где Java используется для численных методов.

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

<public setX() - ГДЕ ВОЗВРАЩАЕМЫЙ ТИП ДАННЫХ, ДВОЕЧНИК??!!! ;-((((
Не позорьтесь!!! Выучите сначала Java!>

Оооо, сколько эмоций. Опять нечего возразить:), начинаем придираться к опечаткам. Вы еще грамматические ошибки поищите, отличник.:)
Ок, пусть public void setX(). Что меняется?

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

Какой еще побочный эффект? 
Обычный инкремент, который на приличной фирме заставили бы наприсать как:

class Demo // для JavaBean нужна еще сериализация, интроспекция & etc.
{
  private int i;
 
  public void setI(int i) {
     this.i = i;
  }
  
  public int getI() {
     return i;
  } 
  
  public void m3() {
    i++;
    System.out.println(i);
  }
}

class C
{
  public static void main(String[] args) {
    Demo demo = new Demo();
    demo.setI(2);
    System.out.println(demo.getI());
    demo.m3();
    System.out.println(demo.getI());
  }
}

Где тут что "гадится" в класса C?

P.S. Не уподобляйтесь "знатоку" AС, который сегодня просто явно сел в лужу со своим "примером"!





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

А здесь что:

"public static changeE() {" - опять опозорились?

Не позорьтесь, отладте программку сначала.

>> отличник.:)

Наверное, раз у меня Java 2 Brainbench MASTER Level, то отличник! ;)

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

А здесь что:

"public static changeE() {" - опять опозорились?

Не позорьтесь, отладте программку сначала.

>> отличник.:)

Наверное, раз у меня Java 2 Brainbench MASTER Level, то отличник! ;)

NikS
()

<"public static changeE() {" - опять опозорились?
Не позорьтесь, отладте программку сначала. >

Доктор, я извиняюсь, Вы тупой? Если вам, конечно, хочется поработать компилятором, то поработайте. Это очень забавно. Жду от вас байт-код.

<Наверное, раз у меня Java 2 Brainbench MASTER Level, то отличник! ;) >

Ха, хвастаться Brainbench -- это круто:)

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

Так примерчик на бочку, пожалуйста, господин теоретик! Я уже устал ждать.

>> Brainbench -- это круто:)

P.S. Вы принимаете и SCP? Это тоже есть! (Как и две монографии по Java)

NikS
()

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

Давайте по простому. Меня не интересует как бы со мной поступили "на фирме". Речь идет лишь о том, что в императивных языках допустимы такие ситуации, где в метод передашь объект с одним состоянием, а получаешь с другим. Причем это не есть метод передаваемого объекта. В функциональных языках - этого нет.

ЗЫ про метод lazy() и про "фирмы" - только пару слов. За такой метод (читай lazy(...)), я бы точно выгнал кодера написавшего сей бесподобный код.

ЗЗЫ <<P.S. Не уподобляйтесь "знатоку" AС, который сегодня просто явно сел в лужу со своим "примером"! >>

Благодарю за совет, но прежде чем такое говорить старайтесь без имоций отвечать на контраргументы (совет за совет).

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

>>
public int getX() {
return x;
}
int x;
} 
>>

Он даже не понял, что надо "private int x;"! ;-(((
Что такое "закрытый элемент класса" Вы понимаете???
Гослинга надо читать, Гослинга!

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

<Так примерчик на бочку, пожалуйста, господин теоретик! >

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

<(Как и две монографии по Java) >

Могу себе представить качество этих монографий.

AC
()

>> молодой человек,

Это Вы мне льстите? ;))

>> просто не умеете проигрывать

Проиграли функциональщики. Безграмотный код AC, который даже не компилируется (!), не является аргументом. Вам надо еще много практиковаться на Java. Вы, наверное, студент?

>> Меня не интересует как бы со мной поступили "на фирме".

А меня интересует.

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

В этом и есть основная парадигма ООП - изменение состояния объекта.

>> Причем это не есть метод передаваемого объекта.

Вы невнимательны. Еще раз взглянем на код.

class Demo // для JavaBean нужна еще сериализация, интроспекция & etc. { private int i; public void setI(int i) { this.i = i; } public int getI() { return i; } public void m3() { // Это принадлежит классу Demo i++; System.out.println(i); } }

class C { public static void main(String[] args) { Demo demo = new Demo(); demo.setI(2); System.out.println(demo.getI()); demo.m3(); System.out.println(demo.getI()); } }

m3 как раз и есть элемент класса Demo и принадлежит объекту, то есть инстанции Demo demo.

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

<Он даже не понял, что надо "private int x; Гослинга надо читать, Гослинга!>

Вы меня уже практически разозлили. Повторяю, специально для туговато соображающих авторов монографий (кстати, ссылочку хотелось бы) -- КАК открытость/закрытость X повлияет на наличие/отсутствие побочного эффекта в setX ?

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

Код на бочку! Я уже устал от Ваших теоретических разглагольствоывааний и безграмотности.

>> глупого нежелания признать поражение

""От чего ж сарацина не ведешь ты, однако,"// "он меня не пускает", - отвечает вояка"

В лужу сели вы со своим "кодом".

>> на джаве я пишу не так часто

Так и не суйтесь, дабы не позориться. Вас уже в www.dice.com ткнули.

>> Могу себе представить качество этих монографий

Представляйте. Я уже увидел Ваши познания в языке Java.

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

>> КАК открытость/закрытость X повлияет на >> наличие/отсутствие побочного эффекта в setX ?

Приведите код и я Вам с удовольствием покажу.

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

<Проиграли функциональщики. >

Ха, если сам себя не объявишь победителем, кто ж поверит?

<Вам надо еще много практиковаться на Java.>

А зачем практиковаться на Java? Вполне достаточно писать на других языках.

<Безграмотный код AC, который даже не компилируется (!), не является аргументом.>

Хорошо, такой код является аргументом, господин автор монографий?
-------------------------------------------------------------
class E {
public static void changeE() {
s = "changed";
}
public static String getE() {
return s;
}
private static String s = "ok";
}

class Closed {
public Closed() {}
public void setX(int XV) {
E.changeE();
x = XV;
}
public int getX() {
return x;
}
private int x;
}

public class C {
public static void main(String[] Args) {
System.out.println(E.getE());
Closed c = new Closed();
c.setX(101);
System.out.println(E.getE());
}
}
----------------------------------------------------------

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

<Вас уже в www.dice.com ткнули. >

А вы меня еще в ссылки использования джава для numerical methods ткните? Ну, пожаалуйста...

<Я уже увидел Ваши познания в языке Java. >

Моих познаний в языке Java вполне достаточно, чтобы его по возможности избегать. Я, слава богу, не офисный программист.

AC
()

2NikS

даа! если все аргументы строятся на том, что АС запостил не компилирующийся код, тогда действительно трудно спорить. (а как на счет моего кода? действительно смешно).

<<В этом и есть основная парадигма ООП - изменение состояния объекта.>>

я не буду придираться к этому высказыванию, но изменяется состояние объекта через совершенно посторонний метод - и эта ситуация совершенно нормальная в ОО ЯП. Мы говорили о том, что в ФЯП ляпы подобного рода не возможны.

<<m3 как раз и есть элемент класса Demo и принадлежит объекту, то есть инстанции Demo demo.>>

надо ли человеку написавшему две монографии по Java, предъявить код с вынесенным методом m3() в другой класс? или он все-таки сам может прикинуть?

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