Comments 47
Дааа, MVC это очень хорошо!
весельчак )))
Интересно было увидеть, что Робсман видит конкурентом именно Php, а не тот же Ror или Python.
А так, мое уважению автору топика и мудрому Робсману.
А так, мое уважению автору топика и мудрому Робсману.
ASP.Net не дотягивает до Apache Struts (открыт в мае 2000 года и выведен в top level Apache project в 2005 году), не говоря уже про JSF 1.2.
Вы меня озадачили первый раз слышу о таком. А почему не фигурирует нигде с ним вакансии?
Вакансии: Web-программист на Java, разработчик порталов Java EE.
JSP — это базовая технология, вокруг которой наворачиваются фреймворки типа Struts, Tapetry, JSF.
Какие-то фреймворки получают официальное признание (их принимает индустрия), и они вливаются в систему стандартизации Java Community Process. Приобретают свой «номер» JSR (Java Specification Request). В дальнейшем входят в новую версию Java EE и становятся частью платформы:
jcp.org/en/jsr/all
Спецификации JCP.org имеют силу в конечных реализациях библиотек Java, так как все реализации должны быть совместимы между собой на уровне поведения и интерфейсов.
Вот более подробная статья об эволюции технологий Java:
Технологии Java для разработки веб-приложений. Правда, она написана довольно давно, но суть та же.
JSP — это базовая технология, вокруг которой наворачиваются фреймворки типа Struts, Tapetry, JSF.
Какие-то фреймворки получают официальное признание (их принимает индустрия), и они вливаются в систему стандартизации Java Community Process. Приобретают свой «номер» JSR (Java Specification Request). В дальнейшем входят в новую версию Java EE и становятся частью платформы:
jcp.org/en/jsr/all
Спецификации JCP.org имеют силу в конечных реализациях библиотек Java, так как все реализации должны быть совместимы между собой на уровне поведения и интерфейсов.
Вот более подробная статья об эволюции технологий Java:
Технологии Java для разработки веб-приложений. Правда, она написана довольно давно, но суть та же.
Да и чем аргументируете? Тут нужно существенные доводы, asp.net не хухры-мухры
Работа движка ведётся XML-документами. View может быть оттранслирован в любой формат (html, pdf, text) и отдан клиенту. Model представляет собой POJO (Plain Old Java Object) или объект из JDO, EJB (из базы данных).
JSF стандартизировала цикл обработки запроса (request proccessing lifecycle), где на каждом шаге можно встроить собственный валидатор и преобразователь, и обновление View без перезагрузок страниц.
JSF стандартизировала цикл обработки запроса (request proccessing lifecycle), где на каждом шаге можно встроить собственный валидатор и преобразователь, и обновление View без перезагрузок страниц.
«Visual Studio — Code Snippets» — это, очевидно, из Eclipse: wiki.eclipse.org/Category:Snippets
Что такое «Compiler as a Service»? API к компилятору?
Из выступления Эндерса Хейлсберга (Anders Hejlsberg) на PDC2008, компилятор будет managed, соотвественно можно будет использоваться его во время исполнения. Это даст определенные преимущества в области генерации кода и метапрограммировании. Интересно отметить, что в Mono компилятор C# написан на C# :)
P. S. Рекомендую посмотреть интересное выступление Эндерса Хейлсберга — The Future of C# (на англ. языке).
P. S. Рекомендую посмотреть интересное выступление Эндерса Хейлсберга — The Future of C# (на англ. языке).
В Java компилятор кода написан на Java и имеет собственный API (Java Compiler API) для доступа из клиентского кода:
java.sun.com/javase/6/docs/api/javax/tools/package-summary.html
java.sun.com/javase/6/docs/api/javax/tools/package-summary.html
Вообще говоря, в C# при помощи System.Reflection.Emit можно тоже, насколько я понимаю, Эндерс обещает несколько другое нежели просто компиляция C# кода, вполне возможна будет компиляции DSL, например, ведь весь компилятор будет доступен целиком, со своей объектной моделью, а не как чёрный ящик.
Вообще, именно эта часть, была довольно слабо освещена в ходе рассказа, собственно, как пример Эндерс показал REPL(read-eval-print-loop) консоль.
Вообще, именно эта часть, была довольно слабо освещена в ходе рассказа, собственно, как пример Эндерс показал REPL(read-eval-print-loop) консоль.
Мда наилюбопытнейше было бы поковыряться в сильверлайте под linux системами
Спасибо. Про информацию о F# он всё-таки загнул. Я долго пытался выяснить, как наследовать в F# некоторые generic interfaces, пока ответа не нашёл, придётся точно писать или Дону, или ему. :)
В C# наследовать от IEnumerable<T> нетрудно, несмотря на то, что там два метода GetEnumerator, один местный, а другой от IEnumerable. А вот F# ругается на то, что один и тот же метод переопределён дважды. И нигде заветного ключевого слова я не нашёл. :)
В C# наследовать от IEnumerable<T> нетрудно, несмотря на то, что там два метода GetEnumerator, один местный, а другой от IEnumerable. А вот F# ругается на то, что один и тот же метод переопределён дважды. И нигде заветного ключевого слова я не нашёл. :)
Может кто-нибудь в друх словах объяснит, что такое F#, для чего он нужен, какие имеет преимущества и как его использовать? Будьте добры: о)
Если получится, даже статью напишу. Но пока очень мало материала.
Если совсем в двух словах, то F# это полноценный функциональный язык программирования для .NET. Сделан на базе OCaml, причём настолько «на базе», что многие тонкости F# я вычитываю в документации по OCaml. :)
Использовать язык довольно просто: на сайте research.microsoft.com надо скачать компилятор и библиотеку F# и установить. После этого можно создавать на нём отдельные проекты, которые будут доступны из других дотнетовских языков, как родные. Может быть даже можно мешать языки в пределах одного проекта, но сам я этим не занимался, ручаться не буду.
Считается, что в следующем релизе .NET F# уже будет, так изучать можно уже сейчас.
Преимущества. Тут сложнее. Распараллеливание автоматическое или выразительность — с одной стороны, не всем нужны, с другой стороны, многими оспариваются. Тем более, что многие функциональные возможности уже встроены в C#, и будет их ещё больше, не совсем понятно, надо ли изучать новый язык.
С другой стороны, многие задачи, которые сейчас востребованы, алгоритмическими методами решаются трудно. Ну вот, скажем, задача определения спама или клонов. Как правило, точных алгоритмов здесь нет, есть ориентиры. Значит, хорошо подходят методы ИИ, например, нечёткая логика. Сделать её можно и на C++/C#, но на OCaml она выглядит естественнее и проще.
Так что востребованность есть, а, следовательно, будет и спрос.
Если совсем в двух словах, то F# это полноценный функциональный язык программирования для .NET. Сделан на базе OCaml, причём настолько «на базе», что многие тонкости F# я вычитываю в документации по OCaml. :)
Использовать язык довольно просто: на сайте research.microsoft.com надо скачать компилятор и библиотеку F# и установить. После этого можно создавать на нём отдельные проекты, которые будут доступны из других дотнетовских языков, как родные. Может быть даже можно мешать языки в пределах одного проекта, но сам я этим не занимался, ручаться не буду.
Считается, что в следующем релизе .NET F# уже будет, так изучать можно уже сейчас.
Преимущества. Тут сложнее. Распараллеливание автоматическое или выразительность — с одной стороны, не всем нужны, с другой стороны, многими оспариваются. Тем более, что многие функциональные возможности уже встроены в C#, и будет их ещё больше, не совсем понятно, надо ли изучать новый язык.
С другой стороны, многие задачи, которые сейчас востребованы, алгоритмическими методами решаются трудно. Ну вот, скажем, задача определения спама или клонов. Как правило, точных алгоритмов здесь нет, есть ориентиры. Значит, хорошо подходят методы ИИ, например, нечёткая логика. Сделать её можно и на C++/C#, но на OCaml она выглядит естественнее и проще.
Так что востребованность есть, а, следовательно, будет и спрос.
Кстати, на английском языке одним из крупнейших ресурсов является — hubFS.
Если кого-то интересует F# настоятельно рекомендую заглянуть на этот ресурс ;-)
Если кого-то интересует F# настоятельно рекомендую заглянуть на этот ресурс ;-)
Так это и есть персональный сайт Дона. Ну, или по крайней мере, Дон там часто пишет и отвечает.
Собственно, если задавать ему вопрос, то прямо там. :)
Собственно, если задавать ему вопрос, то прямо там. :)
Всё-таки он там не один :)
Я всегда думал, что его персональный сайт (блог) — это Don Box's Spoutlet, кстати, тоже рекомендую его почитать ;-)
Я всегда думал, что его персональный сайт (блог) — это Don Box's Spoutlet, кстати, тоже рекомендую его почитать ;-)
Я слышал, что в F# есть кое-какие нововведения в области смешивания чистого функционального кода с нечистым императивным.
Это правда так?
Это правда так?
Посмотрите nemerle, язык это нечто — сейчас переписываю одну свою прогу с шарпа на него и меня прет:) уже второй день, если думать лень переношу код один в один (синтаксис мало отличается), но когда охота подумать использую алгебраические типы данных, pattern-matching, миксины, локальные функции и хвостовую рекурсию. Его плюс в том, что порог вхождения с шарпа меньше, чем в случае с F#'ом, так как язык гибридный.
Не люблю я этот Немерле (и дот-Нет), одно название отпугивает :)
Лучше уж буду дальше колоться Хацкелем. ^_^
Кстати, в Немерле вроде метапрограммирование крутое? Типа Template Haskell?
Лучше уж буду дальше колоться Хацкелем. ^_^
Кстати, в Немерле вроде метапрограммирование крутое? Типа Template Haskell?
Да, нововведения есть, если сравнивать с Ocaml. Там тоже без проблем можно использовать императивный подход, для этого есть языковые конструкции.
Но F#, поскольку входит в .NET, имеет дополнительные средства, чтобы полностью быть совместимым с CLR.
Но F#, поскольку входит в .NET, имеет дополнительные средства, чтобы полностью быть совместимым с CLR.
С OCaml дело не имел, зато пришлось немного попейсать в Standard ML, так там можно писать императивно в доску, никто не запрещает деструктивные присваивания, а еще можно писать statement'ы, которые выполняются последовательно. :)
> Но F#, поскольку входит в .NET, имеет дополнительные средства, чтобы полностью быть совместимым с CLR.
То есть, там можно с комфортом использовать объектно-ориентированные библиотеки? Что-то в голове не укладывается :)
> Но F#, поскольку входит в .NET, имеет дополнительные средства, чтобы полностью быть совместимым с CLR.
То есть, там можно с комфортом использовать объектно-ориентированные библиотеки? Что-то в голове не укладывается :)
> никто не запрещает деструктивные присваивания, а еще можно писать statement'ы,
> которые выполняются последовательно. :)
Здесь то же самое. Всё, что определяется через
> То есть, там можно с комфортом использовать объектно-ориентированные библиотеки?
Есть поддержка классов и интерфейсов. Можно определять, наследовать и использовать методы и свойства. Знаменитая программа здесь выглядит так:
ReadLine просто для того, чтобы показать, что тоже работает. :)
> которые выполняются последовательно. :)
Здесь то же самое. Всё, что определяется через
let
— функционально. Всё, что через <-
— императивно.> То есть, там можно с комфортом использовать объектно-ориентированные библиотеки?
Есть поддержка классов и интерфейсов. Можно определять, наследовать и использовать методы и свойства. Знаменитая программа здесь выглядит так:
open System Console.WriteLine("Hello, world!") Console.ReadLine()
ReadLine просто для того, чтобы показать, что тоже работает. :)
Чаке! Ты бог!
Спасибо, получил ответы на большинство интересовавших меня вопросов.
Спасибо за отличную статью! Узнал много нового и теперь с нетерпением жду новых фич.
Огромное спасибо, очень интересное итервью. Особенно понравилось описание атмосферы работы команд, от этого на душе теплее становится. Улыбнула следующая версия msvs, т.к. сам сейчас работаю на .NET (2003 года выпуска, кажется)
Правильно ли я понял, что Дмитрий утверждает, что лямда-выражения придумали они?
Лямбда-выражения в LINQ. А лямбда-выражения вообще изобрели еще в 30-х годах, да. Если вы об этом)
Нет, вы не правильно поняли.
В .net'е лямбда-выражения могут иметь две формы: форма анонимной функции (классическая лямбда?) и форма AST. Если метод принимает на вход делегат и ему передать лямбду, то компилятор её передаст в первой форме, но если метод принимает AST, то компилятор передаст лямбду во второй форме. Данный трюк позволяет перевести C# код (лямбду) в SQL код в случае LINQ, иначе пришлось бы выкачивать всю базу и пробегать её делегатом.
В .net'е лямбда-выражения могут иметь две формы: форма анонимной функции (классическая лямбда?) и форма AST. Если метод принимает на вход делегат и ему передать лямбду, то компилятор её передаст в первой форме, но если метод принимает AST, то компилятор передаст лямбду во второй форме. Данный трюк позволяет перевести C# код (лямбду) в SQL код в случае LINQ, иначе пришлось бы выкачивать всю базу и пробегать её делегатом.
Sign up to leave a comment.
Интервью с Дмитрием Робсманом, создателем ASP.NET