Započni novu temu Odgovori na temu  [ 7 Posta ] 
Autoru Poruka
 Tema posta: MS budži C# 3.0
PostPoslato: 25.09.2005. 16:53:41 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
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

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 26.09.2005. 07:37:58 
Korisnikov avatar

Pridružio se: 20.08.2004. 22:48:39
Postovi: 218
Lokacija: Beograd
Godina: Apsolvent
Smer: IS
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 :yo: ), nullable type(tip promenjive moze biti nedefinisan), accessor accessiblity(vise nivoa pristupa za get i set - protected, public, private) i jos mnogo stvari o kojima nemam pojma. Tako da prvo kad provalim sve za C# 2.0, idem na 3.0.
Mnogo zure ovi iz MS-a :D

_________________
Singin': "Don't worry about a thing,
'Cause every little thing gonna be all right."


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 26.09.2005. 10:16:52 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
Č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.

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 26.09.2005. 20:35:22 
Site Admin
Korisnikov avatar

Pridružio se: 20.10.2001. 23:51:26
Postovi: 2866
Lokacija: Beograd
Godina: Dipl.
Smer: IS
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

_________________
------------------
GNU/Linux
Get counted! http://counter.li.org/


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 26.09.2005. 23:10:20 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
LINQ je sastavni deo 3.0 specifikacije. Zanimljivo je imati SQL usred koda. Sutra ću postaviti neke primere sa novom specifikacijom.

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 27.09.2005. 11:37:56 
Moderator
Korisnikov avatar

Pridružio se: 13.11.2001. 08:45:08
Postovi: 4717
Lokacija: Novi Bgd.
Godina: Dipl.
Smer: IS
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
8) Query expressions

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. , nadogradnju na C#. Pogledajte pregled jezika Cω.

_________________
Oni hipotetički kostrukti o kojima se može govoriti kao o konzistentnim i relativno trajnim dinamičkim sistemima koji objašnjavaju veći deo procesa motivacije, obuhvatajući i ciljeve i motive kroz njihove međusobne relacije, čime se mogu uslovno..


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 04.10.2005. 09:53:39 
Moderator
Korisnikov avatar

Pridružio se: 13.10.2003. 14:04:31
Postovi: 4555
Lokacija: At the poker table
Godina: II
Smer: IS
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

_________________
I know that the spades are the swords of a soldier
I know that the clubs are weapons of war
I know that diamonds mean money for this art
But thats not the shape of my heart


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 7 Posta ] 


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 2 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
cron
Copyleft FONForum 2001-2014 | Powered by phpBB © phpBB Group