LINUX.ORG.RU

C vs. JVM's benchmark

 , ,


1

0

Стэфан Краузе в своём блоге
http://www.stefankrause.net/
опубликовал новые тесты производительности кода, написанного на C и на Java.

В тесте используются компилятор GCC 4.2.3 и различные версии JVM (Sun JDK 6, IBM JDK 6, Excelsior JET, Apache Harmony, BEA JRockit).

Тесты проводились на ноутбуке Dell Insprion 9400 с 2GB RAM и процессором Intel Core 2 2GHz под Ubuntu 8.04 (x86). Исходные коды прилагаются.

>>> Подробности

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

>> Да, по данному определению Eclipse - тормозит.

> На компьютере который в текущий момент стоит 14 т.р. текущий релиз Эклипса *не подвисает* на срок от пары сек до пары минут, так что это вранье.

Приезжай-ка к нам в НН, покажу я тебе "компутер, который стоит 14 тыр", на котором это наблюдается. Может просто надо иногда запускать эклипс чуть дольше, чем на неделю?

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

>> Проблема в нежелании думать...

> Так будет лучше. Жаба не единственный язык с гц. ГЦ не отменяет мозг - он избавляет от гемора.

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

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

>> А в яве о перерасходе памяти зачустую узнают в рантайме по outofmemoryexception.

> outofmemoryexception - это всегда ошибка в коде.

Я б сказал, что скорее даже в днк. Момент выделения и освобождения памяти надо явно видеть. Вспомни свою аргументацию про try-finally.

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

> Машина все сделает лучше чем мой убокий человеческий умишко, по крайней мере пока нет имплантантов (ц) Луговский

Цитаты vsl-я чести не делают. Как только будет задача эффективного управления памятью решена теоретически, обоснована и запрограммирована, тогда поговорим, а сейчас есть только кучка более-менее удачных эвристик.

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

> Приезжай-ка к нам в НН, покажу я тебе "компутер, который стоит 14 тыр", на котором это наблюдается. Может просто надо иногда запускать эклипс чуть дольше, чем на неделю?

Только что наблюдал зависняк на 10 секунд. Галаз мне лгут или время ускоряется чтобы наносекундное подвисание эклипса мной воспринималось как длинное?

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

>>> А в яве о перерасходе памяти зачустую узнают в рантайме по outofmemoryexception.

>> outofmemoryexception - это всегда ошибка в коде.

>Я б сказал, что скорее даже в днк.

Пока хранимой процедуры копирования данных в таблице не сделали кто-то сделал через выфетчивание в массив и засовывание в другую таблицу благо был занят гуйком а не БД, и хотел быстро добиться работоспособности кнопки. Дожило это дело до стресс-тестов, благо TODO: не бросалось в глаза. Типичный пример OutOfMemory. Ты, наверно, совсем без греха и таких вещей у тебя нет.

>Момент выделения и освобождения памяти надо явно видеть. Вспомни свою аргументацию про try-finally.

В С++ ручной подход к освобождению памяти проработан тоже плохо. Там должна была быть какая-то иерархия пулов или чего-то в этом роде.

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

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

GC существует уже >50 лет. Задача решена теоретически, обоснована и запрограммирована уже в первом томике Кнута.

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

>Проприетарщина

И что? Мы говорим в данном случае о качественныхз IDE. Борландовые среды равно как и микрософтовская - тоже не открытые. Ненег - значительно больше чем у жетбрейнс - просто астрономически больше. Среды - говно.

>Конечно же, то, что интерфейса для плагинов там проактически нет, тоже будет отнесено в счёт превосходства явы над сиплюсплюсом?

Плагины тут не при чем. У меня их практиечески нет кроме самых необходимых. Там _умный_ редактор + рефакторинга достаточно чтобы перекрыть 80 процентов превосходства. Плугины дают еще 20.

>С моей колокольни это выглядит иначе: яву пытаются сунуть то в одно место, то в другое, а всё никак не найдут место, где она всех зарулит.

Только с той разнгицей что написаны при этом десятки тысяч работающих приложений. _Работающих_. И как уже упоминали в треде рядом - почему-то остальные токо сидят и занимаются копированием жабских технологий в другие языки.

>Ну вообще-то осилили.

Универсальный? Покажите мне.

>Мне слегка уже надоело говорить про отсутствие перегрузки операторов, многословный синтаксис, отсутствие возможности создавать новые конструкции языка, завязанность на ооп...

Да - язык говно. Но смотря с чем сравнивать. Если с с/++ - то это еще большее говно. И никакая перегрузка 3х с половиной операторов тут проблему не исправит. Та же самая манифестационная статика с полным отсутствием модерновых функциональных возможностей.

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

> GC существует уже >50 лет. Задача решена теоретически, обоснована и запрограммирована уже в первом томике Кнута.

Бгг. А всякие там Бейкеры и Метрономы - не нужны. И этот последний жабский GC (забыл, как его зовут) - тоже не нужен.

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

>> Да, по данному определению Eclipse - тормозит.

> На компьютере который в текущий момент стоит 14 т.р. текущий релиз Эклипса *не подвисает* на срок от пары сек до пары минут, так что это вранье.

Не все плагины одинаково полезны. К сожалению повисание интерфейса происходит на некоторых операциях. Железо - ноут на Core 2 Duo, 2Gb Ram.

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

>> Но аналогов по функциональности не существует, потому СЕЙЧАС нет возможности проверить можно ли за создать приложение аналогичное по функционалу и не тормозящее по этому определению.

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

Отсутствие аналога говорит о том, что ОЧЕНЬ сложно или практически невозможно создать аналог в сопоставимое время на другом языке программирования.

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

> В С++ ручной подход к освобождению памяти проработан тоже плохо. Там должна была быть какая-то иерархия пулов или чего-то в этом роде.

То, что в сиплюсплюсе что-то сделано хуже, не делает явовское решение хорошим.

Я б вообще не отказался от двух инструкций на удаление: delete и delete_leter. В первом случае явно яказываем удалить объект прям сейчас, в втором -- говорим мусорщику, что его можно удалить.

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

> GC существует уже >50 лет. Задача решена теоретически, обоснована и запрограммирована уже в первом томике Кнута.

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

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

> Отсутствие аналога говорит о том, что ОЧЕНЬ сложно или практически невозможно создать аналог в сопоставимое время на другом языке программирования.

emacs

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

>Я б вообще не отказался от двух инструкций на удаление: delete и delete_leter.

delete_later нету никакой необходимости. А вот с delete вопрос сложный. - не вставит ли он палок в колеса мусорщику и менеджеру памяти - я тоже мыслил что фактический делит мог бы помочь - но это обозначае войну с фрагментацией и более сложные стратегии распределения памяти - учитывая что рядом будет мусорщик коорый будет выполнять хип компакшен. То есть если память освобождать менеджеру для повторного распределения - грабли одни. Если отдавать мусорщику - то это фактически псевдоосвобожденная память.

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

>> Отсутствие аналога говорит о том, что ОЧЕНЬ сложно или практически невозможно создать аналог в сопоставимое время на другом языке программирования.

>emacs

Eight Megs And Continue Swapping. Лисп, фигле.

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

>emacs

Он производит типизированный анализ кода? Пример идейки - при вызове метода из метода у которых синтаксически частично совпадает сигнатурка

void m2(int a, int c){...} void m(int a, int b, int c) { m2(...) }

на месте троеточий он сам закомплитит правильные имена переменных. И вот таких ходов - море. Уж не говоря, что она еще и учится: если я делаю override method, а там какой нить параметр типа HttpServletRequest - имя переменной по умолчанию httpServletRequest. Далее нажатием двух кнопок это имя меняется на request - и IDE запоминает это. Дальше при аналогичном действии она назовет его request.

то emacs сделает?

Плугины по сумеринтеграции со всякой херней, мегавизарды и УМЛи тут не причем - вот что делают современные IDE. Вот что делает их хорошими.

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

>> Проприетарщина

> И что? Мы говорим в данном случае о качественныхз IDE.

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

> Плагины тут не при чем. У меня их практиечески нет кроме самых необходимых. Там _умный_ редактор + рефакторинга достаточно чтобы перекрыть 80 процентов превосходства. Плугины дают еще 20.

Рефакторинг для жабы/питона/чего_угодно из астрала появляется или в корку вшит?

> Только с той разнгицей что написаны при этом десятки тысяч работающих приложений. _Работающих_.

Где они? Шаблонные гуйки для баз, которые ооо "вася пупкин и ко" клепает по 5 штук за неделю?

btw, на дельфи тоже толпы реально работающих софтин.

> И как уже упоминали в треде рядом - почему-то остальные токо сидят и занимаются копированием жабских технологий в другие языки.

Что такое "жабские технологии"?

>> Ну вообще-то осилили.

> Универсальный? Покажите мне.

libdbi

> Да - язык говно. Но смотря с чем сравнивать.

А не надо ни с чем сравнивать, достаточно первой части фразы. Спасибо, я наелся :)

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

> А вот с delete вопрос сложный. - не вставит ли он палок в колеса мусорщику и менеджеру памяти - я тоже мыслил что фактический делит мог бы помочь - но это обозначае войну с фрагментацией и более сложные стратегии распределения памяти - учитывая что рядом будет мусорщик коорый будет выполнять хип компакшен. То есть если память освобождать менеджеру для повторного распределения - грабли одни. Если отдавать мусорщику - то это фактически псевдоосвобожденная память.

Ну пусть отдать его мусорщику с флагом "удали немедленно". Собственно, IDisposable в сишарпе что-то подобное делает.

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

> Он производит типизированный анализ кода? Пример идейки - при вызове метода из метода у которых синтаксически частично совпадает сигнатурка

А вот хз. Но чем емакс не аналог?

> на месте троеточий он сам закомплитит правильные имена переменных. И вот таких ходов - море. Уж не говоря, что она еще и учится: если я делаю override method, а там какой нить параметр типа HttpServletRequest - имя переменной по умолчанию httpServletRequest. Далее нажатием двух кнопок это имя меняется на request - и IDE запоминает это. Дальше при аналогичном действии она назовет его request.

Опять полезли ходы, специфичные только для явы. Более того, относящиеся к функционалу редактора, а не средф разработки.

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

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

ДАвайте подробно разберемся. Микрософт для С#(жаба в профиль) делает MSVC на С++. Следовательно целевое применение (жаба-иде) не регламентирует язык реализации. И вот поди ж ты - на жабе получилось за пару лет заделаться в лидеры - а эти за десятилетия и мегабаксы - все не родили.

>Рефакторинг для жабы/питона/чего_угодно из астрала появляется или в корку вшит?

Возможность реализации рефакторингов благодаря тому что IDE имеем внутреннее представление кода который можно рефакторить. И всякие фишки благодаря этому. Да - кушаем немножко памяти - но результаты сравните.

>Где они? Шаблонные гуйки для баз, которые ооо "вася пупкин и ко" клепает по 5 штук за неделю?

Он их клепает для кого-то. Заказуха да. На тиклепитонорубях я тоже ничего не вижу.

>btw, на дельфи тоже толпы реально работающих софтин.

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

>Что такое "жабские технологии"?

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

libdbi родился в 2005 году - когда jdbc был уже в полный рост. Почему оно не появилось пока жабщики не озаботились? Никому не нужен был?

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

>Но чем емакс не аналог?

Тем что он ничего этого не делает:)

>Опять полезли ходы, специфичные только для явы.

Адаптация под стиль программиста - это ход полезный только для явы?!

>Более того, относящиеся к функционалу редактора, а не средф разработки.

Это основное что мне там нужно. Всякие визарды, гуидизайнеры и прочая фигня мне и нафиг не нужна.

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

>> на месте троеточий он сам закомплитит правильные имена переменных. И вот таких ходов - море. Уж не говоря, что она еще и учится: если я делаю override method, а там какой нить параметр типа HttpServletRequest - имя переменной по умолчанию httpServletRequest. Далее нажатием двух кнопок это имя меняется на request - и IDE запоминает это. Дальше при аналогичном действии она назовет его request.

> Опять полезли ходы, специфичные только для явы. Более того, относящиеся к функционалу редактора, а не средф разработки.

А у вас в среду разработки редактор не входит???

Есть ли редактор С++ который по мощьности рефакторинга сравним с IDEA? или даже Eclipse (хотя рефакторинг в нем откровенно слабый)???

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

> Есть ли редактор С++ который по мощьности рефакторинга сравним с IDEA? или даже Eclipse (хотя рефакторинг в нем откровенно слабый)???

Стандартные ответы на этот вопрос - xrefactory и SlickEdit.

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

> Микрософт для С#(жаба в профиль) делает MSVC на С++. Следовательно целевое применение (жаба-иде) не регламентирует язык реализации.

C++, на котором сейчас пишет ms явялется всего лишь ресинтаксифицированным сишарпом по большей части.

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

Жебе сколько лет? Явно не пара.

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

Не для всякого кода годится.

> И всякие фишки благодаря этому. Да - кушаем немножко памяти - но результаты сравните.

Простите, но это "немножко" ни в какие ворота не лезет.

> libdbi родился в 2005 году - когда jdbc был уже в полный рост.

В третьих кутях оно было вроде гораздо раньше. Но таки да, там не ц.

> Почему оно не появилось пока жабщики не озаботились? Никому не нужен был?

да, ибо интерфейс mydbclient "select * from t" | my_c_program более универсален

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

>Стандартные ответы на этот вопрос - xrefactory и SlickEdit.

Пробовал слик эдит:) Бледное подобие левой рики (С)...

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

> Адаптация под стиль программиста - это ход полезный только для явы?!

Написание излишнего кода -- ход, полезный только для явы.

>> Более того, относящиеся к функционалу редактора, а не средф разработки.

> Это основное что мне там нужно. Всякие визарды, гуидизайнеры и прочая фигня мне и нафиг не нужна.

Напиши макрос, который будет приводить заголовок функции к твоему стилю. В чём проблема?

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

> Есть ли редактор С++ который по мощьности рефакторинга сравним с IDEA?

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

Скажу лично для себя: локальные переменные я выделяю уже на этапе первоначального набора кода -- старая привычка. С поиском деклараций у меня спокойно справляется grep, с переименованием переменной -- s/name/newname/gc.

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

>> Есть ли редактор С++ который по мощьности рефакторинга сравним с IDEA?

>Кстати, интересно услышать, какие именно фичи под шапкой "рефакторинг" столь любимы вами.

Например замена наследования на аггрегирование. Или экстракция интерфейса из класса с заменой всех ссылок на класс ссылками на новый интерфейс.

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

> Например замена наследования на аггрегирование. Или экстракция интерфейса из класса с заменой всех ссылок на класс ссылками на новый интерфейс.

Да, опять специфичное для явы/сиплюсплюса. Не во всех языках есть такая необходимость.

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

>Жебе сколько лет? Явно не пара.

Пару лет понадобилось стартапу из трех человек, чтобы вывести IDE в тройку лидеров.

>Не для всякого кода годится.

Да - для С - трудно. Для "не С" - вполне.

>Простите, но это "немножко" ни в какие ворота не лезет

Серьезно?

575m 252m 21m IDEA
575m 252m 21m Skype
254m 87m 27m SeaMonkey
156m 54m 24m Amarok
111m 41m 26m Acrobat
167m 13m 9284 qstardict

На фоне инстант мессенжеров и пдфвьеверов вместе с бровзерами - это влезает в любые ворота.

>В третьих кутях оно было вроде гораздо раньше.

Гораздо, это когда? С 2001 года? JDBC был еще в жабе 1.0 (пакет jdbc.sql) 1995 год.

>да, ибо интерфейс mydbclient "select * from t" | my_c_program более универсален

Ага - счаз. Шутки шутками - но могут быть и дети. Драйвера на С были. На чем угодно были - только в виде различных велосипедов без всяких стандартов.

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

>> Например замена наследования на аггрегирование. Или экстракция интерфейса из класса с заменой всех ссылок на класс ссылками на новый интерфейс.

>Да, опять специфичное для явы/сиплюсплюса. Не во всех языках есть такая необходимость.

Что поделать, раз пионеры не осиливают функции высокого порядка.

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

>Написание излишнего кода -- ход, полезный только для явы.

Что - скатились таки до "на С пишут суперпрофессионалы - им кроме cat >>" ничего ненада?

>Напиши макрос, который будет приводить заголовок функции к твоему стилю. В чём проблема?

написать то можно - только это и есть проблемаоторую мы рассматриваем - а именно написать то можно все что угодно и памятью зарулить руками на каждый чих и тому подобное - только это обозначает что я вместо решения целевой задачи буду посвящать свое время сопутствующим в неадекватном количестве. Это причина по которой приличная IDE на С++ никогда не родится. Слишко много написать для писания IDE надо:)

http://www.linux.org.ru/view-message.jsp?msgid=1343241&page=5#1344764

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

>Да, опять специфичное для явы/сиплюсплюса. Не во всех языках есть такая необходимость.

Во всех языках есть споцифичная для них необходимость. ренейм который понимает что он делает - никто не отменял s/.../../gc не выявит контекст и не сделает реплейс только в области видимости переменной. extract function - вообще универсальная фигня. Для окамлоподбной модульной системы - добавить в интерфейс модуля, выделить интерфейс модуля и т.д.

Короче _дофига_.

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

> Пару лет понадобилось стартапу из трех человек, чтобы вывести IDE в тройку лидеров.

<telepathy>Тут говорится про IDEA?</telepathy> По накатанному идти всегда легче, не правда ли?

>> Простите, но это "немножко" ни в какие ворота не лезет

> Серьезно?

Серьёзно. Советую померить потребление памяти мощным текстовым редактором.

>> В третьих кутях оно было вроде гораздо раньше.

> Гораздо, это когда? С 2001 года?

Имелось в виду гораздо раньше libdbi.

> Драйвера на С были.

Писавшие на ц писали и под конкретную базу и перенос под другую БД сравним с переписыванием заново. Ровно как и любой проект, написанный с использованием SQL, ибо стандарт вроде есть, а чуть глуюже влезешь -- так каждый вендор пишет по-своему.

И с явой так же, ибо один хрен jdbc без гибернейта нифига не портабелен. (а с ним -- несъедобен на данный момент)

> На чем угодно были - только в виде различных велосипедов без всяких стандартов.

Чем "прочитать из пайпа строки, разделённые табами" не стандартный метод? Или его надо было принять в ISO?

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

> JDBC был еще в жабе 1.0 (пакет jdbc.sql) 1995 год.

Ага, и был этот JDBC мостом в ODBC - стандартный интерфейс доступа _для Си_.

Да и был ли он в 1.0?

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

>>> Например замена наследования на аггрегирование. Или экстракция интерфейса из класса с заменой всех ссылок на класс ссылками на новый интерфейс.

>> Да, опять специфичное для явы/сиплюсплюса. Не во всех языках есть такая необходимость.

> Что поделать, раз пионеры не осиливают функции высокого порядка.

Аяяй, какой мы взрослый дядя.

Кушай примерчики: Кусок кода с использованием snit: "delegate method * to subElem". Рефакторинг не нужен, т.к. и без того пишется в 1 строчку.

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

>По накатанному идти всегда легче, не правда ли?

Кем накатанному? Кто им накатал? Ну давайте вон у вас Qt - инструмент сравнимый по мощности с JRE - накатайте.

>Советую померить потребление памяти мощным текстовым редактором.

Который ничего не умеет кроме набора строк и подсветки? Слово мощным - это по сравнению с чем? С Нотепадом?

>Писавшие на ц писали и под конкретную базу и перенос под другую БД сравним с переписыванием заново.

Какая почетная работа. НАверное никому и в голову не пришло что где то тут грабли - насущьных проблем с памятью хватало?:)

>И с явой так же, ибо один хрен jdbc без гибернейта нифига не портабелен.

Портабелен он без всяких гибернейтов в рамках стандарта SQL.

>Чем "прочитать из пайпа строки, разделённые табами" не стандартный метод?

отсутствием dbclient'ов которые их выводят одинаково.

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

>Ага, и был этот JDBC мостом в ODBC - стандартный интерфейс доступа _для Си_.

Правильно - референс иплементейшен был для ODBC by sun. ТАн как бы баз данных не делает. Но сан сделал JCP - и это позволило вендорам вокруг жабы формировать общие стандарты.

>Да и был ли он в 1.0?

Да. В 1.1 он уже назывался java.sql.

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

>> Ага, и был этот JDBC мостом в ODBC - стандартный интерфейс доступа _для Си_.

> Правильно - референс иплементейшен был для ODBC

Самое правильное здесь то, что к тому времени ODBC во-первых, существовал, во-вторых, был достаточно распространен, так что споры о том, где раньше был стандартный интерфейс доступа к БД, просто неуместен %)

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

>> По накатанному идти всегда легче, не правда ли?

> Кем накатанному? Кто им накатал?

Путь разработки ide перед ними пройден несколько раз, идеи витают в воздухе.

>> Советую померить потребление памяти мощным текстовым редактором.

> Который ничего не умеет кроме набора строк и подсветки? Слово мощным - это по сравнению с чем? С Нотепадом?

Мощным -- по возможностям. Я не виноват, что мощный текстовый редактор в вашем сознании всего лишь редактор с подсветкой синтаксиса.

>> И с явой так же, ибо один хрен jdbc без гибернейта нифига не портабелен.

> Портабелен он без всяких гибернейтов в рамках стандарта SQL.

И как у нас теперь портабельно объединять строки? И как портабельно называется lob? Стандарт SQL _слишком_ узок. Я уж не говорю про отсутствие on delete cascade при вызове create table в ms access.

>> Чем "прочитать из пайпа строки, разделённые табами" не стандартный метод?

> отсутствием dbclient'ов которые их выводят одинаково.

awk-ом причесать данные мама^W Гослинг запрещает?

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

>Кусок кода с использованием snit: "delegate method * to subElem". Рефакторинг не нужен, т.к. и без того пишется в 1 строчку.

Это что-то типа Сишного subElem.handler = &some_func ? Да, печально что в плюсах это сломали.

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

>Путь разработки ide перед ними пройден несколько раз, идеи витают в воздухе.

Серьезно? Я даже больше скажу - по теме рефакторинга phd была защищена в 1979 году AFAIK, а в смолтолковских средах он даже был реализован - то есть это было за 18 лет до появления первой студии. И где оно было? Где оно в емаксе? _30_ лет прошло. Где столь умный редактор? В этом смысле эклипс их только доганяет - это было стереотипной IDE которой только и хватало на комплитить после точки.

ТАк что таки да - иде летали в воздухе. Осилевших не было.

>Мощным -- по возможностям.

Теперь начинайте перечислять вы эти мощные возможности.

>И как у нас теперь портабельно объединять строки? И как портабельно называется lob? Стандарт SQL _слишком_ узок

Это проблема SQL, а не драйвера. Драйвер может быть достаточно унифицирован независимо от SQL.

>awk-ом причесать данные мама^W Гослинг запрещает?

То есть это и есть - написать общий интерфейс - только руками.

Потому и нет IDE:)

r ★★★★★
()

Приветствую. Ну так что там с тестами? {Задачка с ферзями на C и Java}. Я щас Дельфей мигрировать собрался, C# не прельщает, может так для общего развития. Пока в списке Java & Python. Скорость исполнения кода средой меня несильно волнует, предпочитаю выигрывать на правильном алгоритме(решении). Тем более что прогресс не стоит на месте, и мир далеко у же от темы как вместить прогу в пару килобайт, эт так, отступление на тему "кто быстрее и сильнее". Буду прогать микросхемы, выучу С, в конце концов язык всего лишь инструмент, а умение им пользоваться зависит от тебя. Всем риспект. Жду продолжения темы.

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

> Где оно в емаксе?

emacs тесно связан с лиспом, а в лиспе это не нужно. Да и в любом другом языке, где не надо громоздить 10 строк кода и дополнительный интерфейс на одно вшивое замыкание. Необходимость в этом возникла только из-за появления многословных многодублирующихся языков типа явы.

Да, именно поэтому такие ide есть только для жабы.

> Теперь начинайте перечислять вы эти мощные возможности.

cat $docdir/vim/features;read d;cat $docdir/emacs/features

> Это проблема SQL, а не драйвера. Драйвер может быть достаточно унифицирован независимо от SQL.

Про odbc уже сказали.

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

> Ну так что там с тестами? {Задачка с ферзями на C и Java}

Ява слила.

> Скорость исполнения кода средой меня несильно волнует, предпочитаю выигрывать на правильном алгоритме(решении). Тем более что прогресс не стоит на месте, и мир далеко у же от темы как вместить прогу в пару килобайт, эт так, отступление на тему "кто быстрее и сильнее".

Весьма показательный пример целевой аудитории языка Java.

Кстати, поинтересуйтесь зарплатами на другие специальности, прежде чем идти работать программистом. В нашем городе водитель мусоровоза получает примерно столько же, сколько начинающий программист на Java, зато ему не надо думать о скорости выполнения кода средой, знай только баранку крути и управляй сложным гидравлическим устройством. Да и перспективы роста более радужные, например, он может стать диспетчером или даже директором. Кстати, там всё кроссплатформенно, так что знания и из WIndows и из Linux пригодятся.

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

>> Кусок кода с использованием snit: "delegate method * to subElem". Рефакторинг не нужен, т.к. и без того пишется в 1 строчку.

> Это что-то типа Сишного subElem.handler = &some_func ?

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

> Да, печально что в плюсах это сломали.

Плюсы к тебе ещё по ночам не приходят? ;)

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

>> Скорость исполнения кода средой меня несильно волнует, предпочитаю выигрывать на правильном алгоритме(решении). Тем более что прогресс не стоит на месте, и мир далеко у же от темы как вместить прогу в пару килобайт, эт так, отступление на тему "кто быстрее и сильнее".

>Весьма показательный пример целевой аудитории языка Java.

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

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