C# 3.0

| 75 | Розділ: | 16 липня 2007 17:11

Якшо хтось вже мав змогу працювати з цим чудом технічної думки, пишіть сюди відгуки. Було би дуже цікаво.
Хочеш відповісти? Авторизуйся!

rvxNecroTrue | 16.07.07 17:17:42 | #

не по адресу, товарищь Любаня - тут все нормальні нєфари.Ми не працюємо, але всё знаємо)

Змучений Циба | 16.07.07 17:26:01 | #

Таварішьчь Льоша, я ні асуждаю вас за іспользаваніє уже пачівшева Z80 в ісслєдоватільскіх целях, но здесь я питаюсь найті людєй, каториє скривают от обшьчєства сваї таланти.

rvxNecroTrue | 16.07.07 21:41:50 | #

я ще гейдеву на ПісьЦі порвав матку. Донт форгів.
Так шо… а умних людей а вообще мало бачив

Корок | 16.07.07 17:50:47 | #

Я фанат Java :p

Змучений Циба | 16.07.07 17:55:42 | #

Таварішьчь Льоша атріцаїт налічіє умних чілавєкав здєсь.

+1 тобі, але на C# таке витворяти можна, шо то просто ппц. =))) До речі, єдине, чим може Java похизуватися перед C# -- дуже корисний throws… Бльо, його в "шарпі" нема…

Корок | 16.07.07 18:00:52 | #

Та порівнювати голий синтаксис, то якось дивно. Як на мене то мірятися тут треба розмірами доступних бібліотек і фреймворків.

Змучений Циба | 16.07.07 18:05:14 | #

Ггг, синтаксис, кажеш? ))) Почитай спеки по C# 2.0 та C# 3.0 і побачиш, шо Java програє капітально. Доступні бібліотеки? Тримай: .NET FX 3.0, працював ше з Silverlight (Windows Presentation Foundation) -- Java зі своїм JRE/JDK справді ховається.

А як тобі така супер-фішка C# 3.0 як фактично SQL-запити для будь-яких (!) колекцій, XML-доків і "просто" реляційних БД на рівні самої мови?

StepEx | 16.07.07 18:19:04 | #

ото гейтсова кантора розродилась :)) а всьо одно С# сакс бо тільки під віндою працює

Змучений Циба | 16.07.07 18:36:56 | #

Та до чого тут "C# тільки під віндою працює"? Головне мати нормальний компайлер (або транслятор), який вже згенерить код залежно від платформи. Я ж казав про концептуальні фішки мови, а не .NET-платформи.

StepEx | 16.07.07 19:42:19 | #

може я відстав від життя але ше не бачив жодного компайлера для С# не який би генерив код не під віндозу і не під .net

A20 | 16.07.07 19:44:30 | #

читай мат-часть www.mono-project.com

StepEx | 17.07.07 00:54:00 | #

я майже в шоці шамани ті любителі С#… нафіга всьо через задницю робити

Змучений Циба | 17.07.07 11:08:44 | #

Що значить "робити через задницю"?

Корок | 16.07.07 22:23:27 | #

Сила яви не в JRE/JDK, а в терабайтах опен сорсних бібліотек.

A20 | 16.07.07 22:30:03 | #

і гігабайтах оперативки, які супер модний гарбідж колектор зїдає ше на старті

Корок | 16.07.07 22:40:04 | #

Це нормально для сьогоднішнього дня. Це палата за дуже високу швидкість розробки ПЗ. 2 Гіга оперативки - це достатньо для дуже великих проектів.

Змучений Циба | 17.07.07 11:25:01 | #


Garbage-collector -- приємне зло…

Змучений Циба | 17.07.07 10:35:03 | #

Терабайти опен-сорсу??? Ггг, кампіляй ядро лінуха.

A20 | 16.07.07 19:14:09 | #

Ги… Не чекав тут побачити подбне… Хоча знаю що більшість девелоперів слухають рок…

Ну ладно, про все попордяку
C# 3.0 то точно той самий 2.0, ніяких змін в компіляторі не було, добавили тільки білотеки .NET FX
C# 3.5(здається він все ще в беті) -- добавили ще декілька бібліотек серед яких Silverlight + "супер-фішку" ламбада експрешини "SQL-запити для будь-яких (!) колекцій, XML-доків і "просто" реляційних БД на рівні самої мови".
Про ламбада експрешини треба сказати окремо -- мікромягкі довго думали чи включати ту фігню до C#, бо багато народу(серед яких і я) вважають шо штука зовсім не корисна, не прозора, реалізована незграбно і буде тільки шкодити молодим і недосвіченим…
Все ж таки вони включили ту "перевагу над Жабою" в 3.5, і тепер пів року переписують фрейморк шоб ту фічу всюди просапортити.

Нарахунок Джави, ти друже не правий. Хоч я не є її прибічником, але варто визнати шо версія 1.6 є практично еквівалентом до C# (дженеріки, там наприклад, навіть крутіші) До того там є якийсь еквівалент Сільверлайта.

З.І "Головне мати нормальний компайлер (або транслятор), який вже згенерить код залежно від платформи." -- компайлера тут замало, треба ше рантайм. І це дуже виликий мінус шо асп нет сайти, наприклад, неможна заводити на фрішних лінуксових серверах. Є опен сорсні проекти типу "моно", але серйозні проекти поки що не ризикують то юзати…

Змучений Циба | 17.07.07 11:15:24 | #

Я би не сказав, що лямбда-вирази не корисна, не прозора чи ше якась штука. І, до речі, щиро не розумію, що значить "реалізована незграбно". Як на мене, дуже корисно було би ввести лямбда-вирази ще в версію 1.0, і тоді можна було би навіть не вводити справді незграбних анонімних методів. Якшо людина не готова, хай просто читає доки по тому і просто вчиться (зараз так і роблю). Колись люди і від C відхрещувалися, бо писали все на асмі.

Про компайлер не дописав -- сорі.

A20 | 18.07.07 16:53:04 | #

Я в свому попередньому пості переплутав LINQ з ламбада-виразами , давно з тим немав справи…

LINQ то не є чимось інноваційним, а просто ще одна запутана конструкція. Це всьо можна реалізувати на рівні препроцесора і на проміжний код воно немає ніякого впливу.
Нарахунок не ефективності -- краще форічом пройтися по колекції і зробити всьо що треба, ніж робити селект, резултатом якого буде тимчасова колекція заповнена якимись згенерованими проміжними класами. Купа копіювань і виділень памяті -- для маленьких колекцій і сучасних компів то майже пофіг, але загалом не ефективно.
Нарахунок написання універсального коду шо працює і з базами і колекціями -- так робити не варто. Завжди потрібно знати з чим ти працюєш шоб коректно обробляти виняткові ситуації. До тогож в базах я б радив сторед проки юзати.

A20 | 18.07.07 17:07:11 | #

З.І. я на мене то наприклад yield return, який появися в 2.0 штука в сто раз крутіша бо дозволяє реалізовувати сoroutines (незнаю як перекладається) так як заповідав Кнут. Такого не дозволяє більше ні одна з відомих мені мов крім ассемблера.

Змучений Циба | 18.07.07 18:36:26 | #

Не така вона й запутана. Наочна і крапка. Конструкції на LINQ фактично перетворюються препроцесором (я перше не в"їхав чому мені студійний компілятор видавав страшні і жахливі помилки).

Про foreach ніхто не спорить, але якшо запит дійсно складний, для нього ліпше зробити якесь узагальнення, щоби не марнувати час на написання коду для правильної вибірки даних. Тимчасова колекція не є добре теж. Тут просто синтаксис "винен".

Чому ж ні? Мати один інтерфейс до всього хіба зле (може скоро XPath ше впаяють?)? Щодо сторед процедур погоджуюся на всі 100.

A20 | 18.07.07 19:05:58 | #

моя позиція така -- LINQ можна юзати тільки для витягування даних з колекцій коли є складні критерії і якщо відомо що колекції не надто великі або швидкість не надто критична
для доступу до БД його юзати не варто взагалі, тому що ми отримуємо жорстке звязування, що фігово за означенням.
Крім того, LINQ негативно впливає на структуру проекту, бо тепер відпадає необхідність в data abstraction layer і всі робота з базою переноситься на рівень бізнес логіки.

Змучений Циба | 18.07.07 19:09:58 | #

Крім того, LINQ негативно впливає на структуру проекту, бо тепер відпадає необхідність в data abstraction layer і всі робота з базою переноситься на рівень бізнес логіки. відповісти

На жаль, та.

Slim.km | 16.07.07 21:09:46 | #

а в сідієз нольтри тож є апіратари?

Корок | 16.07.07 22:22:17 | #

Ну добре, раз вже почали мірятися піпісками, то давайте. По перше, ті бібліотеки що йдуть разом з ждк хоч і важливі, але не вони в основному впливають на вибір яви як платформи. І так, чи є під НЕТ аналоги таких фреймворків як Spring і Hibernate? Це основа будь який ВЕЛИКИХ проектів. Ти бачив написаний на НЕТ платформі справді великий проект, такий де самі сорси займають декілька гігабайт? Саме ці два фреймвори і дозволяють розробляти такі проекти. Повноцінних аналогів під НЕТ я не знаю.

StepEx | 17.07.07 00:56:53 | #

ну там не сорси самого проекту будуть займати кілька гігабайт а фрішні ліби понатягувані з всього нету…

а взагалі байт код, віртуальні машини, гарбадж колектори ти всьо сакс… де старе хороше с++ з нейтів кодом.. ех, бізнес всім рулить

Корок | 17.07.07 10:54:46 | #

байт код - це є гут. По перше він однозначно декомпілюєтся, по друге кросс платформенність. Платимо за це оперативкою, я вже казав, що 2 гіга вистачить на дуже великий проект. на сьогодні це нормальні сиситемні вимоги.
віртуальні машини теж гут, так як вони забезпечують кроссплатфоременність.
гарбедж колектор - тут навіть не може бути варіантів, це однозначно потрібна штука. Основний баг в УСІХ с++них проектах - це загублена пам"ять, великі с++ні проекти в кінці кінців приходять до самопальних гарбедж колекторів.

а бізнес насправді рулить всім

Змучений Циба | 17.07.07 11:07:13 | #

"Основний баг" C++-проектів те, що програмери, які пишуть на C++, мають "баги" в голові. Garbage-collectors, якшо чесно, дуже хороша штука, але Строуструп опирався на свій досвід, який вимагав більшого перформенсу. Він сам казав, що він створив "++" для того, щоби код було приємніше писати. Як основу він взяв вседозволеність C, наділив його набагато більшою функціональністю, і просто подарував світу атомну бомбу. Не розумію людей, які на C++ пишуть new чи new[] і одразу ж кажуть, що КОЛИСЬ закриють їх delete || delete[], приміром в деструкторах.

Байт-код не є гут. Декомпілити можна БУДЬ-ЯКИЙ код. C/C++ теж мають крос-платформеність, але не на рівні віртуальних машин, які, в принципі, їм ні до чого, а на рівні компілятора. Єдине, що потрібно зробити, -- перекомпілити код. Нейтів-код є щастя.

Корок | 17.07.07 11:14:37 | #

угу, будь який можна декомпілювати, але скомпілювати його заново майже не можливо. спробуй це проробити хоча б з мінімальною программою
Швидкість розробки грає першочергову роль.

Змучений Циба | 17.07.07 11:17:51 | #

Ггг, а нашо його декомпілити-компілити заново?

Корок | 17.07.07 11:20:28 | #

ну можна, звичайно, вигадати якусь абстрактну ситауцію це просто був ще один сантиметр до явової піпіски

Змучений Циба | 17.07.07 11:22:12 | #

А яка користь з того?

Корок | 17.07.07 11:27:41 | #

В реальній розробці ПЗ, звичайно, дуже сумнівна користь, ще й при наявності відкритих сорсів :). Але ж в декомпіляції теж немає реальної потреби, крім вивчення і розваги. Ну а тут ще додаєтся можливість внести зміну і скомпілити заново.

Змучений Циба | 17.07.07 11:31:07 | #

Мля, а нашо взагалі компілити назад? Невже раніше патчів не існувало? Патчі для "жадних праграм" юзав? Отожбо. Ніхто тобі не дає перекомпілений код. Декомпільований (чи як трівіал -- дизасемблерний) код аналізують і просто роблять патч. Перекомпілювати немає потреби.

Корок | 17.07.07 11:33:34 | #

Та я ж написав, що в реальній розробці ПЗ це не має місця, прочитай попередній пост. Все, піс тобі брат, а то діалог приймає нездорові оберти

Змучений Циба | 17.07.07 11:34:01 | #

Да…

Корок | 17.07.07 11:21:25 | #

Не-а, таки самі сорси, тільки що спеціально переміряв. З бібліотеками значно більше

Змучений Циба | 17.07.07 11:00:23 | #

Мені, якщо чесно, і далі не зрозуміло, чому хизуються неповороткими фреймворками, які є надстройками ще над цілою купою інших фреймворків. Як на мене, дуже глупо реалізовувати ВЕЛИКИЙ проект на Java, встрачаючи перформенс (принаймі, я так поки це розумію). Пригадується, бачив результати бенч-марку, коли якийсь клоун на ньому показував, як на складних математичних обчисленнях Java, яка крутиться на віртуальній машині, змогла перегнати відкомпілений в нейтів-код сорс на C++. Особисто я сумніваюсь в тому, що потрібно жертвувати перформенсом. Хоча, як на мене, я просто погано розбираюся в правилах ринку.

Spring & Hibernate робилися не за один день, тому цілком можливо, що під .NET з"являться аналоги даних фреймворків.

Змучений Циба | 17.07.07 10:54:18 | #

Мля, я питався, чи хтось юзав C# 3.0, а не розводити holy war'и по тому, ЧОМУ Java ліпша (угу, але все-одно байт-код нах!).

Особисто ДУЖЕ мені сподобалося наступне:
1. лямбда-вирази нарешті замінили (читати: доповнили) анонімні методи, які мають дуже страшний синтаксис (як на мене; крім того, ця болячка є і в Java); правда, лямбда-вирази не дуже наочні, але те, що це набагато коротше тепер, радує набагато більше;
2. LINQ, DLINQ, XLINQ; просто був вражений тим, шо кожну IEnumerable-колекцію можна фільтрувати, не турбуючись про написання свого фільтру через ітерації по кожному елементу; і до того ж, використовуючи "from in where select" код робиться дуже наочним.

Корок | 17.07.07 10:56:10 | #

поки ти то написав, я вже встиг знову наспамити. Звиняйте, дійсно закриваємо тему про джаву.

A20 | 17.07.07 13:16:39 | #

Я в свому попередньому пості переплутав LINQ з ламбада-виразами , давно з тим немав справи…
Але суті то не міняє -- то штука не ефективна з точки зору перфоменса(попробуй замутити селект по якійсь великій колекції) і ідеологічно не правильно (то зло - писати одноковий код і для доступу до баз даних і до колекцій). Навіщо робити щось без чого можна легко обходитися ?

Змучений Циба | 18.07.07 18:41:07 | #

Будь-яка мова високого рівня неефективна з точки зору перформенсу. Чим виший рівень, тим більше за нього потрібно платити. В принципі, цікаво було би реалізувати колекції на asm'і.

Ladiginskiy) | 17.07.07 11:31:33 | #

РЕСПЕКТ!!!!
ЧИТАЮЧИ СТАТТЮ РОЗУМІЮ ЩО БАГАТО ЧОМУ ТРЕБА ВЧИТИСЬ ТА НАМАГАТИСЬ ЗБАГНУТИ ЩО Є ДОБРЕ А ЩО Є ТАК МИМОІЛЬНИМ ЗАХОПЛЕННЯМ:)

Genyker | 17.07.07 13:20:55 | #

Працюю зара під WPF/CS3.0, по функціоналу суперкруто, інтерфейс проги за пару хвилин пишеться такий, шо торба як красів і вийобисто, але зіткнувся з проблемою: як то кажуть шагвлєво-шагвправо-растрєлнамєстє, рився Рефлектором в тому фреймворку, усьо інтернал і прайвет, хочеш свій контрол на базі вже існуючого написати - геморой на тиждень, МСи прописали якусь пропертю важну, а ти до неї хуй дойдеш шоб змінити… То поки єдиний великий мінус шо найшов за півроку…

Miklos | 17.07.07 14:05:13 | #

“Cyberface
Iron will
Programmed to corrupt and kill
Cyberface
No escape
He is interfaced to Hell”
_____Judas Priest (Cyberface)

Змучений Циба | 17.07.07 14:19:02 | #

Якого х** ти вічно всюди оффтопиш?

Miklos | 17.07.07 14:29:11 | #

Не вічно і не всюди, а лише в даній статті.

mezkerei | 17.07.07 15:31:50 | #

C# - респект… Я вчився, і далі буду роздуплятися в C# - бо це дійсно крута штука, особливо для game developppppperiv під PC.

rvxNecroTrue | 17.07.07 15:34:57 | #

нє деті.
лучьше Спєка і асма ніх нема.!

Genyker | 17.07.07 15:42:49 | #

бєбєбє, то нах асм, мо просто в машинних кодах писати, так вашшє крута?.. я б подивився як ти писав би прогу на асмі з функціоналом і дизайном наприклад ворда:?

rvxNecroTrue | 17.07.07 15:44:04 | #

))) а ще якщо порнуха, то ти любиш щоб старікі дітям в рот срали?!! збоченець

mezkerei | 17.07.07 15:53:29 | #

А читав як чувак на асмі опереціонку напсав (врдіби однозадачну), причому код вміщався на 3.5 інчовому флоппіку!!!

Genyker | 17.07.07 16:30:47 | #

десь бачив туторіал як операційку мінімальненьку накатати, то код до перших уроків займав 2-3кб
2 rvxNecroTrue: таваріщ, нінада, класічєскє німєцкє порно руліт!

// Єбітєсь сукі
#define TRUE FALSE

rvxNecroTrue | 17.07.07 16:53:57 | #

>> // Єбітєсь сукі
>> #define TRUE FALSE відповісти
Це оптимізація по логіці)))

Genyker | 17.07.07 17:06:06 | #

Ага, туда ж, недавно в замовників в коді найшли:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex.ToString() as string)
{
case "0":
chartControl1.Series[0].ConfigItems.ColumnItem.ColumnType = ChartColumnType.Box;
break;
case "1":
chartControl1.Series[0].ConfigItems.ColumnItem.ColumnType = ChartColumnType.Cylinder;
break;
}
}

rvxNecroTrue | 17.07.07 17:08:37 | #

але!! )))) "пишите так, что бы код был удобочитаемым" ))

StepEx | 18.07.07 16:33:50 | #

+1
code convention недотриманий :)

Genyker | 18.07.07 16:39:34 | #

А ти попробуй відредагуй аби воно на хворумі нормально виглядало)))

A20 | 18.07.07 17:00:27 | #

а ти попробуй записати то одним рядком…
доречі незнав шо в шарпі свіч по стрінгах мутиться

Genyker | 18.07.07 17:23:03 | #

мутиться…

Змучений Циба | 18.07.07 18:38:44 | #

Мутиться, бо стрінг є літералом і не вимагає порівняння хендлів на об"єкти.

A20 | 18.07.07 19:07:29 | #

впринципі правильно бо стрінг є примітивним типом в шарпі, але для мене як С++ програмера то незвично

H2KER | 18.07.07 17:31:21 | #

Де можна закачати навчання по С????? plz

Genyker | 18.07.07 17:33:40 | #

іменно по С? Тоды полазь
http://www.google.com.ua/search?num=100&hl=uk&rls=GGGL%2CGGGL%3A2006-43%2CGGGL%3Aen&q=%D1%8F%D0%B7%D1%8B%D0%BA+C+%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA&meta=

Genyker | 18.07.07 17:34:03 | #

H2KER | 18.07.07 17:35:04 | #

А саму С??

Genyker | 18.07.07 17:39:55 | #

пошукай шось на зразок "C compiler download", але краще просто як маєш яких знайомих шо в тому шарять то пробий в них

A20 | 18.07.07 18:29:51 | #

більшість компіляторів С++ (наприклад Visual C++ чи gcc) компілюють і с код

Змучений Циба | 18.07.07 18:39:12 | #

До речі, не знаєш, де можна дістати cfront?

A20 | 18.07.07 19:08:37 | #

раритети збираєш
сам би хотів з ним побавитися

Змучений Циба | 18.07.07 19:13:47 | #

Ну, я би не сказав, що раритети. Просто в одній книжці бачив сампли коду з С++, трансльованого на С. Крім того, уяви як це ше більше захотілося після того, як взнав, шо BC 5.02 (цей точно) дозволяє з C/C++ коду генерити асмовий код. Я навіть написав загрузчик без stdlib після того. Шось в стилі:

start:
call _main
xor eax,eax
call ds:ExitProcess
end start

Кажись так. Ну, псевдо-код в принципі, бо давно нічо не писав на асмі.

A20 | 18.07.07 19:46:57 | #

Як кажуть (сам того не бачив) С код, згенерований СФронтом нон хуман ріддібле.
А взагалі кожен нормальний компілер повинен вміти повертати результати після кожної проміжної фази (код оброблений препроцесором, асм код, обєктний модуль або вже зліковану екзешку)

ka4ka | 18.07.07 19:30:07 | #

Паскаль кручє всєх!