За последние 24 часа нас посетили 19190 программистов и 1643 робота. Сейчас ищет 901 программист ...

труъ язык программирования

Тема в разделе "Прочее", создана пользователем dark-demon, 18 ноя 2007.

  1. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    нет, скобок как раз достаточно. они визуально разбивают наше условие на две логически равноправные части.
     
  2. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Горбунов Олег
    дело не в "попробывать" и в удобстве, а в производительности. Этим страдает .НЕТ, понавешали ООП всюду, а потом спрашиваю, почему так медленно...

    dark-demon
    честно? мне удобнее strlen(переменная), или там sizeof(переменная).
    Вообще не поддерживаю идею про скобки (точнее их упразднение), ибо только скобками формируется выражение, которое нельзя понять двусмысленно (и даже тени сомнений не появляется).
     
  3. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    медленно из-за ООП? )))))
    Опять?! ))))
     
  4. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    > честно? мне удобнее strlen(переменная), или там sizeof(переменная).

    strlen( 'а если вы захотите перевести приложение на использование юникода, то извольте везде поменять strlen на mb_strlen' );


    > Вообще не поддерживаю идею про скобки (точнее их упразднение)

    скобки никто не упразняет. не знаю где ты такое вычитал.
     
  5. Anonymous

    Anonymous Guest

    Ну, в пхп заплатко уже есть. Или костыль, если хочешь.
     
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    Ну, это вообще не аргумент. mb_strlen(str) vs. strlen(str) ничуть не хуже str.length vs. str.mb_length ;) вопрос в том, есть в языке нативная поддержка Уникода или нет. В хорошем ЯП она конечно же должна быть :)
     
  7. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Эт недостаток реализации конкретных модулей/библиотек, а не языка как такового. Без string функций PHP будет спокойно работать, просто вам реализовывать их придётся ручками своими - только и всего.
     
  8. Anonymous

    Anonymous Guest

    корэ ва ватаси но нэко дэсу! ;)
     
  9. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    > Ну, это вообще не аргумент. mb_strlen(str) vs. strlen(str) ничуть не хуже str.length vs. str.mb_length

    (0o._.o0) при объектном подходе в обоих случаях будет str.length

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

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    armadillo
    именно, идет вызов конструктора, выделение памяти, а после отработки - free. Банальный random() в цикле, следуя правилам ООП будет создавать себя (если функция тоже объект), переменные в себе (если они объекты), возвращаться результат (неее, не в EAX, а тоже обектом, который нужно создать, у нас ведь супер-мега отречение от асма:) ), а потом заставить менеджер памяти почистить:)


    dark-demon
    не понял :)
    перекрыть strlen() нельзя? это должно быть в true-языке программирования :)

    по скобкам - извиняюсь, не понял кашу про приоритеты операторов в посте от "Вт Ноя 27, 2007 21:36" (блин, а разве нумерации постов в теме нету?)
     
  11. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    извини за грубость, узнал много буков и выкладываешь. ПРи чем тут асм и причем тут rand ?

    Конкретный вменяемый пример и насколько медленнее?
     
  12. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    armadillo
    http://delphimaster.ru/cgi-bin/forum.pl ... 1194091269

    ЗЫ есть пример и с ВинАПИ, конкретно с Getpixels/Setpixels (точку на hdc можно раскрасить,грубо говоря), очень универсально и просто в использовании. При другом подходе (получение прямого адреса точки в памяти, учитывая заголовки и формат), обычным процедурным программированием дсотигается впечатлительных результатов (число под циклами - время выполнения в секундах):
    Код (Text):
    1. //======= запрос пикселя ===============
    2.      { for i:=0 to 99999 do
    3.       dds:=btte.Canvas.Pixels[10,10]; //winapi
    4.       //0,13651316   }
    5.  
    6.      // for i:=0 to 99999 do
    7.      // dds:=bt3.GD_GetPixel(10,10);
    8.       //0,000983365
    9.  
    10.      { for i:=0 to 99999 do
    11.       dds:=bt3.GD_GetPixel_unsafe(10,10);
    12.       //0,000810717    }
    13. //======= установка пикселя ===============
    14.      { for i:=0 to 99999 do
    15.        btte.Canvas.Pixels[10,10]:=clred; //winapi
    16.        //0,045453821  }
    17.  
    18.      {for i:=0 to 99999 do
    19.        bt3.GD_SetPixel(10,10,clred);
    20.       //0,001177803   }
    21.  
    22.      { for i:=0 to 99999 do
    23.        bt3.GD_SetPixel_unsafe(10,10,clred);
    24.        //0,00103616  }
    ЗЗЫ ну а уж что такое WinApi наверное знаете, везде трезвонят, что так можно писать маленькие и быстрые прогрыммы. Вот только местами там перегружено все...

    ЗЗЗЫ кстати, потому и игры в последнее время тормозные выпускают - языки высокого уровня значительно облегчают разработку, скорость написания выше и командная работа более налаженная получается. Однако как результат - из-за всех этих ООП не к месту падает производительность :(
     
  13. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    Щазз! Как реализуешь, так и будет. Что, если нужна функция для определения длины строки в байтах?
     
  14. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    antonn проблема у аффтора в голове. А закрашивать матрицу хотя бы по строкам ему в голову не приходило? Там кость?
    вы бы еще вместо pow(int a, int b) писали while () { while () { while (i<a) a++;
    а потом кричали что тормозит что-то внешнее.
     
  15. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    +1 к antonn, отрицать, что ООП тормозит выполнение программы - глупо. Руби именно поэтому поначалу так настороженно воспринимали - существующая реализация дико тормозила.
     
  16. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    в общем я опять пас, если не думать и кричать а или б плохо, такие результаты неизбежны.
     
  17. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    armadillo
    код то смотрел?
    а спроси там, узнаешь много язвительных выражений, и почему нельзя :)

    во блин:)
    .net+производительность gui приложений - http://delphimaster.ru/cgi-bin/forum.pl ... 257475&n=3

    кстати, просто вспомнилось - DirectX - это ООП, интерфейсная модель и все такое (если честно - ваще жуть по внешнему виду, хочется убежать куда нибудь:)), а OpenGL - процедурная модель. Многие предпочитают ОГЛ, потому что в некоторых моментах он быстрее, сделать проще некоторые вещи, но ДХ берет расширяемостью (ну и тем, что он то дальше развивается - хозяин есть, а у ОГЛ довольно туманное будущее).
     
  18. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    armadillo
    При чем здесь "хорошо" или "плохо" - antonn сказал "медленнее", а не "хуже". У ООП, кроме тормозов, есть и другие преимущества ;)
     
  19. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    посмотрел, увидел что он попытался использовать что-то чужое (пусть и встроенное)
    Вопрос - при чем тут ООП? Ты сам хоть какие-то классы писал? процедурно нельзя загнать стек в даун или перегрузить что угодно вызовами и выделениями памяти?
    Проблема в головах, а не методах. Лечится усекновением головы.
    С тобой спорить я не буду, у тебя аргументы "Вася разбил жигуль, значит жигуль сакс."
     
  20. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Поясняю свои слова - кода ООП с тормозами я так и не увидел. Увидел его вызов, и заявления о тормозах. А какой индус его писал - неизвестно.
    Зато увидел непонимание у antonn что такое вообще ООП и зачем оно надо.
     
  21. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    armadillo
    он использовал системную функцию (gdi+ - это улучшеная версия gdi, + прошитая вдоль и поперек ООП, именно через нее в висте рисуется Аеро, через gdi можно, но просто руками многое нужно делать), она оказалась медленной, написал свой велосипед и он оказался гораздо быстрее. Потому у него и вопрос возник, какого фига системная функция оказывается настолько медленней.

    нет, я только языком треплюсь :)
    классы написать не проблема, вопрос наверное - перегружал ли я методы класса, переопределял ли я их? тоже да:) дельфи и пхп имеют неплохие срадства ООП :)

    может я не так выразился, я против (хотя "против" как то странно звучит, тут просто дисскусия) представления типов как объектов. Т.е. число - это указатель на область памяти, в которой лежит значение. А не объект с методами типа length(), такие функции просто и быстро реализуются через процедурные методы - обычная procedure length(); объявленная глобально.

    ЗЗЫ хотя если этот труе-язык будет применяться в образовательных целях, или там странички хтмл генерить, где скорость глубоко по барабану (ну в пределах разумного, 0.1 сек или 0.5 - не важно) - делайте что хотите :)
     
  22. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    armadillo
    Сочувствую. Для меня рассуждения о маразматических переливаниях из пустого в порожнее при работе с теми же целыми числами, обернутыми в классы, выглядели достаточно понятно. И именно так в том же Руби все и происходит.
     
  23. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    antonn а, виста - уже пример быстрого кода? ))))
    с этим вопросом я совершенно согласен. При чем тут ООП?
    Dagdamor
    function getx() {
    return $this->$x*$this->multiplier;
    }

    предложи процедурный аналог (не полный, то есть function getx, а по "процедурной" логике)
    даже если multiplier меняется раз в год.

    Разумеется, стоит обсудить как оптимизировать и при необходимости написать пакетную обертку.
    У Борланда как пример TStringList смотрели?
    Но при чем тут ВСЕ ООП, которое
     
  24. Anonymous

    Anonymous Guest

    Сбавьте слегка обороты и не переходите на личности. Иначе буду вынужден прикрыть тему и забанить некоторых особо агрессивных особей.
    Хочу отметить, что агрументация "опытом" вместо фактов - показатель пустозвонства для меня. Поэтому прекратите флейм. Хотите аргументировать - сделайте тесты, замеры. Или если ссылетесь, то ссылайтесь не на авторитетных личностей, а не соседа Васю.

    Я придерживаюсь мнения Джоэля Спольски, который считает что "в наше время компьютеры удваивают мощность за 18 месяцев - потратьте это время на реализацию новых возможностей, вместо переписывания процедур на ассемблере"
     
  25. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    armadillo
    учитывая, что рисование происходит не только по маске, но и постобработкой - довольно быстро должно быть по идее :)

    потому что пиксель там объект. Не указатель на массив, по котороум можно просто взять значение и изменить его, а объект, позволяющих переводить в разные цветовые модели (смук, хуе, ргб), делать всякие озвещения/затемнения и тп. Короче все то, что можно сделать обычной процедурой, и это будет жрать намного меньше памяти.

    наследник Tstrngs, добавлены методы сортировки, к примеру. В общем нормальный класс.
    вижу в дельфи есть понятие, попробую нарисовать, против чего я тут бурлю:)
    добавляя строку в Лист(Tstringlist) происходит - addtring('text'); при этом сама строка не хранится непосредственно в Листе, в лист добавляется указатель (тип pointer) на первый элемент string в памяти, при удалении указатель в nil, первый элемент строки в nil (хотя там более сложное, зато нет ошибки переполнения буфера:)). Если строку представить в виде объекта, со своими методами и тп, то нужно будет создать пустой объект, поместить указатель на него в Лист (более дурацкую идею поместить сам объект в Лист я отметаю:)), возможно заполнить поле text самим текстом. А после удаления строки из Листа, нужно высвободить память из под объекта. Накладные расходы, при "обычных" операциях они не видны, но вот при многократных повторениях (в циклах, вот захотели мы пузырьком отсортировать Лист) они выплывают.
    короче я про то, зачем числа и строки представлять объектами? наверное так надо было сразу спросить %)

    :)