|
|
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВ, плохой у нас диалог что-то получился. извиняюсь за свою резкость, но поверь майтону на слово, что maytonАналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка) принципиально невозможно воспроизвести некоторые возможности Lisp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:44 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNв том что аргументы ф-и вычисляются до ее вызова Пока не въехала. Ну, до вызова. ну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:45 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВВот! Тут согласна. Про код/данные ответила выше. Лет несколько назад наш замечательный уютненький посетил один чел по имени Ксено-Головый. И в его декретах и посылах и прочих прокламациях помимо жуткого вброса звенела одна истина, касаемая современного императивного С++ программирования. А именно - оно идёт не туда. К сожалению разработчики такие-же люди, подверженные привычкам, и прочим консервативным позициям. Просто возвращая историю на 30 лет назад я-бы подумал на тему того что некоторые вещи можно было-бы сделать не так и по другому. Нужно уметь признать ошибки. Это вобщем-то касается не только технологий С/C++ а очень очень многого. По сабжу больше сказать нечего. И продолжать эту тему я не буду. По кр. мере для меня в ней всё давно ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:45 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
вот, здесь объснены причины твоего заблуждения: Парадокс БлабаСОВЕТ Что же в Lisp-е такого прекрасного? Если он такой замечательный, почему его не используют все? Казалось бы, риторические вопросы, но на самом деле на них есть прямые ответы. Lisp настолько хорош не тем, что в нем есть некое волшебное качество, видимое только его приверженцам, а тем, что он — самый мощный язык программирования из существующих. И причина того, что все вокруг пишут не на Lisp'е, заключается в том, что выбор языка программирования — вопрос не только технологии, но также и привычки, а ничто не меняется так медленно, как привычки. Конечно, оба эти тезиса требуют разъяснений. Я начну с шокирующего утверждения: языки программирования отличаются друг от друга своей мощностью. По крайней мере, мало кто будет спорить, что высокоуровневые языки мощнее машинного языка (машинный код и ассемблеры – VladD2). Большинство программистов согласятся, что, как правило, программировать стоит не на машинном языке, а на каком-нибудь языке высокого уровня, переводя программу в машинный код с помощью компилятора. Сейчас эта идея получила даже аппаратное воплощение — с восьмидесятых годов команды процессоров разрабатываются скорее для компиляторов, чем для программистов. Каждый знает, что писать всю программу вручную на машинном языке — ошибочно. Но гораздо реже понимают, что существует и более общий принцип: при наличии выбора из нескольких языков ошибочно программировать на чем-то, кроме самого мощного, если на выбор не влияют другие причины (VladD2: выделено мной, мне кажется эта мысль очень важна, ведь если, например, более мощный язык не обеспечивает приемлемой производительности, то его выбор также будет неоправданным). Все языки одинаково мощны, если рассматривать их с точки зрения эквивалентности машине Тьюринга, но это не та мощь, которая важна программисту. (Никто ведь не хотел бы программировать машину Тьюринга). Мощь языка, в которой заинтересован программист, возможно, трудно определить формальными методами, однако одно из объяснений этого понятия заключается в свойствах, которые в менее мощном языке можно получить, только написав на нем интерпретатор для более мощного языка. Если в языке A есть оператор для удаления пробелов из строк, а в языке B его нет, это не делает A более мощным, чем B, так как в B можно написать процедуру, которая делала бы это. Но, скажем, если язык A поддерживает рекурсию, а B — нет, это нечто, что нельзя исправить написанием библиотечных функций (VladD2: впрочем, бывает так, что средствами языка B в принципе можно решить проблему, но решение ее столь сложно, что решение это можно назвать чисто теоретическим). Есть много исключений из этого правила. Если вы пишете программу, которая должна тесно взаимодействовать с программой, написанной на определенном языке, возможно, окажется разумным писать новую программу на том же языке. Если вы пишете программу, которая должна делать что-то очень простое, вроде численной обработки больших массивов данных или манипуляций с битами, можно использовать язык не самого высокого уровня абстракции, тем более что программа будет слегка быстрее (VladD2: и то не факт). Если вы пишете короткую программу, которую используете один раз и выбросите прочь, возможно, следует использовать тот язык, который имеет лучшие библиотечные функции для данной задачи. Но в целом для программного обеспечения нужно использовать самый мощный (и приемлемо эффективный) язык из всех доступных. Отличный от этого выбор — это ошибка такого же рода, как программирование в машинных кодах, хотя и с меньшими негативными последствиями. Понятно, что уровень машинного языка очень низок. А высокоуровневые языки часто рассматриваются как одинаковые, по крайней мере, так принято считать. Но это не так. Технический термин "язык программирования высокого уровня" не обозначает ничего определенного. Не существует четкой границы между множеством "машинных" языков с одной стороны, и множеством "высокоуровневых" – с другой. Языки распределены в континууме (возможно, не просто континууме, а некой структуре, уменьшающейся кверху; важна здесь не форма, а сама идея о том, что существует, по крайней мере, частичный порядок) абстрактности, начиная от самых мощных "языков высокого уровня" вниз к "машинным языкам", которые, в свою очередь, тоже отличаются друг от друга по мощности. Возьмем Cobol. Cobol — язык высокого уровня, так как компилируется в машинный язык. Но станет ли кто-нибудь утверждать, что по мощности Cobol эквивалентен, скажем, Python-у? (VladD2: учитывая свой опыт общения на форумах RSDN скажу, что, несомненно, станет:) ) Возможно, он ближе к машинному языку, чем Python. А как насчет Perl четвертой версии? В Perl 5 в язык были добавлены лексические замыкания (lexical closures). Большинство Perl-хакеров согласятся, что Perl 5 мощнее, чем Perl 4. Но раз вы это признали, вы признали, что один высокоуровневый язык может быть мощнее другого. Из этого неизбежно следует, что использовать нужно самый мощный язык. Впрочем, из этого утверждения редко делается вывод. Программисты старше определенного возраста редко меняют язык по своей воле. Они будут считать достаточно хорошим тот язык, к которому привыкли. Программисты очень привязываются к своим любимым языкам, а я не хочу оскорбить ничьи чувства, поэтому я объясню свою позицию, используя гипотетический язык с названием Блаб. Блаб попадает в середину континуума абстрактности. Это не самый мощный язык, но он мощнее, чем Cobol или машинный язык. И на самом деле, наш гипотетический программист на Блабе не будет использовать ни Cobol, ни машинный код. Для машинных кодов есть компиляторы. Что же касается Cobol-а, наш программист не знает, как на этом языке вообще что-то можно сделать. В Cobol-е ведь даже нет возможности X, присутствующей в Блабе! Когда наш гипотетический Блаб-программист смотрит вниз на континуум мощности языков, он знает, что смотрит вниз. Менее мощные, чем Блаб, языки явно менее мощны, так как в них нет некой особенности, к которой привык программист. Но когда он смотрит в другом направлении, вверх, он не осознает, что смотрит вверх. То, что он видит, — это просто "странные" языки. Возможно, он считает их одинаковыми с Блабом по мощности, но со всяческими сложными штучками. Блаба для нашего программиста вполне достаточно, так как он думает на Блабе (VladD2: выделено мной). Когда мы поменяем точку обзора программиста, используя любой язык программирования выше по континууму мощности, мы обнаружим, что теперь программист смотрит на Блаб сверху вниз. «Как же можно что-то сделать, используя Блаб? В нем отсутствует даже конструкция Y!» Используя метод индукции, приходишь к выводу, что только те программисты, которые понимают самый мощный язык, в состоянии осознать полную картину разницы в мощности между различными языками (видимо, именно это имел в виду Эрик Реймонд, когда говорил о том, что Lisp сделает вас лучше как программиста). Следуя парадоксу Блаба, нельзя доверять мнению других: другие программисты довольны тем языком, который используют, потому что этот язык определяет способ их программистского мышления. Я понял это на собственном опыте, когда учился в старших классах школы и писал программы на Бейсике. Этот язык не поддерживал даже рекурсию. Трудно представить написание программ без рекурсии, но в то время мне это было не нужно. Я думал на Бейсике. Я был спец. Мастер всего, что изучил. Пять языков, которые советует хакерам Эрик Реймонд, находятся в разных точках континуума мощности, и то, где они находятся относительно друг друга, — тонкий вопрос. Я скажу, что Lisp находится на вершине континуума. И чтобы поддержать это утверждение, я скажу о том, чего мне не хватает, когда я смотрю на остальные пять языков. Как же можно что-то сделать с ними, думаю я, без свойства Z? И самое большое Z — это макросы. (VladD2: Рассматривать макросы как отдельное свойство — это немного неправильно. На практике их польза увеличивается такими свойствами Lisp'а, как лексические замыкания и частичная параметризация (rest parameters) – аналогичная возможность в Nemerle назевается «частичное применение (partial application)). Во многих языках есть что-то, называющееся макросом. Но макросы в Lisp'е уникальны (VladD2: на сегодня это так, только если глядеть на другие языки с высоты Lisp-а, но об этом позже). То, что делают макросы, имеет отношение, верите вы или нет, к скобкам. Создатели Lisp'а добавили все эти скобки в язык не для того, чтобы отличаться от других. Скобки в Lisp'е имеют особый смысл, они — внешнее свидетельство фундаментальной разницы между Lisp'ом и другими языками. Программа на Lisp'е состоит из данных. И не в том тривиальном значении, что исходные файлы содержат символы, а строки — один из типов данных, поддерживаемых языком. После прочтения программы парсером Lisp-код состоит из готового к использованию дерева структур данных. Дело не в том, что в Lisp'е странный синтаксис, скорее, его нет вообще. Программы пишутся в синтаксических деревьях, которые в других языках генерируются парсером во время разбора исходного текста. Эти синтаксические деревья в Lisp'е полностью доступны вашим программам, и вы можете писать программы, которые изменяют эти деревья. В Lisp'е подобные программы называются макросами. Это программы, которые пишут программы. Программы, которые пишут программы? И когда же такое может понадобиться? Не очень часто, если вы думаете на Cobol'е. И постоянно, если вы думаете на Lisp'е. Было бы удобно, если бы я дал пример мощного макроса и сказал бы: "Вот! Смотрите!". Но если бы я и привел пример, для того, кто не знает Lisp, он выглядел бы как белиберда. Рамки данной статьи не позволяют изложить все необходимое для понимания подобного примера. В книге Ansi Common Lisp я старался излагать материал как можно быстрее, но даже так я не добрался до макросов раньше страницы 160. Однако мне кажется, что я могу дать убедительный аргумент. Исходный текст редактора Viaweb на 20-25 процентов состоял из макросов. Макросы сложнее писать, чем обычные функции Lisp'а, и считается дурным тоном использовать их там, где можно без них обойтись. Поэтому каждый макрос в той программе был необходим. Это значит, что примерно 20-25 процентов кода в программе делают то, что нельзя просто сделать на других языках. Как бы скептически ни относился Блаб-программист к моим заявлениям о таинственной мощи Lisp'а, это должно его заинтересовать. Мы не писали этот код для своего собственного развлечения. Мы были маленькой компанией, и программировали так, как только могли, чтобы возвести технологический барьер между нами и нашими конкурентами. Пытливый читатель может задаться вопросом, а нет ли здесь взаимосвязи? Некоторая большая часть кода делала нечто, что очень сложно сделать на других языках. Получившееся в результате программное обеспечение делало то, что программное обеспечение наших соперников делать не могло. Возможно, между этими фактами есть связь. Я советую вам подумать в этом направлении. Возможно, это все не просто старческие бредни. К чему я привел этот фрагмент? Дело в том, что если вы думаете на C# или, скажем, на Delphi, или даже на C++, то без желания понять и некоторых усилий с вашей стороны вы окажетесь в роли того самого Блаб-программиста, смотрящего на более мощный язык и видящего в нем не более чем кучу непонятных заморочек. Грэхем немного лукавит. Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования. Фактически, есть много языков, которые превосходят другие в том или ином аспекте, и уступают в прочих. Тот же Lisp не безгрешен. Причем достоинства языка зачастую являются причиной его недостатков. Так, расплатой за мощные макросы является совершенно ужасный синтаксис без приоритетов операторов (да и без операторов как таковых), без внятно выделяющиеся синтаксических конструкций и т.п. Причем макросы Lisp-а, ко всему прочему, еще и ограничены в своих возможностях, так как не позволяют при своей работе использовать информацию о типах и иным образом взаимодействовать с компилятором (его в большинстве случаев просто нет). Однако для нас сейчас все это не важно. Для нас важно только то, что для осознания мощности языка нам требуется сломать наши стереотипы мышления и попытаться по-новому взглянуть на, казалось бы, привычные вещи. Вспомните те времена, когда вы изучали что-то действительно новое для вас. Помните напряжение мозга, возникающее в тщетных попытках понять что-то концептуально новое? А помните то чувство удивленного восторга после того, как вы смогли понять это новое? Помните слова: «Боже, как это просто! И чего я не мог тут понять?!»? То же самое происходит, когда мы сталкиваемся с новыми приемами программирования и тем более с новыми парадигмами. И чтобы упростить восприятие нового, лучше всего рассматривать его на примерах. Именно этим мы с вами и займемся в этой статье. Но перед этим давайте рассмотрим список возможностей, присутствующих в Nemerle и (скорее всего) отсутствующих в привычных вам языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:47 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся? Ды так и сделать: if not A then False else B. Не знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а вовсе не особое средство выражения. Хотя не настаиваю ниразу. А вот с этим согласна, двумями руками: "Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования." Программирование в голове, а не в языке. ЗЫ. А вы, мальчики, оказываеццо романтики. Респект, правда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:56 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся? Ды так и сделать: if not A then False else B. Не знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а вовсе не особое средство выражения. Хотя не настаиваю ниразу. А вот с этим согласна, двумями руками: "Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования." Программирование в голове, а не в языке. ЗЫ. А вы, мальчики, оказываеццо романтики. Респект, правда. напиши код ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:57 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
Эту статью про Nemerle я кажется уже где-то читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:57 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNНе знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а здесь ты не совсем права: что будут вернет ленивый, а что неленивый "and": (a != 0) and (30/a < 5) при a = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 00:58 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNZyK_BotaNНе знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а здесь ты не совсем права: но частично права - лисп отличается от си - технически. применяя один и тот же стиль программирования на си и лиспе - даст разный результат. крассивый и элегантный код на лиспе - дающий на выходе эффективный код , если его дословно переносить в си, будет уродлив, нечитаем, и мало эффективным. первое чего не хватает в си - дак это сборщика муссора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:01 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNа здесь ты не совсем права: что будут вернет ленивый, а что неленивый "and": (a != 0) and (30/a < 5) при a = 0 Один вернет False, другой ошибку (или "неопределенность", если есть в языке). Кста, во многих системах есть такая опция: полное или неполное вычисление лог. выражений. В Delphi, по умолчанию, неполное. Те. походу как раз "ленивое". Но это ведь частности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:04 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
Зик, пример с делением на ноль ничего не раскрывает из океана возможностей Lisp. Это не то. Зачем тебе это надо? Забей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:04 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNа здесь ты не совсем права: что будут вернет ленивый, а что неленивый "and": (a != 0) and (30/a < 5) при a = 0 Один вернет False, другой ошибку (или "неопределенность", если есть в языке). Кста, во многих системах есть такая опция: полное или неполное вычисление лог. выражений. В Delphi, по умолчанию, неполное. Те. походу как раз "ленивое". Но это ведь частности. вот и я о чем. простой ф-ей ты такое не напишешь, а макросом - запросто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:06 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNдословно переносить в си, будет уродлив, нечитаем, и мало эффективным. Ну? И я о том же. А если дословно перевести стихи Киплинга? Или Пушкина на английский? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:06 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
maytonЗик, пример с делением на ноль ничего не раскрывает из океана возможностей Lisp. Это не то. Зачем тебе это надо? Забей. тут я с тобой полностью согласен. я лишь хотел показать что фраза: ИринаВДык любой макрос можно сделать функцией. неверна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:07 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNдословно переносить в си, будет уродлив, нечитаем, и мало эффективным. Ну? И я о том же. А если дословно перевести стихи Киплинга? Или Пушкина на английский? ты с статьей про "парадокс блаба" ознакомилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:09 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNневерна. if not A then False else B Чего тут неверного? ZyK_BotaNты с статьей про "парадокс блаба" ознакомилась? Да. Даж частично поддержала (выше). А частично нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:12 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNневерна. if not A then False else B Чего тут неверного? где здесь ф-я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:16 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNневерна. if not A then False else B Чего тут неверного? ZyK_BotaNты с статьей про "парадокс блаба" ознакомилась? Да. Даж частично поддержала (выше). А частично нет. значит плохо читала наверное. изложу суть кратко. допустим, ты программировала на делфи и си, а лисп только видела(в программы на нем(не лабы) не погружалась и культуры разработки на нем - не знаешь. у тебя в голове есть некие парадигым и подходы к решению задач, которые ты можешь применить на си и делфи. ты также можешь их применить и при программировании на лиспе а есть некий лиспер, у которого есть некие другие подходы к решению задач, они их успешно применяет программируя на лиспе, но на делфе и на сях он их применить не может. прикол в том, что ты о этих "некик других подходах" - ничего не знаешь, а потому и не согласна с утверждением майтона. понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:19 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNгде здесь ф-я? function SuperAnd (A,B: Boolean): Boolean; begin if not A then Result:=False else Result:=B; end; ZyK_BotaNу тебя в голове есть некие парадигым и подходы к решению задач, которые ты можешь применить на си и делфи. ты также можешь их применить и при программировании на лиспе ИМХО навряд ли. Даж в SQL другие парадигмы. Ну применить то можно, но не нужно. Я вижу процесс по другому, немного. Есть задача и есть выразительные средства (язык + ран-тайм). Из этого сочетания вытекает алгоритм решения. Те. я за специализацию, многоообразие и гармонию. Тюлень на суше, это грустно. А в воде наоборот. "Пусть цветут все цветы" (с) Мао-Цзе-Дун (вроде он). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:34 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNгде здесь ф-я? function SuperAnd (A,B: Boolean): Boolean; а вот и проблема. было же условие, что ф-я - ленивая. а она у тебя - энергичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 01:35 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВZyK_BotaNне только набор ф-ий, но и мощный рантайм и развитая система макросов. Дык любой макрос можно сделать функцией. Макросы вычисляются во время компиляции так-то. А Reader-макросы так вообще на этапе чтения программы. покажите мне пример функции на Си, выполнение которой происходит во время компиляции исходника в котором определена эта функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 12:48 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, думаю еще наглядней будет попросить реализовать функцию if (test, result, alternative), которая ведет себя как тернарный оператор ?: =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 13:20 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
Ультракорокий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 13:30 |
|
||
|
Помогите написать прогу на Lisp
|
|||
|---|---|---|---|
|
#18+
ИринаВ Код: plaintext 1. 2. 3. 4. теперь, допустим у нас есть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. догадываешься, какой вывод мы получим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37497985&tid=1342612]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 396ms |

| 0 / 0 |
