:: Не фоксом единым
C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Наткнулся на статью habrahabr.ru Это же не 1-апрельская шутка?
Ratings: 0 negative/0 positive
Re: C# 7
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Нет, не шутка. Количество г*на планомерно возрастает - думаю к 10-12 версии будет большой бум


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: C# 7
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
Igor Korolyov
Нет, не шутка. Количество г*на планомерно возрастает - думаю к 10-12 версии будет большой бум
Почитал ссылку - охренел реально. Не, я знал, что количество "планомерно возрастает", но после прочтения такое ощущение есть, что уже не планомерно, а спонтанно и необратимо.
Блин, пора из разработчиков уходить, чувствую.


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов
Ratings: 0 negative/0 positive
C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Если это не шутка - давайте "по пунктам".

1. Бинарные литералы. С одной стороны, лично мне они не нужны. С другой стороны - кому они мешают?

2. Локальные функции. В PL/SQL они есть, и ни коим образом не мешают.

3. Кортежи (Tuples)

Т.е. вместо того, что бы явно создавать структуру, заполнять её и потом возвращать через return, идёт неявное создание структуры - просто берём переменные в скобки.

По мне - хорошее решение. Чем то sys_refcursor из Oracl-а напоминает (правда, там recordset, а тут всего лишь record/structure). Всегда коробило создавать out параметры в функциях, и напрягало создавать структуры. Так что я - целиком "за".

4. Новый вывод переменных в строке

Это и не новшество, есть в 6# - активно использую.

5. Сопоставление с образцом (Pattern matching)

Цитата:
Теперь можно использовать разнообразные средства для сопоставления.
Пример ниже показывает объявление переменной в блоке if.

Вот тут ни фига не понял. Что такое "Сопоставление"? Что здесь "образец"? Какое значение присваивается переменной i?

6. Условия и использование объектов в переключателях

Понятно, как это работает, но не понятно - где это с пользой использовать. Вроде как "раздвигают границы". Не понятно - может ли быть от этого вред.

7. Возвращение объектов по ссылке

То же, как с предыдущим пунктом - на первый взгляд вреда не видно, как и пользы.




Коллеги - какое у Вас мнение? Если можно - по пунктам, и аргументированно.

Да, кстати VS2015 update2 rus не смог найти на сайте MS. Наверное, ещё есть только английский? Или, плохо искал?



Исправлено 1 раз(а). Последнее : S-type, 08.04.16 20:57
Ratings: 0 negative/0 positive
Re: C# 7
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
1. Бинарные литералы. С одной стороны, лично мне они не нужны. С другой стороны - кому они мешают?

Иногда могут быть полезны (например при описании enum c [Flags])

2. Локальные функции. В PL/SQL они есть, и ни коим образом не мешают.

На фиг не надо. Есть уже delegate {}, () => {} или private методы тоже никто не отменял.

3. Кортежи (Tuples)

Для возврата пары значений может и подойдет.
А если представить передачу в виде параметра, то сигнатура метода будет из кучи
вложенных скобок состоять (список параметров в списке параметров) - читать та еще радость.

5. Сопоставление с образцом (Pattern matching)
S-type
Вот тут ни фига не понял. Что такое "Сопоставление"? Что здесь "образец"? Какое значение присваивается переменной i?

if(v is int i) {
//use i
}

Эквивалентно
if(v is int) {
int i = (int)v;
//use i
}

6. Условия и использование объектов в переключателях
S-type
Понятно, как это работает, но не понятно - где это с пользой использовать. Вроде как "раздвигают границы". Не понятно - может ли быть от этого вред.

Вреда никакого не вижу. Вместо
var tl = v as IEnumerable<object>;
if(tl != null) {
...
}

Пишем
if(v is IEnumerable<object> tl) {
...
}

switch просто расширили для поддержки разных типов образцов, а не только литералов как раньше.
В видео это еще сравнивают с последовательностью catch блоков
Так же, как исключение сопоставляется по типу в catch блоке, так же и switch сопоставляет каждый case
try
{
throw v;
}
catch(int i)
{
}
catch(IEnumerable<object> tl) when tl.Any()
{
}
catch
{
//default:
}

7. Возвращение объектов по ссылке

Здесь довели до ума поддержку ссылочных типов в C# - раньше можно было использовать только
параметры ссылочного типа (ref/out), теперь можно еще локальные переменные делать и возвращать ссылку на значение.
Это не для ежедневного использования, конечно, но в некоторых случаях позволит избежать использования
указателей (что тянет за собой необходимость unsafe контекста) с сохранением той же производительности.

S-type
Да, кстати VS2015 update2 rus не смог найти на сайте MS. Наверное, ещё есть только английский? Или, плохо искал?

У меня Update1 уже стоял обновил с помощью go.microsoft.com
Правда, у меня английская версия, но думаю, что докачает все что надо и для русской.
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Спасибо, теперь "Сопоставление с образцом (Pattern matching)" и "Условия и использование объектов в переключателях" стали понятны.

Я правильно понял, что Вы, Роман, плюсов видите больше - чем минусов?

Спасибо за загрузчик - пошла вода в хату обновление началось....



Исправлено 2 раз(а). Последнее : S-type, 09.04.16 00:35
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
Количество г*на планомерно возрастает ...
Раньше это был сахар

Язык называется C#. На сколько помню, # этот музыкальный знак называется диез, означает "повышение ноты на пол тона". Но, с точки зрения разработчиков языка это не диез, а два знака плюс, впихнутых в одну клеточку. Извратили смысл знака, извратили язык С++, теперь потихоньку извращают оригинальный C#. Причём, действуют гуманно - не сразу кошке весь хвост отрезают, а каждый год по сантиметру. В музыкальных терминах - повышают от версии к версии тон на несколько центов. И, судя по всему, их уже не остановить... Вопрос - чем это закончится? C# будет содержать все возможные синтаксические конструкции и концепции из всех других языков? И у программистов начнётся лопаться голова...

Шутка. Если серьёзно - IMHO, идёт движение в нужном направлении.
Ratings: 0 negative/0 positive
Re: C# 7
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
1. Бинарные литералы. С одной стороны, лично мне они не нужны. С другой стороны - кому они мешают?
Это то как раз мелочи. Лично мне, например, гораздо более опасными кажутся восьмеричные константы. Там нету явного символа-префикса, а нолик - ну мало ли какой индус решит "для красоты" написать 0123 вместо просто 123
S-type
2. Локальные функции. В PL/SQL они есть, и ни коим образом не мешают.
А зачем? В чём смысл то? Если есть просто методы (которые можно и не делать public) и есть в конце концов лямбды да просто анонимные методы. Это как прикручивать к автомобилю пятое колесо
S-type
3. Кортежи (Tuples)
Т.е. вместо того, что бы явно создавать структуру
Tuple<...> и так уже существуют - это лишь буэ-шный нетипизированный синтаксис их описания.
S-type
напрягало создавать структуры.
Во-первых это нужно достаточно нечасто (если у тебя сплошь и рядом методы возвращают по 2-3-10 значений и это НЕ структура, то явно надо в консерватории чего-то менять). Во-вторых я считаю что всегда лучше ЯВНО описать в коде нечто, чем поручать делать это описание компилятору - который сделает "как всегда", и потом ты с этим будешь мучится 5 версий пока не докрутят все недочёты (как, например, с теми же автоматическими свойствами - у него же ЕСТЬ настоящее поле, но доступа к нему - шишь получишь. Да и логику работы сеттера/геттера никак не дополнить, не говоря уж о том чтобы изменить).
S-type
7. Возвращение объектов по ссылке
Сложно сказать для чего это практически может быть полезно...
Просто есть такая возможность в IL, а в C# оно не было доступно.

По поводу общего развития...
Я не могу особо рассуждать по поводу с++, но лично мне кажется что это как раз таки вышел "извращённый" си. Если просто ввести понятия объектов/классов ещё куда ни шло, то вся эта хрень с шаблонами, кучей разных операций приведения типов, множественным наследованием...
В общем то что должно было упростить написание ПО в итоге приводит к тому что получается адский нечитаемый код - к сожалению C# движется туда же.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Т.е. в итоге, особых претензий типа "так делать вредно" - нет.
Ratings: 0 negative/0 positive
Re: C# 7
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002


В любом более-менее развитом языке существует 100500 способов сделать г*но, и от того что добавится ещё пара десятков, особо ничего не поменяется.
А писать красиво вполне себе можно и НЕ используя 90% этих примочек. Вообще обычно в серьёзных конторах существуют свои "соглашения и стандарты" - они как раз и направлены на то чтобы малоопытные сотрудники не делали каку


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Поставил Update 2, полез читать www.visualstudio.com про новшества. Добавили фишку - можно выделить выражение (и даже блок кода), вызвать C# Interactive (клавишами Ctr+E, E или в контекстном меню "Выполнять в интерактивном режиме") - и увидеть результат вычисления выражения. При этом "Интерактивный C#" - был добавлен ещё в Update 1!
Как я скучал по окошку Commands. Иногда нужно быстро что то посчитать, а набрать ?2*2 не в чем А тут - вот оно, счастье! Жизнь становится интереснее. Там даже #cls есть.
Ratings: 0 negative/0 positive
Re: C# 7
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Макросы еще не добавили в си?
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
of63
Макросы еще не добавили в си?

#load "myScriptContext.csx"
Ratings: 0 negative/0 positive
Re: C# 7
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
И правда, что-то похожее.
blogs.msdn.microsoft.com
Ratings: 0 negative/0 positive
C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Открыл VS, почитал новости:

blogs.msdn.microsoft.com

Не понял про Tuples. В примере

return (first: first, middle: middle, last: last); // named tuple elements in a literal

С какой стороны данные, а с какой имена полей? Как правильно:

return Tuple.Create(first: "Иван", middle: "Иванович", last: "Иванов");

return Tuple.Create("Иван": first, "Иванович": middle, "Иванов": last);





И, с Deconstruction не понятно. Есть пример:

class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public void Deconstruct(out int x, out int y) { x = X; y = Y; }
}
(var myX, var myY) = GetPoint(); // calls Deconstruct(out myX, out myY);


Но, откуда взялся GetPoint? Он генерируется в c# как то "автоматом", или его надо самому определять, что то вроде:

Point GetPoint()
{
return new Point();
}



Исправлено 3 раз(а). Последнее : S-type, 29.08.16 10:21
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
В примере к More expression bodied members сказано:

public string Name
{
get => names[id]; // getters
set => names[id] = value; // setters
}

Что это за синтаксис? Как его понимать?

Коллеги, есть какие то мысли по этому поводу?
Ratings: 0 negative/0 positive
Re: C# 7
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Хороший такой синтаксис ) Например:
- вот свойство Name, символьное
- если из него читают (get) следовательно ( => ) вернуть names[id] (элемент id массива names обьекта, наверное)
- если в него записывают (set), то тоже самое, но записать в элемент массива
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Т.е.

public string Name
{
get => names[id]; // getters
set => names[id] = value; // setters
}

это просто иная запись для

public string Name
{
get { return names[id]; }
set { names[id] = value; }
}

Так? Просто, не понятно - какая от этого выгода? Судя по всему - ни какой.



Исправлено 1 раз(а). Последнее : S-type, 01.09.16 13:45
Ratings: 0 negative/0 positive
Re: C# 7
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
какая от этого выгода? Судя по всему - ни какой.
Ну как же, разраба на собеседовании при приёме на работу чмырить. Того который тупо кодит, вместо того чтобы за всякой х*** новомодной тенденцией следить


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: C# 7
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
Ну как же, разраба на собеседовании при приёме на работу чмырить. Того который тупо кодит, вместо того чтобы за всякой х*** новомодной тенденцией следить

Это точно. Был как то в одной конторе, а мне вопрос задают "какие новшества есть в Oracle 12"? Не знаю, говорю, у нас в банке 11-й, им и пользуемся - за глаза хватает. Тут мне начали объяснять, что "настоящий разработчик должен жить новшествами, болеть, читать, быть в курсе...". Не стал спорить, попрощался и ушёл.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 14 tata Guest (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика