Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, VladD2, Вы писали:
VD>>Можно пример интересной концепции из ПХП которых нет в других языках? VD>>Хотя... пойдут и дублирующиеся...
ВВ>Ну ничего такого особого уникального в php нет, хотя возможностей скажем в php5 на порядок больше чем в джаваскрипте. Во-первых, там полноценное ООП (наследование, абстрактные классы, интерфейсы, перегрузка, есть даже конструкторы и деструкторы). Ну что еще... итераторы. Механизм рефлексии кстати тоже есть. Причем все это "по-взрослому" сделано — там области видимости, пространства имен.
Угу, и ворох всякого хлама еще со времен третьей версии, для обратной совместимости
ВВ>Помнится, в свое время тебе нравилось что-то в стиле "My name is $name", если я ничего не путаю.
В PHP вот такое "заинстрингованное $name" — прямой путь к XSS'ам, SQL-инъекциям и расщеплениям http-запросов
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, kochetkov.vladimir, Вы писали:
К>[cut] KV>>В PHP вот такое "заинстрингованное $name" — прямой путь к XSS'ам, SQL-инъекциям и расщеплениям http-запросов
К>Извиняюсь за серость, но что такое "расщепления http-запросов"?
Это атака на пользователей веб-приложения aka "CRLF-инъекция". Ее осуществление становится возможно, когда параметры какой-либо точки входа в веб-приложение без должных проверок и преобразований попадают в заголовок ответа на http-запрос (как правило, при необходимости редиректа или установки cookies). Это позволяет внедрить в заголовок символы перевода строки и, тем самым, разделить его на два независимых, но обрабатываемых браузером. В результате успешной атаки, атакующий получает возможность осуществить "паровозом" атаку XSS, скомпроментировать cookie, подменить возвращаемую страницу либо перехватить оригинальную и отравить кэш прокси. Зависит от окружения веб-приложения и фантазии атакующего.
Подробнее об этой атаке (а также многих других) можно почитать здесь (про расщепление запроса: п.3.3.)
Здравствуйте, IB, Вы писали:
КЛ>>Ну во-первых, не создавал, я допиливал, а во-вторых их всего 2. IB>Именно что создавал и как минимум три.
По последним сведения (см. Википедию) объектные расширения для Паскаля в первые появились у Апла. Так что говорить о каких-то новых языках вообще не приходится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: The future of programming languages by Хейлсберг
Здравствуйте, VladD2, Вы писали:
VD>По последним сведения (см. Википедию) объектные расширения для Паскаля в первые появились у Апла. Так что говорить о каких-то новых языках вообще не приходится.
Синклер, а что забавного ты узрел в моих словах?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: The future of programming languages by Хейлсберг
Здравствуйте, VladD2, Вы писали:
VD>Дело не в неявном приведении. Можешь создать делегат явно, от этого ничего не изменится. Ну, кроме того, что с таким кодом вообще работать будет противно. Дело именно в том, что нельзя провести корреляцию по названию функции и названию делегата. И в том, что уникальны именно типы делегатов, а вот засунуть в них можно все что хочешь. И это не спроста. VD>В общем, похожая ошибка была в С++. Ее тоже защищали толпы фанатов. Толку от этого было — 0.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Угу, и ворох всякого хлама еще со времен третьей версии, для обратной совместимости
Что никак не умоляет его достоинств перед жабо-скриптом
ВВ>>Помнится, в свое время тебе нравилось что-то в стиле "My name is $name", если я ничего не путаю. KV>В PHP вот такое "заинстрингованное $name" — прямой путь к XSS'ам, SQL-инъекциям и расщеплениям http-запросов
Ну так не используй его для SQL, извините, "инъекций". Неужели генерить запросы к БД — это первое что приходит в голову глядя на пример? С помощью String.Format тоже можно дров наломать. Тут наверное не инструмент, а руки виноваты.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[16]: The future of programming languages by Хейлсберг
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Угу, и ворох всякого хлама еще со времен третьей версии, для обратной совместимости
ВВ>Что никак не умоляет его достоинств перед жабо-скриптом
ВВ>>>Помнится, в свое время тебе нравилось что-то в стиле "My name is $name", если я ничего не путаю. KV>>В PHP вот такое "заинстрингованное $name" — прямой путь к XSS'ам, SQL-инъекциям и расщеплениям http-запросов
ВВ>Ну так не используй его для SQL, извините, "инъекций".
А я его вообще не использую. Я ищу (и бывает, использую) как раз-таки SQL-инъекции, сотворенные теми, кто его использует
ВВ>Неужели генерить запросы к БД — это первое что приходит в голову глядя на пример?
Судя по php-ным проектам, на которых мне довелось проводить тесты на проникновение: так и есть. Причем порой кажется, что это не только "первое", но и "единственное", что приходит в голову основной серой массе сайтоштамповщиков.
ВВ>С помощью String.Format тоже можно дров наломать. Тут наверное не инструмент, а руки виноваты.
Ну, в конечном итоге, наверное все-таки голова. Хотя иной раз складывается ощущение, что некоторые код пишут не головой и руками, а несколько ниже и преимущественно, сзади.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Угу, и ворох всякого хлама еще со времен третьей версии, для обратной совместимости
ВВ>Что никак не умоляет его достоинств перед жабо-скриптом
А какие, кстати, у него перед javascript достоинства?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>А какие, кстати, у него перед javascript достоинства?
ВВ>Достоинства были перечислены в письме до этого. Взять наличие полноценного ООП хотя бы.
Ну во-первых, javascript гибридный язык, коим php только собирается начинать становиться в последних альфах. Во-вторых, ООП через прототипирование я бы не назвал неполноценным, скорее альтернативным. В третьих, это весьма и весьма гибкий язык. Например PM вот такого вида:
Реализуется на js относительно просто, а главное понятно даже для тех, кто с синтаксисом и конструкциями языка знаком слабо. Как бы это выглядело на php — страшно себе представить.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Ну во-первых, javascript гибридный язык, коим php только собирается начинать становиться в последних альфах. Во-вторых, ООП через прототипирование я бы не назвал неполноценным, скорее альтернативным. В третьих, это весьма и весьма гибкий язык.
Прототипы, анонимные ф-ции — отличные фишки. Но это собственно и все. В ПХП, повторюсь, полноценное ООП, наследование, виртуальные ф-ции, даже механизм рефлексии. Да, на мой взгляд это выглядит более внушительно, и ПХП как язык позволяет разрабатывать и поддерживать более сложные системы чем жабо-скрипт (и не надо тут про криворуких программистов).
А при вашей логике вообще получается, что, скажем, C# 1.0 бледно выглядит по сравнению с джава-скриптом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[19]: The future of programming languages by Хейлсберг
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Ну во-первых, javascript гибридный язык, коим php только собирается начинать становиться в последних альфах. Во-вторых, ООП через прототипирование я бы не назвал неполноценным, скорее альтернативным. В третьих, это весьма и весьма гибкий язык. Например PM вот такого вида:
KV>
ВВ>Ну ничего такого особого уникального в php нет, хотя возможностей скажем в php5 на порядок больше чем в джаваскрипте. Во-первых, там полноценное ООП (наследование, абстрактные классы, интерфейсы, перегрузка, есть даже конструкторы и деструкторы). Ну что еще... итераторы. Механизм рефлексии кстати тоже есть. Причем все это "по-взрослому" сделано — там области видимости, пространства имен. ВВ>Да и вообще довольно интересный язык в принципе. Работа с массивами организована интересно, даже конкатенация строк. Помнится, в свое время тебе нравилось что-то в стиле "My name is $name", если я ничего не путаю. По крайней мере по сравнению с джаваскриптом где всего-то парочка занятных фишек php5 выглядит очень даже внушительно
$name есть и не только в PHP. В том же Nemerle еше и ..$names есть. Да и маловато на мой взгляд одной "удобности" для зачисления языка в список интересных. Хейльсберг озвучил главные направления (по его мнению) развития программирования. декларативизация и параллелизм. По его же мнению средствами воплощения этих идей в будни мэйнстнима являются функциональный подход, DSL-и (причем и встроенные в язык DSL-и) и метапрограммирование.
Что тут может предложить ПХП я ума не могу приложить. $-тотация в строках — это конечно DSL, но на шаг в развитии языкостроения это явно не тянет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: The future of programming languages by Хейлсберг
Здравствуйте, VladD2, Вы писали:
VD>$name есть и не только в PHP. В том же Nemerle еше и ..$names есть. Да и маловато на мой взгляд одной "удобности" для зачисления языка в список интересных. Хейльсберг озвучил главные направления (по его мнению) развития программирования. декларативизация и параллелизм. По его же мнению средствами воплощения этих идей в будни мэйнстнима являются функциональный подход, DSL-и (причем и встроенные в язык DSL-и) и метапрограммирование. VD>Что тут может предложить ПХП я ума не могу приложить. $-тотация в строках — это конечно DSL, но на шаг в развитии языкостроения это явно не тянет.
Блин, ну в ПХП хотя бы ООП есть
А жабо-скрипт состоит из "огрызков" — кусочек оттуда, кусочек отсюда — кое-что интересно, функция как объект, прототипы, да — но полноценной реализации ни одной из концепций нет.
Поэтому в моем понимании ПХП более "серьезный" язык чем жабо-скрипт. Собственно, это и все что я пытался сказать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[15]: The future of programming languages by Хейлсберг
Здравствуйте, VladD2, Вы писали:
VD>$name есть и не только в PHP. В том же Nemerle еше и ..$names есть. Да и маловато на мой взгляд одной "удобности" для зачисления языка в список интересных. Хейльсберг озвучил главные направления (по его мнению) развития программирования. декларативизация и параллелизм. По его же мнению средствами воплощения этих идей в будни мэйнстнима являются функциональный подход, DSL-и (причем и встроенные в язык DSL-и) и метапрограммирование. VD>Что тут может предложить ПХП я ума не могу приложить. $-тотация в строках — это конечно DSL, но на шаг в развитии языкостроения это явно не тянет.
Казалось бы, причем тут javascript?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[13]: The future of programming languages by Хейлсберг
Здравствуйте, Serginio1, Вы писали:
S>Тебя стало сложно понимать. Делегат создпется по сигнатуре метода, но тип делегата определяешь сам Хочешь Func<...> а хочешь Функ<...>. S>Типы этих делегатов разные, но запихнуть в них можно методы с одинаковыми сигнатурами. S>Каково же твое предложение? Как сопоставить определенному делегату набор нужных функций? И насколько тогда такой делегат будет нужен?
Предложение очень простое. Отказаться от делегатов (вообще). Оставить их для обратной совместимости, а использовать функциональный тип. Это почти тоже что делегат, только его не надо описывать заранее (а значит не будет не совместимостей), и его экземпляры не смогут содержать списки (смогут ссылаться только на одну функцию). Скажем вместо делегата:
delegate R MyDelegate<T1, R>(T1 arg1);
delegate R Func<T1, R>(T1 arg1);
...
def f1 : Func<int, bool> = ...;
def f2 : MyDelegate<int, bool> = f1; // Ошибка! Func и MyDelegate не совместимы!
def f3 : Func<string, int> = ...;
Можно будет использовать функциональный тип:
def f1 : int -> bool = ...;
def f2 : int -> bool = f2; // ОК!
def f3 : string -> int = ...;
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: The future of programming languages by Хейлсберг
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>>Тебя стало сложно понимать. Делегат создпется по сигнатуре метода, но тип делегата определяешь сам Хочешь Func<...> а хочешь Функ<...>. S>>Типы этих делегатов разные, но запихнуть в них можно методы с одинаковыми сигнатурами. S>>Каково же твое предложение? Как сопоставить определенному делегату набор нужных функций? И насколько тогда такой делегат будет нужен?
VD>Предложение очень простое. Отказаться от делегатов (вообще). Оставить их для обратной совместимости, а использовать функциональный тип. Это почти тоже что делегат, только его не надо описывать заранее (а значит не будет не совместимостей), и его экземпляры не смогут содержать списки (смогут ссылаться только на одну функцию). Скажем вместо делегата: VD>
VD>delegate R MyDelegate<T1, R>(T1 arg1);
VD>delegate R Func<T1, R>(T1 arg1);
VD>...
VD>def f1 : Func<int, bool> = ...;
VD>def f2 : MyDelegate<int, bool> = f1; // Ошибка! Func и MyDelegate не совместимы!
VD>def f3 : Func<string, int> = ...;
VD>
VD>Можно будет использовать функциональный тип: VD>
VD>def f1 : int -> bool = ...;
VD>def f2 : int -> bool = f2; // ОК!
VD>def f3 : string -> int = ...;
VD>
Спасибо за ответ
Это все понятно. Как это будет реализовано на низком уровне. Делегат Это класс. Кстати и сейчас можно было бы ввести атрибут для пометки не мультикаст делегата, невозможности наследования от него MulticastDelegate Что бы при Combine и Remove вылетало исключение. Можно конечно ввести автоматический кастинг или ввести универсальную функцию приведения через CreateDelegate. Но вот вопрос по низлежащим классам. Понятно, что функциональные типы это более удобная надстройка. И по этому поводу у меня никаких вопросов нет.
и солнце б утром не вставало, когда бы не было меня
Re[20]: The future of programming languages by Хейлсберг
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Ну во-первых, javascript гибридный язык, коим php только собирается начинать становиться в последних альфах. Во-вторых, ООП через прототипирование я бы не назвал неполноценным, скорее альтернативным. В третьих, это весьма и весьма гибкий язык.
js является довольно интересно реализованном гибридным языком. IMHO поэтому он и появился на том слайде. То, что он лучше PHP или шарпа я доказывать и не собирался. Просто хотел обратить внимание, что он не так уж и плох, и в нем есть интересные моменты.