yms: (Default)
[personal profile] yms
м-да, C# 3.0 будет совсем другим языком, чем 1.1...
var contacts = new[] {
  new {
    Name = "Chris Smith",
    PhoneNumbers = new[] { "206-555-0101", "425-882-8080" }
  },
  new {
    Name = "Bob Harris",
    PhoneNumbers = new[] { "650-555-0199" }
  }
};

— так создается массив структур без их объявления, без единого упоминания типа и без конструкторов.

Date: 2005-12-12 08:39 pm (UTC)
From: [identity profile] robinbobin.livejournal.com
edak cherez paru let, ono i do PHP doberetsya :)

Date: 2005-12-12 08:48 pm (UTC)
From: [identity profile] nagunak.livejournal.com
Тогда почему просто не использовать Javascript?

Date: 2005-12-12 08:53 pm (UTC)
From: [identity profile] cmm.livejournal.com
потому что вся идеология MS построена на внесении радикальных изменений в среду разработки как минимум раз в год.  при использовании несвоих технологий это гарантировать сложнее.

пипл, как видим, хавает и тащится.

Date: 2005-12-12 09:05 pm (UTC)
From: [identity profile] yms.livejournal.com
а по-моему, радикальные изменения тут потому, что разработчиков языка не ограничивает ничего, кроме полета их фантазии, а всякие бюрократические комитеты стандартов отдыхают. И, между прочим, полезность минимум половины всех этих фич я почувствовал всего за год разработки на C#. Уж не говоря о прелестях 2.0.

Date: 2005-12-12 09:25 pm (UTC)
From: [identity profile] cmm.livejournal.com
> разработчиков языка не ограничивает ничего, кроме полета их фантазии

я же не говорю, что изменения бесполезны.
я к тому, что вообще-то само понятие "язык программирования" придумано не в фирме Микрософт.  и Микрософт, в своей необъятной гордыне, ещё превратит C# во что-то типа OCaml'а, но будет делать это маленькими шагами, с большим шумом, в течении лет десяти.  а пипл будет продолжать хавать и тащиться.

Date: 2005-12-13 09:20 am (UTC)
From: [identity profile] yms.livejournal.com
OCaml? да кто его знает? кто на нем пишет?
Сравнивать можно только с Джавой.

Date: 2005-12-13 09:44 am (UTC)
From: [identity profile] cmm.livejournal.com
> OCaml? да кто его знает? кто на нем пишет?

никто.  но будут писать все через десять лет, когда C# в него превратится.

> Сравнивать можно только с Джавой.

я сам буду решать, что и с чем мне сравнивать, ОК? :)

Date: 2005-12-13 11:16 am (UTC)
From: [identity profile] yms.livejournal.com
Да наздоровье. Но мой пост был не на тему искусства языкостроения, а о том, что популярный язык, на котором массово пишут коммерческие приложения, через год-два сам на себя не будет похож. C++ так быстро не мог меняться, видимо, потому, что мешало количество реализаций.

Date: 2005-12-12 09:09 pm (UTC)
From: [identity profile] yms.livejournal.com
вообще стратегию развития C# с самой первой версии можно описать словами "меньше писанины". И это идёт прежним курсом.

Date: 2005-12-18 10:28 pm (UTC)
From: [identity profile] syarzhuk.livejournal.com
Но зачем, говорит мой внутренний VB-шник, требовать при вызове функции без аргументов писать в конце строчки три лишних символа (); ?

Date: 2005-12-19 07:15 am (UTC)
From: [identity profile] yms.livejournal.com
а потому что в C#, как и в C, имя функции без параметров в выражении означает указатель на функцию делегат. А точки с запятой - так зато в VB какой-то символ подчеркивания при переносе пишут, а при укладывании двух операторов в одну строку - двоеточие... и для обоих надо шифт нажимать...

Date: 2005-12-20 06:33 pm (UTC)
From: [identity profile] syarzhuk.livejournal.com
Правильно. С делалось для старого дохлого PDP, на котором не хватало сил сделать нормальный разборщик кода (собственно, оттуда же растут ноги case sensitivity, отсутствия в С нормальных строчек и необходимость писать break в операторе switch). Но теперь, после, считай, декады существования не самого сложного языка VB, в котором компилятор прекрасно понимает, что если у объекта Obj описаны property Prop, процедура Proc и функция Func - то Obj.Prop - это обращение к свойству, Obj.Proc - это вызов процедуры, а Obj.Func - это вызов функции с игнорированием результата, и без всяких скобочек, странно требовать писать лишние ничего не значащие для логики программы символы, только для того чтобы упростить компилятор. А подчёркивания и двоеточия - корявость, конечно, но нормальный код на 99% подчиняется правилу "одна строка - один оператор", поэтому это та корявость, которая не сильно мешает.

Date: 2005-12-12 08:57 pm (UTC)
From: [identity profile] yms.livejournal.com
во-первых, кроме слова var, ничего от Javascriptа я здесь не вижу. Там разве есть структуры и проперти? Класс, помню, геморройно объявлялся, да и никто им толком не пользовался.
во-вторых, в Javascriptе нет строгой типизации: там можно объявить целую переменную var i=5, а потом присвоить ей строку: i="sss".
На C# это приведет к ошибке компиляции, потому как он строго типизированный язык.

Date: 2005-12-12 09:00 pm (UTC)
From: [identity profile] nagunak.livejournal.com
Но с другой стороны, вы же сами сказали, что тип не объявляется изначально в С#3, тогда единственная разница - это изменение типа потом.

Date: 2005-12-12 09:07 pm (UTC)
From: [identity profile] yms.livejournal.com
Тип не объявляется, но задается! Это называется "неявная типизация". Он всего лишь автоматически определяется инициализатором. А так - по-прежнему строго заданный тип.

Date: 2005-12-12 09:27 pm (UTC)
From: [identity profile] cmm.livejournal.com
Вы не не понимаете!
Микрософт изобрёл велосипед type inference!

Date: 2005-12-13 04:52 am (UTC)
From: [identity profile] yms.livejournal.com
между прочим, здесь никто, кроме тебя, это не говорит.

Date: 2005-12-12 10:11 pm (UTC)
From: [identity profile] robinbobin.livejournal.com
>На C# это приведет к ошибке компиляции, потому как он строго типизированный язык.

BU-eeeeeee

Date: 2005-12-13 04:53 am (UTC)
From: [identity profile] yms.livejournal.com
Отож.

Date: 2005-12-12 08:55 pm (UTC)
From: [identity profile] trurle.livejournal.com
И совсем скоро Острый Си будет окончательно неотличим от Visual Basic'а! Ура, товарищи, долой типизацию!

Date: 2005-12-12 08:58 pm (UTC)
From: [identity profile] yms.livejournal.com
Типизацию никуда не девали, см. коммент выше в параллельном треде.

Date: 2005-12-12 08:59 pm (UTC)
From: [identity profile] yms.livejournal.com
и, по-моему, VB сегодня такой же типизированный язык, нет?

Date: 2005-12-12 09:49 pm (UTC)
From: [identity profile] burrru.livejournal.com
Носятся все с этим до-диез-мажором. Почему - непонятно...

Date: 2005-12-13 07:24 am (UTC)
From: [identity profile] cjelli.livejournal.com
Мда. Так скоро C# переименуют в Perl#.

Date: 2005-12-13 07:47 am (UTC)
From: [identity profile] ex-hiero75.livejournal.com
Я лично не буду это применять, разве что в скриптах иногда. Объявить "нормальные" структуры не такая уж трудоемкая задача, даже если их использование ограничено одним модулем, или даже функцией, а код на порядок читабельнее выходит.

Date: 2005-12-13 09:18 am (UTC)
From: [identity profile] yms.livejournal.com
Не кажи гоп. В языке появляются фичи, с которыми без этого не обойдешься.

var WAContacts =
from c in contacts
where c.State == "WA"
select new { c.Name, c.Phone };


выглядит читабельнее и прозрачнее, чем если писать
select new MyNamePhonePair(c.Name, c.Phone)

Вообще см. документацию и примеры по ссылке - всё станет ясно.

Date: 2005-12-13 09:35 am (UTC)
From: [identity profile] ex-hiero75.livejournal.com
А так SQL# выходит :-) Но, конечно, документацию почитать стоит!

Profile

yms: (Default)
Michael Yutsis

March 2022

S M T W T F S
  12 345
678910 1112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 24th, 2026 12:08 pm
Powered by Dreamwidth Studios