|
|
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, Я бы не хотел тут развязывать священных войн между паскальщиками и Сишниками)). Я делал проекты как на Дельфях, так и на С++ и хорошо представляю себе сильные и слабые стороны обоих этих языков, также уважаю Джоэла как толкового популяризатора, поэтому спорить с ним было бы нескромно с моей стороны))). Одно только замечание: В плане быстродействия очень многое зависит от реализации языка. В т.ч. и при работе со строками. Возьмем С++. Многочисленное семейство функций str.. в стандартной библиотеке, так же, как и работа со строковыми массивами посредством выделения памяти из кучи - это всё поддерживается уже больше в целях совместимости со старыми исходниками и старыми проектами, написанными в стиле С, нежели для современных проектов. Если Вам так претит поиск завершающего нуля для сишной строки - не используйте строки в стиле char * . Используйте контейнер String , который Вам так же предоставляет STL. Подумайте - если Вы, скажем, копируете или ещё как манипулируете одной очень большой строкой и/или делаете всё это в циклах, то накладные расходы на определение длины вашей строки по сравнению со временем окончания самой операции копирования просто мизерны и смешно говорить об этом как о недостатке по сравнению с тем же паскалем. Прошерстить строку в оперативке в поиске нуля - это в современной машине - тьфу и растереть. Ненамного дольше, чем считать первый байт паскальной строки, чтобы этим пренебречь Другое дело, что тут подводные камни, связанные с надежностью, с переполнениями и т.п., но не будем в это вдаваться, а то точно утонем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:33:39 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Алексей КnicktcherЛюбую современную прикладную задачу можно реализовать как, допустим, на Дельфях, так и на C++ за сопоставимое время. Если Вы знаете какую-либо задачу, с которой справится только какая-то одна система - назовите, поспорим.Традиционно, есть БД, нужно к ней прикрутить серверную логику. Варианты: 1. На хранимых процедурах в SQL. 2. .Net или Java 3. C++ или Delphi ИМХО: Последние два ну никак не подходят для этой задачи. Их выбор для этой задачи может обернуться крахом. Мне показалось или вы не совсем корректную задачу привели. Если правильно понял речь идет о языках программирования. Несомненно Серверную логику надо реализовывать в самой БД. Процедуры, триггеры, Курсоры, Функции, пакеты, и т.п. Но тогда задача приложения сводиться к тому, чтобы: послать селект, получить данные, отобразить инфу, внести инфу в БД через процу. со всеми этими задачами вспавятся я думаю все перечисленные вами языки и IDE. Но на мой взгляд самым отпимальным было бы либо delphi либо C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:39:06 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
nicktcherXDiaBLo, Я бы не хотел тут развязывать священных войн между паскальщиками и Сишниками)). Я делал проекты как на Дельфях, так и на С++ и хорошо представляю себе сильные и слабые стороны обоих этих языков, также уважаю Джоэла как толкового популяризатора, поэтому спорить с ним было бы нескромно с моей стороны))). Одно только замечание: В плане быстродействия очень многое зависит от реализации языка. В т.ч. и при работе со строками. Возьмем С++. Многочисленное семейство функций str.. в стандартной библиотеке, так же, как и работа со строковыми массивами посредством выделения памяти из кучи - это всё поддерживается уже больше в целях совместимости со старыми исходниками и старыми проектами, написанными в стиле С, нежели для современных проектов. Если Вам так претит поиск завершающего нуля для сишной строки - не используйте строки в стиле char * . Используйте контейнер String , который Вам так же предоставляет STL. Подумайте - если Вы, скажем, копируете или ещё как манипулируете одной очень большой строкой и/или делаете всё это в циклах, то накладные расходы на определение длины вашей строки по сравнению со временем окончания самой операции копирования просто мизерны и смешно говорить об этом как о недостатке по сравнению с тем же паскалем. Прошерстить строку в оперативке в поиске нуля - это в современной машине - тьфу и растереть. Ненамного дольше, чем считать первый байт паскальной строки, чтобы этим пренебречь Другое дело, что тут подводные камни, связанные с надежностью, с переполнениями и т.п., но не будем в это вдаваться, а то точно утонем). Во-первых я просто ответил на высказывание что сишные строки быстрее всего. Я сказал что это неправда, бывают строки и получше стандартных сишных. И всё. А во-вторых не String, а string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:42:32 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
gdsАлексей КnicktcherЛюбую современную прикладную задачу можно реализовать как, допустим, на Дельфях, так и на C++ за сопоставимое время. Если Вы знаете какую-либо задачу, с которой справится только какая-то одна система - назовите, поспорим.Традиционно, есть БД, нужно к ней прикрутить серверную логику. Варианты: 1. На хранимых процедурах в SQL. 2. .Net или Java 3. C++ или Delphi ИМХО: Последние два ну никак не подходят для этой задачи. Их выбор для этой задачи может обернуться крахом. Мне показалось или вы не совсем корректную задачу привели. Если правильно понял речь идет о языках программирования. Несомненно Серверную логику надо реализовывать в самой БД. Процедуры, триггеры, Курсоры, Функции, пакеты, и т.п. Но тогда задача приложения сводиться к тому, чтобы: послать селект, получить данные, отобразить инфу, внести инфу в БД через процу. со всеми этими задачами вспавятся я думаю все перечисленные вами языки и IDE. Но на мой взгляд самым отпимальным было бы либо delphi либо C#. Совершенно согласен, gds. Алексей К, неудачный пример. Серверная логика всегда реализуется именно средствами БД, а не прикладными высокоуровневыми языками. Для коннекта с любой БД есть универсальный подход с ODBC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:45:15 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Кстати насколько я знаю, в Оракле есть возможность писать встроенные процедуры на жаве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:48:34 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
XDiaBLoКстати насколько я знаю, в Оракле есть возможность писать встроенные процедуры на жаве да да имено так оно и есть. Если у вас есть поддержка явы. Там даже компонент идет в компдекте Java SDK. Но мне ближе к душе PL/SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:51:09 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, Правильно, молодец)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:51:45 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
nicktcherСовершенно согласен, gds. Алексей К, неудачный пример. Серверная логика всегда реализуется именно средствами БД, а не прикладными высокоуровневыми языками. Для коннекта с любой БД есть универсальный подход с ODBCОткуда тогда беруться холивары на тему "n-tier" vs "логика в SQL"? :-) Я не сторонник выноса логики из СУБД без особых на то причин. Я лишь хотел привести необоснованный вынос логики из СУБД в качестве примера выбора неверной архитектуры, и, как следствие, неверных средств разработки. Впрочем, если Вы считаете пример неудачным - я не настаиваю. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:57:53 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
nicktcherXDiaBLo, Правильно, молодец)) Это насчёт пункта 2 авторТрадиционно, есть БД, нужно к ней прикрутить серверную логику. Варианты: 1. На хранимых процедурах в SQL. 2. .Net или Java 3. C++ или Delphi ИМХО: Последние два ну никак не подходят для этой задачи. Их выбор для этой задачи может обернуться крахом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:57:59 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
gdsXDiaBLoКстати насколько я знаю, в Оракле есть возможность писать встроенные процедуры на жаве да да имено так оно и есть. Если у вас есть поддержка явы. Там даже компонент идет в компдекте Java SDK. Но мне ближе к душе PL/SQL. Ага, вообще конечно, надо использовать наиболее подходящий инструмент для соответствующей ситуации. Действительно, СУБД Oracle оснащена встроенной JVM, что позволяет встраивать прям в базу соответствующие жавные процедуры. Но сам Oracle всегда настойчиво подчеркивает, что для серверной части оптимальным по быстродействию будет использование PL/SQL, а Java предназначен больше для использования в промежуточном слое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:58:29 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
nicktchergdsXDiaBLoКстати насколько я знаю, в Оракле есть возможность писать встроенные процедуры на жаве да да имено так оно и есть. Если у вас есть поддержка явы. Там даже компонент идет в компдекте Java SDK. Но мне ближе к душе PL/SQL. Ага, вообще конечно, надо использовать наиболее подходящий инструмент для соответствующей ситуации. Действительно, СУБД Oracle оснащена встроенной JVM, что позволяет встраивать прям в базу соответствующие жавные процедуры. Но сам Oracle всегда настойчиво подчеркивает, что для серверной части оптимальным по быстродействию будет использование PL/SQL, а Java предназначен больше для использования в промежуточном слое. Когда я работал в НИИ, один коллега мне упоминал, что в Оракле жавные процедуры сильно ограничены по вычислительным ресурсам, видимо чтобы Ораклу не мешать... Так что думаю да, они даже насильно заставляют поменьше пользоваться жавой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:01:39 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
XDiaBLo Когда я работал в НИИ, один коллега мне упоминал, что в Оракле жавные процедуры сильно ограничены по вычислительным ресурсам, видимо чтобы Ораклу не мешать... Так что думаю да, они даже насильно заставляют поменьше пользоваться жавой :) нет, нет, они не ограничены конечно и насильно никто не заставляет, просто в Oracle очень хорошо отшлифован уже стык между ядром PL/SQL и ядром SQL (это ж всё таки родственнички!), вот там как раз выигрыш по сравнению с Java-машиной существенный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:06:57 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
eee-pc а сколько кодировок появилось за это время, ппц. почему например все flash видео сайты делают свой формат, не совместимый с другими ? тоже и здесь. это не си заставляет делать си-строки (кстати сказать, что си-строки вполне достойны, кроме того, самые быстрые из всех). это удары под ребра заставляют крутится 1) Честно говоря я не понял связи с flash video. Возможно вы имели в виду что-то другое? 2) C-строки не могут быть быстрыми или медленными. Они не могут быть никакими потоу что их просто не существует. Есть некая каноническая библиотека (объявленная string.h) для работы с ASCIIZ-массивами. С этого начинается любое программирование строк на низком уровне.И все начинающие сишники её изучают. Это как ассемблер. Но она не лишена недостатков. Например, довольно сложно сделать return string из функции, особенно если она рекурсивная. Сложно конкатенировать строки в условиях расположения в стеке. И еще много чего сложно. Есть также немалый процент нареканий со стороны безопасности С-кода. Существуют эксплоиты, испольуют атаку на ASCIIZ массивы. Но..... существует масса прикладных библиотек. Каждая из которых навязывает свою собственную концепцию работы со строками. MFC, VCL, STL, и прочие *L создают свой собственный ни с чем не совместимый набор абстракций. Но ни одна из них так и не стала частью ЯЗЫКА. Они по прежнему остаются custom-библиотеками. И программист С++ должен лавировать между ними, выбирая удобную для себя методику. А когда методик несколько.... начинается АЛИС КАПУТ, о котором мы писали выше. По поводу скорости. Мне сложно говорить без сравнительных примеров и бенчмарков, поэтому, если возникнет желание - давайте поднимем отдельный тред, в котором сравним скорость поиска подсроки в строке для различных library. Если этот тест покажется вам неполным или недостаточным - предложите свой. Я буду не против. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:09:47 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Алексей К Я не сторонник выноса логики из СУБД без особых на то причин. Я лишь хотел привести необоснованный вынос логики из СУБД в качестве примера выбора неверной архитектуры, и, как следствие, неверных средств разработки. Впрочем, если Вы считаете пример неудачным - я не настаиваю. :-) Я тоже не сторонник выноса логики за пределы БД. Но зачастую иногда бывает это единственным выходом, по разным на то причинам. Например единая (своеобразная) обработка данных для нескольких модулей в Комплектном ПО. И если это случилось, то в "идеальном" варианте я бы написал эту логику на С/С++ - если надо обеспечить максимально бытродействие, а потом подключил бы куда мне удобно. Хоть к Delphi, хоть к C#, хоть к C++, хоть к Java - если она позволяет. Поправде говоря ни разу не писал на ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:11:37 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Aklin Jну яЭто не удобно ))) Это так и должно быть у белых людей ))) поясните. "неудобно должны быть", "неудобно у белых людей" ??? разница в двух позициях Не, разница в одной позиции. Пробела. Есть разница между неудобно и не удобно. Перевожу проще - "не удобно" - это слабая форма, предпочитаю покрепче ))) Или: Это не удобно, а так и должно быть у белых людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:33:18 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
nicktcher Подумайте - если Вы, скажем, копируете или ещё как манипулируете одной очень большой строкой и/или делаете всё это в циклах, то накладные расходы на определение длины вашей строки по сравнению со временем окончания самой операции копирования просто мизерны и смешно говорить об этом как о недостатке по сравнению с тем же паскалем. Прошерстить строку в оперативке в поиске нуля - это в современной машине - тьфу и растереть. Ненамного дольше, чем считать первый байт паскальной строки, чтобы этим пренебречь Мне кажется что это как раз явный алгоритмический антипаттерн. Поиск нуля, действительно тривиален, но если эта операция будет в цикле то вы получите серъёзную просадку в производительности. А если строка при этом буде расти в размере, то можно получить и квадратичную и кубическую сложности алгоритмов. Хранить длину строки отдельно - тоже антипаттерн. Но уже не алгоритма а дизайна. Такой код трудно сопровождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:34:40 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
mayton Мне кажется что это как раз явный алгоритмический антипаттерн. Поиск нуля, действительно тривиален, но если эта операция будет в цикле то вы получите серъёзную просадку в производительности. ... В принципе согласен, каюсь, эт я не слишком удачный пример привел(. Для особо запущенных случаев скорее всего лучше отойти от использования стандартных функций и придумать какой-нить свой алгоритм, оптимальный в данной конкретной ситуации. Кстати, если мы обрабатываем одну и ту же строку, то простое и эффективное решение - "закэшировать" её длину при первой итерации и при дальнейших манипуляциях с этой строкой динамически менять. Я вот только затрудняюсь представить пример, где бы у сишников возникали бы подобные сложности)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:48:50 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
FixinBagaBagaДа и на кой мне к счетчику цикла i присобачивать по сути "квалификатор пространства имен" MyBestCompanyForeverI? Буквоедство detected. Речь идет об именах классов а не о именах переменных. Вы для счетчика класс заводите? Тогда приаттачивайте имя, да. Так. У классов чегой-то дописывать нужно... А у структур??? Да, если не в курсе, то итератор (о С++ речь) - это таки да, класс. Ну и какая тут экономия??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 16:50:32 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
2 All По поводу ASCIIZ. Я немножко поковырял поисковики на предмет истории возникновения ASZII-нулевых строк. Первые сообщения об этом формате мелькают в статьях, посвящённых PDP (Programmed Data Processor). Это семейство довольно древних ЭВМ. Так вот. Из обрывков информации я узнал, что ASCIZ строка имела аппаратную реализацию на PDP. Впоследствии формат был перенесён на Intell архитектуры, у которых не было этой поддержки, из за чего, Pascal строки на Intell работают эффективнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 22:01:11 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
mayton, серию PDP и конкретную команду - в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 22:37:22 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
ЗабаненныйСкачал CLARION7 - только установил. Так дай жеж ссылку, где нам взять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 22:52:11 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Изопропил... Что-то типа того. Две ассемблерные команды копируют строку из источника в получатель. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 23:47:00 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
gds ИМХО: Си очень мошьный и инструмент в хороших руках. Си мне не нравится именно из-за своей ненужной усложненности. Ассемблер еще мощнее в умелых руках, но ну его нафиг. Проблема в том, что нет ни одного нормального кроссплатформенного компилятора а-ля QT, только для языка Си++. Странно, подход с кроссплатформенным компилятором более выигрышный, чем кроссплатформенная виртуальная машина, как JAVA или NET, почему все силы разработчиков ушли на JRE и NET, непонятно. Будь у меня выбор (альтернатива QT) я бы поклал на СИ++ с большой крыши. Это язык не для человека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2009, 00:13:55 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Hor_netСтанная беседа... Овладевайте слепым 10-и пальцевым методом набора текста и это решит проблему "избыточности" языков. Ну в самом деле, ну сколько вы тратите на набивку и сколько на обдумывание решения. Набивка это ничтожное время. Там нечего уже экономить. ну да, конечно, давайте на ассемблере набивать код... Обдумывать то больше будем. Если в языке есть мусорный код, от него надо избавляться. Зачем делать язык чрезмерно усложненным. Я лично не понимаю, зачем такая кривая схема включения H-файлов. Понимаю, так удобно компилятору, но человеку так не удобно. Человек знает, что у него есть классы, объявление интерфейса и реализации он может сделать в разных файлах, система их проиндексировать и не нужно никаких инклюдов. Инклюды - это пережитки прошлого... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2009, 00:16:27 |
|
||
|
Морально устаревшие элементы языков высокого уровня
|
|||
|---|---|---|---|
|
#18+
Алексей КHor_netНу в самом деле, ну сколько вы тратите на набивку и сколько на обдумывание решения. Набивка это ничтожное время. Там нечего уже экономить.Проекты бывают разные. Видимо Вам повезло с вашими проектами, при реализации которых приходится думать. А бывают проекты, где всё давным давно уже обдумано, и само по себе программирование давно превратилось в тупое набивание текста. Интересно, в QT Creator события привязываются к элементам управления в IDE или ручками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2009, 00:17:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35984371&tid=1344474]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
223ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 524ms |

| 0 / 0 |
