FONForum http://www.fonforum.org/ |
|
MS budži C# 3.0 http://www.fonforum.org/viewtopic.php?f=8&t=4776 |
Stranica 1 od 1 |
Autoru: | zlatko [ 25.09.2005. 16:53:41 ] |
Tema posta: | MS budži C# 3.0 |
MS priprema specifikaciju za 3. izdanje svog jezika. U ovom izdanju C# će doživeti dosada neviđene promene. Uvodi se ono što je bilo nezamislivo za jezik sa statičkim određivanjem tipova. Bukvalno stvari koje su sada moguće jedino u jezicima sa dinamičkim tipovima kao što su Python i Ruby sada se ubacuju u C#. Fin pregled novih mogućnosti imate u dokumentu: http://download.microsoft.com/download/ ... %20lab.doc |
Autoru: | -Bodza- [ 26.09.2005. 07:37:58 ] |
Tema posta: | |
Prvi put cujem ovo, posto vecina ljudi kod nas koristi C# 1.1 uz Visual Studio 2003. Ja sam skoro presao na C# 2.0, i ima dosta novina: partial class (razdvajanje klasa u vise fajlova), generics(tj. sabloni, kao u C++-u ![]() Mnogo zure ovi iz MS-a ![]() |
Autoru: | zlatko [ 26.09.2005. 10:16:52 ] |
Tema posta: | |
Čini mi se da zvanično ni specifikacija 2.0 nije zaživela. Ovo je kao pogled u budućnost. Možda i nije loše. Ljudi će videti kako i MS misli da dinamički jezici nisu mačji kašalj, a konkurencija (čitaj java) će imati dovoljno vremena da razmisli o tim idejama i one koje valjaju ubaci kod sebe npr. u javu 6. |
Autoru: | zAkiLi [ 26.09.2005. 20:35:22 ] |
Tema posta: | |
A niko nije pomenuo LINQ kao novi jezik? Gledao sam malo njegovu specifikaciju, iako ga je radio m$, svidelo mi se nekoliko stvari, mada je sve to uglavnom vec vidjeno. Jedna od odlicnih ideja jeste integracija sa WinFS-om. nekoliko linq primera: http://blogs.msdn.com/danielfe/archive/ ... 64904.aspx |
Autoru: | zlatko [ 26.09.2005. 23:10:20 ] |
Tema posta: | |
LINQ je sastavni deo 3.0 specifikacije. Zanimljivo je imati SQL usred koda. Sutra ću postaviti neke primere sa novom specifikacijom. |
Autoru: | zlatko [ 27.09.2005. 11:37:56 ] |
Tema posta: | |
Najvažnije uvedene stvari su: 1) Object initializers 2) anonimni tipovi 3) implicitno tipiziranje lokalne varijable 4) implicitno tipiziranje niza 5) Extension methods 6) Lambda izrazi 7) Expression trees ![]() Tačka 1.: object initializers Object initializers su pojednostavljeni konstruktori sa geter i seter metodama. Rezultat je kraći i čitljivi kod: Kod: // deklarisanje public class Point { int x, y; public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } } public class Rectangle { Point p1, p2; public Point P1 { get { return p1; } set { p1 = value; } } public Point P2 { get { return p2; } set { p2 = value; } } } ... // instanciranje var a = new Point { X = 0, Y = 1 }; var r = new Rectangle { P1 = new Point { X = 0, Y = 1 }, P2 = new Point { X = 2, Y = 3 } }; Tačka 2: anonimni tipovi Anonimni tipovi su tuple tipa. Programer im ne daje ime, već to radi kompajler. Automatski vraćaju instacu jednog objekta. Kod: new { p1 = e1 , p2 = e2 , … pn = en } var p1 = new { Name = "Lawnmower", Price = 495.00 }; var p2 = new { Name = "Shovel", Price = 26.95 }; p1 = p2; Tačke 3. i 4. implicitno tipiziranje Uvedeno je implicitno tipiziranje lokalne varijable i niza: Kod: // varijable var i = 5; var s = "Hello"; var d = 1.0; var orders = new Dictionary<int,Order>(); // niza var numbers = new int[] {1, 2, 3}; var c = new[] { "hello", null, "world" }; Ovde je očigledan uticaj JavaScript-a, mada je Python to bolje uradio. Verovatno je bilo lakše napisati u JS jer je sada u deklaraciji na mesto tipa varijable uvedeno generički tip "var" što mu dođe kao void u C-u. Izgleda da su jezici sa imenom "java" u sebi sudbina C# ![]() Točke 6. i 7.: lambda izrazi i Expression trees Lambda izrazi se koriste na mestu u kojem se pojavljuju anonimne metode C#-a 2.0 (gde se očekuju delegati). Još jedan dodatak iz funkcionalnog programiranja. Postoji i u Pythonu ali se slabo koristi: Kod: x => x + 1 // Implicitly typed, expression body x => { return x + 1; } // Implicitly typed, statement body (int x) => x + 1 // Explicitly typed, expression body (int x) => { return x + 1; } // Explicitly typed, statement body (x, y) => x * y// Multiple parameters () => Console.WriteLine() // No parameters Expression trees koriste lambda izraze kao programski kod tj. omogućavaju jednostavnu izgradnju koda tokom run-timea: Kod: Func<int,int> f = x => x + 1; // Code Expression<Func<int,int>> e = x => x + 1; // Data Tačka 8. Query expressions Kod: from c in customers
where c.City == "London" from o in c.Orders where o.OrderDate.Year == 2005 select new { c.Name, o.OrderID, o.Total } Malo su mi ovde izvrnuli SQL. Ovo liči na Python kod, jedino je dobro što se ovo u C# može primeniti kako na bazu tako i na iteratore, a u Pythonu samo na iteratore i generatore. Sve u svemu puno novina. Koliko su korisne ostaje pitanje. C# je ionako komplikovan jezik a sa ovim će biti još teži za shvatanje. Kao da se žele dodvoriti programerima svih ukusa. Prvo su se ulizivali C++ašima pa su u jezik uveli mnoge stvari za koje je java mislila da su anahrone (za neke se i predomislila), sada se uvlače LISP-ovcima, Python-ašima... Samo da ne preteraju kao kada su stvaraoci C++ preterali u kompatibilnosti sa C-om, pa su stvorili ubedljivo najgori programski jezik (spram vremena nastajanja). Mnoge od ovih ideja su već testirane u drugim jezicima, čak jezicima za 2 najpopularnije VM: JVM i .NET. Pogledajte npr. Cω, nadogradnju na C#. Pogledajte pregled jezika Cω. |
Autoru: | VITA [ 04.10.2005. 09:53:39 ] |
Tema posta: | |
mnogo se zuri m$ ... nek pripazi malo... sto jezik ima vise osobina to je sve tezi za koriscenje.. java nema nista od toga a jos uvek je najjaci jezik... mislim da je stabilnost i jednostavnost mnogo bitnija od nekih nepotrebnih osobina...(tipa izlazni argument i promenljiv broj argumenata)... sve je to lepo ali usloznjava kod kad ga radi vise ljudi... + odstupa od standardnog pristupa projektovanja... sve se koriste neke ludacke osobine a isto to moze da se postigne isto sa postojecim starim osobinama koje se lako testiraju... extremno programiranje se zasniva na deljenju koda i da svako radi na svakom delu koda... a kad neko koristi genericse a neko nesto drugo nastaje haos... bar ja tako mislim |
Stranica 1 od 1 | Sva vremena su u UTC + 1 sat |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |