RSS

C# vs Delphi Prism

01 márc

Tudom, ez most elég kényes téma lesz, annál is inkább, mert ez az a téma tipikusan, ahol nem lehet elfogultságok nélkül ítélkezni. Én mégis megpróbálom ezt megtenni, mégpedig úgy, hogy mindkét félről mutatni fogok olyan dolgokat, amik a másikba nincsenek meg. Mindenkinek szuverén joga eldönteni ezek után, hogy melyik nyelvet használja (természetesen értem ide akár a VB-t is, csak én ahhoz tényleg nem értek). Chikkel épp most vitatkozunk egy-két dologról ezzel kapcsolatban itt, ugye mint egy C# szakival, aki egy kicsit pascal ellenes is talán, de most beláthatja szerintem ő is, hogy meglepő hova fejlesztik ezt a nyelvet. Gondoljunk csak vissza, biztos rengeteg Delphi fejlesztő van aki most is olvassa ezt a cikket és van viszonyítási alapja arról, hogy milyen nagyszerű dolgok mennek itt végbe. Ezt nem egy Microsoft ellenes konkurrenciának kell tekinteni, hanem egy lehetőségnek, hiszen ami alatta dobog, az úgyszint a Microsoft szíve, a .NET Framework. Engem legalább akkora örömmel tölt el látni ezt a nyelvet élni tovább és megerősödni, mint amit  a .NET Framework és a Microsoft által szállított új platformok és technológiák öröme nyújt. De térjünk át akkor a lényegre, legjobb lesz, ha táblázatosan szemlélteket pár dolgot (itt most nyilván nem fogok leírni mindent, csak ami eszembe jutott, de kiegészíthetitek). Hangsúlyozom, nem az volt a cél, hogy tökéletesen leírjak mindent, csak mint szemléltetésképp emeltem ki néhány dolgot:

Feature C# 3.0 Delphi Prism 3.0
Lambda expressions () => Debug.Write(“OK”); () –> Debug.Write(‘OK’);
Lambda statement blocks () => { Debug.Write(“OK”); } anonym methods
? : operator y = x > 10 ? 10 : x; y := iif(x > 10, 10, x);
AFAIK (collection initializers, etc.) x = new [] { 1, 2, 3 };
y = new List<string> { “String1”, “String2” };
x := [1, 2, 3];
y := new List<string>([“String1”, “String2”]);

string x = “string” + Environment.NewLine; x := Delphis string a Prismben’ + Environment.NewLine;
x := C#-s string a Prismben + Environment.NewLine;

verbatim string x = @”C:\Temp\”; x := ‘C:\Temp’;
x := “C:\Temp”;
sequences IEnumerable a;
IEnumerable<T> b;
IEnumerable<T> c;
IQueryable<T> d;
IParallelEnumerable <T> e;
a: IEnumerable;
b: IEnumerable<T>;
c: sequence of T;
d: queryable sequence of T;
e: parallel sequence of T;
colon : operator if (o != null) o.Name = “John”; o:Name := “John”;
The possibility to have more than one indexed properties. int this[string key] { } property Items[Key: Integer] …
property Items[Key: string] …default;
property Lines[Line: Integer] …
Boolean Double Comparisons if ((x > 10) && (x < 20)) … if 10 < x < 20 then
Inline Property Readers string Name { get { return "John"; } }

string this[int i]
{
   get { return List[i+1]; }
   set { List[i + 1] = value; }
}

property Name: string read ‘John’;

property PropName[I: Integer]: string read List[I+1] write List[I+1];

Asynchronous Methods/Blocks and Thread Synchronization (PFX or thread pool) .NET 4.0 PFX or Thread Pool async method DoIt();
begin
end;

class method ConsoleApp.Main;
begin
   async
   begin
      …
   end;
end;

var x := async for i:= 0 to 100 do
begin
end;

Selectors switch (…)
{
   case …:  … break;
   default: … break;
}
caseof … : …; … : …; elseend;

case Obj type of
  Person: msg := ‘Person’;
  Employee: msg := ‘Employee’;
end;

Enhanced ‘is not’ and ‘not in’ statements if (!(o is Person)) … if o is not Person then
For for (var i = 0; i<=10; i+=2) … for i: Integer := 0 to 10 step 2 do// there is no type inference

for parallel i: Integer := 0 to 10 step 2 do

Foreach

foreach (var obj in objList)
if (o is User) …

for each matching o: User in AList do

for each o in AList index i do

for each parallel o in AList do

for each from o in AList do

Implements for Individual Members  

type
  IFoo = interface
    method Bar;
  end;

  MyFoo = class(IFoo)
  public
    method Bar; // Foo already had a Bar class that does something else than IFoo.Bar.
    method FoosBar; implements IFoo.Bar; // provides the implementation for IFoo.Bar
  end;

Property Notification INotifyPropertyChanged INotifyPropertyChanged

property Name; notify;
property Address; notify ‘ValueName’;

volatile volatile keyword Prism 4.0 or
Thread.VolatileRead 
Thread.VolatileWrite

Logical Implication (implies) x = !a || b; x := a implies b;
x := not a or b;
Class References reflection PersonClassRef = class of T;
Default parameters C# 4.0 method DoIt(c1: Word := 5; const c2: string := ‘abc’; var c3: Integer := 8);
Events public event EventHandler Click; event + raise keyword
if (Click != null) Click;
Setsoperators Classes (C# 2.0 MSDN: PascalSet, HashSet, etc.) set of
Futures (PFX) .NET 4.0 PFX

var w: future := async
begin

   // work in background thread done here
end;

// more work in main thread done here

w(); // waits for the async block to finish

Polymorphic Delegates  

type
  FooData = class(Object);
  FooDataEx = class(FooData);
  Foo = delegate (sender: object; data: FooData);
  FooEx = delegate (sender: object; data: FooDataEx);

var foo: Foo := method (sender: object; data: FooDataEx) begin end; // there are no lambdas

Enums enum MyEnum { a, b, c, d = 255 };

MyEnum = enum (a, b, c, d = 255);
+
flags:
   MyFlags = flags(a, b, c);
typed enums:
   x = enum (a,b,c) of byte;

Global classes & methods   Delphi Win32 global members
Class contracts Code Contracts method MyClass.ToString(const index : Integer) : string;
require
   index >= 0;
begin
   result := Strings[index];
ensure
   result.Length > 0;
end;

TestClass = public class
private
   value : Integer;
private invariants
   value > 0;
public invariants
   value > 35;
public
   // public methods
end;

Parameter attributes [MyAttribute] int DoIt([MyAttribute] int a) … method DoIt([MyAttribute] a: Integer): [MyAttribute] Integer; …
“Untyped” Parameters C# 4.0 method FreeAndNil(var obj);
Partial Methods // file1.cs
partial void OnNameChanged();

// file2.cs
partial void OnNameChanged()
{
   // method body
}

// file1.pas
method OnNameChanged; partial; empty;

// file2.pas
method OnNameChanged; partial;
method OnNameChanged;
begin
   // method body
end;

Extended Constructor Calls C# 4.0

with p := new Point(param1, param1, x := 10, y := 20) do
begin
    // code
end;

Readonly directive readonly int x; x: Integer; readonly;
Exception Filters  

try
   // …code goes here…
except
  on E: SocketException where E.ErrorCode = 10054 do
  begin
     // connection was closed gracefully
  end;
end;

Property get/set int Prop { get; set; } property Prop: Integer read write;
Type Aliases using SimpleDictionary = Dictionary<string, object>; type
   SimpleDictionary = Dictionary<string, object>; // only valid from within the current assembly

type
   ObjectList = public List<object>; // can be used from other assemblies too
using using (var f = new FileStream(…)) …

using f := FileStream.Create(…) do

with   with new Point do
begin
   x := 10;
   y := 10;
end;

with matching p: AClass := AClass(GetValue()) do DoIt;

Co/contra variance C# 4.0 Func<Animal> animal := () –> DoIt;
Func<Rabbit> rabbit := animal;
Inline Scripting ASP.NET <%…%> and <script> tags ASP.NET <%…%> and <script> tags
MixIn   There is a simple yet very effective way to get a feature of some other (mainly dynamic) languages that is called "MixIn" to work in Delphi Prism.
Aspect-Oriented Programming (AOP) Aspect Oriented Programming using .NET Delphi Prism AOP – Cirrus
Prism Aspects to Help with Monobjc Development

Ez persze a jelenlegi verziókra vonatkozik jobbára, mert szerintem úgy korrekt az összehasonlítás, és inkább a nyelvbe épített szolgáltatásokon, mint sem a jövöbeli framework kiegészítéseken van a hangsúly. Szerintem nagyon dúrva az eddigi Delphihez, sőt még talán a C#-hoz képest is, de ez az én szerény véleményem. Megmondom őszintén, nekem jobban tetszik ez a nyelv, mert szerintem sokkal áttekinthetőbb és olvashatóbb mint a sok kriksz-kraksz. Már maga az, hogy van külön interface és implementation rész is jóval áttekinthetőbb, mint össze vissza írogatok rendszertelenül mindent. Én szeretem, ha korlátoznak abban, hogy minek hol a helye, persze eleinte ez idegesítőnek tűnhet, de megvan az értelme. Utána sokkal jobban látok mindent, ha előveszem később a projektet. Rend a lelke mindennek! ;)

About these ads
 
62 hozzászólás

Szerző: be március 1, 2009 hüvelyk Delphi .NET

 

62 responses to “C# vs Delphi Prism

  1. unbornchikken

    március 3, 2009 at 10:11 du.

    Némi kieg.:Implements for Individual Members: C# explicit interface implementationsParameter attributes: ilyen van C#-ban is.“Untyped” Parameters: C# 4.0 dynamic

     
  2. János

    március 3, 2009 at 11:46 du.

    "Implements for Individual Members: C# explicit interface implementations"Az más. Az implements az interfészes implementációs játék, amit már korábban a sima Delphinél is leírtam. Csak a fenti kódból hiányzik még pár dolog. Ez az amit hiányolsz. A MixIn pedig ezt a lehetőséget fejleszti tovább dinamikusabb irányba."Parameter attributes: ilyen van C#-ban is."Ok, ez van."Untyped" parameters:C# 4.0. ;)Delphi ~ 1995-98 óta

     
  3. János

    március 4, 2009 at 3:49 du.

    Beszéltem Carlo Kok-al. Ő a Delphi Prism compiler vezető fejlesztője. Idézem:Prism atm supports only a single statement in a lambda, however the above works: DoSomethingWith(() -> Debug.Write(\’OK\’));another option: DoSomethingWith(method begin Debug.Write(\’OK\’);… end);A future version will support multiple statements in the Lambda syntax.Itt jött az, amikor említettem neki, hogy minek annyi kulcsszó, mint pl. async, amikor a C#-os lambda statement blockos megoldás is helytálló. Erre a válasza ezt volt:We\’re working on a lambda syntax with multiple statements. As for parallel for:parallel for i: Integer := 0 to 10 do begin end;Következő kód (amit átfordítottál):Prism: method BinaryTreeNode.Sum: Int32; begin var leftSum: future Int32 := async Left.Sum; var rightSum := Right.Sum; result := Value + leftSum + rightSum; endC#:int Sum(){ int left=0,right=0; Parallel.Do(()=>left=Left.Sum(), ()=>right=Right.Sum()); return Value+left+right;}var leftSum := async Left.Sum;var rightSum := async Right.Sum;Should be enough. Note that Parallel.Do() doesn\’t do exactly the same as async, async creates a PFX Task (if the pfx is referenced, else it will create code to handle that)That all said, if you see any syntaxes we don\’t support yet and we don\’t have an equivalent, we\’re always open for suggestions.

     
  4. unbornchikken

    március 5, 2009 at 12:36 du.

    Untyped paraméter az is, ha object a típus. Ilyet a C# -99999 is tudot 1811-ben.

     
  5. unbornchikken

    március 5, 2009 at 12:40 du.

    "Note that Parallel.Do() doesn\’t do exactly the same as async, async creates a PFX Task "Ja, csak a kód, amit oda írtam, kopp ugyan azt csinálja, mint a pászkálos verzió.

     
  6. János

    március 5, 2009 at 1:32 du.

    "Untyped paraméter az is, ha object a típus. Ilyet a C# -99999 is tudot 1811-ben."Ennek az a lényege, hogy natív, ill. unsafe kód esetén is támogatott. Amúgy ténylegesen olyan, mintha object paramétert használnál, de mint ref paramétert."Ja, csak a kód, amit oda írtam, kopp ugyan azt csinálja, mint a pászkálos verzió."Kopp ugyanazt most is leírom Prism-be, csak jelenleg még anonym metódusokkal. De lesz lehetőség több lambda statement használatára is.Egyébként ez a Carlo gyerek nem olyan fajta, aki elzárkózik ilyen dolgoktól. Láttam az egyik blogbejegyzését, valaki kérte, hogy a "do" helyett lehessen "then"-t is írni, és rögtön bele is tették a nyelvbe. Még lehet ha azt mondja neki valaki, hogy begin … end helyett lehessen valami mást is írni ({ } biztos nem, mert az sima komment a pascalban), akkor azt is beleteszik. Bár ez utóbbit én biztos nem használnám, nekem spec. semmi bajom a begin … end -el.

     
  7. János

    március 6, 2009 at 12:11 de.

    Carlo már intézkedett is:"multiple lambda statements"Already on the list."volatile"Already done for the May release.Ezt a volatile kulcsszó kérelmet 1 hónapja nyújtottam be nekik!"AFAIK (collection initializers…)(Prism) y = new List<string> { "String1", "String2" }; != (C#) y := new List<string>(["String1", "String2"]);"Tricky but it\’s on the list for when we can find a good syntax.Nincs tökölés. Heijlsberg mikor fog ilyen közvetlenül kommunikálni veled és minden kérésed teljesíteni? Őszintén kíváncsi lennék, írd már meg neki légyszi, hogy az "implements"-et támogassák. Mellesleg most már jóba vagyok ezzel a Carlo gyerekkel is. Igaz annyira még nem, hogy ingyééé kapjam a cuccot, de alakul a dolog. Kiderítettem még néhány dolgot és örül, hogy ezeket megbeszélem vele. Mondta, hogy az összes C# 4.0 feature támogatva lesz, mellesleg co/contra variancok már régóta vannak a Prismbe, chikk erre is rávágná, hogy MS találmány különben. Minden lesz, sőt attól jóval több, azt ígérte Carlo.

     
  8. János

    március 6, 2009 at 12:23 de.

    Ezt már tényleg nem tudom tovább ragozni. Az igaszság az, hogy már látom rajtad is, hogy a begin..end -en kívül másba nem nagyon tudsz/akarsz belekötni. Helyes is, mert szerintem elég meggyőző voltam. De őszintén, más C kedvelő fejlesztők is írják már meg, hogy mit gondolnak erről az egészről, nem elfogultság, hanem a kész tényeket figyelembe véve. Mondjátok meg őszintén, mit kell még csinálni ezzel a nyelvvel, hogy még ütősebb legyen? Chikk válaszát már ismerem: begin/end => { }, bár szerintem sokkal szebb angolul leírva a teljes kód, mint ez a kriksz-krakszos (matekosabb) forma. Nekem spec. legalábbis ezerszer áttekinthetőbb. Mint ahogy a UI-be is a formailag jól tervezett dolgokat szeretem, ez igaz a kódra is. De mint ahogy design is egyik embernek tetszik, másiknak nem, ugyanúgy ez is ízlés kérdése.

     
  9. unbornchikken

    március 6, 2009 at 5:25 du.

    "Ezt már tényleg nem tudom tovább ragozni. Az igaszság az, hogy már látom rajtad is, hogy a begin..end -en kívül másba nem nagyon tudsz/akarsz belekötni."http://jankajanos.spaces.live.com/blog/cns!C3E2695FC6F7B0A4!927.entry#commentElső post. Továbbra is fenntartom a véleményem. Sok lesz ez.

     
  10. unbornchikken

    március 6, 2009 at 5:29 du.

    "Nincs tökölés. Heijlsberg mikor fog ilyen közvetlenül kommunikálni veled és minden kérésed teljesíteni? Őszintén kíváncsi lennék, írd már meg neki légyszi, hogy az "implements"-et támogassák."MVP Summit plusz a belső levlista. Ismerem az egész C# csapatot látásból is.

     
  11. János

    március 6, 2009 at 6:07 du.

    És megcsinálták már a C#-hoz, amit kértél tőlük? :) Félreértések végett, én tisztelem az MS fejlesztőcsapatot, de nekem senki ne magyarázza be, hogy csak ők tudnak valami ütőset alkotni. Ezek a fiúk a RemObjects-nél ugyanolyan odaadók és készek minden ötletet szívesen fogadni rögtön amint kiejted a szádon. Közvetlenek, rendesek, nem úgy beszélnek veled, mint a kutyával (lsd. korábbi tisztelt B.M. példa :))."MVP Summit plusz a belső levlista. Ismerem az egész C# csapatot látásból is."Ez mind nagyon szép, de egyszerű halandót ki fog meghallgatni, akinek nincs MVP kitüntetése? Itt akár Pistike előállhat egy jó ötlettel, s ha tetszik a csapatnak, akkor minden további nélkül beleteszik. A Microsoft ilyen tekintetben eléggé elszigetelődik ezek szerint? Persze van az MSDN-n, de Carlo-t akár MSN-en is felvehetem és cseveghetek vele. Nincs meg ez a fajta közvetlen kontaktus az emberekkel az MS fejlesztői csapat részéről, szerintem. De ez nem az én asztalom, én ebbe igazán nem is akarok nagyon belemenni, csak azt nem értem, miért olyan nehéz elfogadni ezt? Eddig az volt a baj, hogy a Delphi mérföldekkel le volt maradva az egész VS, .NET, C#-hoz képest, már meg az a baj, hogy előtte jár. Meglátásom szerint, ezek már csak kifogások részedről is, mert nem szereted ezt a nyelvet…

     
  12. János

    március 6, 2009 at 9:40 du.

    Mégegy idegesítő dolog a C#-ban. Nincsenek virtuális konstruktorok, mint a Delphiben. Így minden származtatott osztályon újra le kell írni, hogy:public DerivedClass(string p1, string p2) : base(p1, p2) { }Ez már 2-3 konstruktor esetében is idegesítő egy kicsit, főleg 10 származtatott osztály esetében. Persze vannak trükkök, virtuális metódusok az inicializációhoz, vagy C# 3.0 inicializálók, de addig ez elég érdekes dolog lehetett. Mindent tud a C#, mi… hogyne!

     
  13. János

    március 7, 2009 at 3:07 de.

    Már belefáradok teljesen az erőlködésbe, hogy meggyőzzelek arról, van olyan jó ez a nyelv is, mint a C#. Olyat még mondani se nagyon merek, hogy a VB-től biztos jobb, mert akkor ők is nekem esnek. ;)

     
  14. János

    március 8, 2009 at 1:03 du.

    De, hogy kötekedjek, találtam megint egy idegesítő dolgot (ami persze a Delphibe megint csak működik). Amikor implicit módon implementálok egy interfészt, akkor mi a búbánatért nem lehet virtual protected-ként megadni az implementált metódust. Nem statikusnak és publikusnak kell lennie. Remek. Persze értem én, ha valaki interfészeket használ, akkor úgyis látni fogja az amúgy osztályon megadott protected tagokat is, de az osztályon valamilyen szinten azért csak elrejti ezt a dolgot. Ez alapból is működhetne explicit interfész implementáció nélkül is, ami főképp nem is emiatt van kitalálva, hanem a névütközések elkerülése végett. Egyáltalán nem olyan rugalmas a C# mindenben, mint a Delphi. Persze szó nincs róla, mindkettő mellett/ellen lehet érvelni, nekem jobban tetszik az utóbbi megközelítése.

     
  15. Szőke László Zsolt

    május 31, 2009 at 11:55 du.

    Az azé\’ vicc, hogy Pistike betelefonál, hogy legyen má\’ a nyelven olyan is hogy, … oszt lesz.Komoly egy nyelv lehet ez a Prism, vagy minek hívják.Persze az is lehet, hogy a PL/I-re hajaznak, abban is volt minden, ami szem-szájnak ingere.Az Adára "néhány" nagyon hozzáértő azt szokta mondani, hogy karácsonyfa. Az Ada azonban egy nagyon következetes nyelv. Elmondható ez a Prizmáról is?Én régen Pascaloztam, régen. Aztán "elváltottam" C++-ra. A C++ az egy nyelv: Bjarne Stroustrupnak küldj be egy igényed (a nyelvvel kapcsolatban). Mit tippelsz, mikorra lesz része a nyelvnek?Igen, azt elfelejtettem megkérdezni, hogy melyik szabványügyi szervezet gondozza a Prizmádat?Megtippel: Carló gyerek.:)Hát ez vicc!"Nincs tökölés" mi, szósz, oszt Carló gyerek már intézkedik is.Milyen mosléknyelv lehet ez a prizma?Milyen kotyvasztás eredménye.Micsoda hatalmas dilemmák nehezedhettek rá Carlo-gyerekre, amikor arról kellett döntenie, hogy mi maradjon ki a nyelvből és mi kerüljön bele.Röhögnöm kell, de nagyon!Nem tudom, hogy hol tart a Delphi maszlagod, de véleményem szerint mindig is lesznek fanok, akik szerelem alapján kitartanak a végsőkig egy halálra ítélt nyomorék nyelv mellett, amit ha jól vettem ki, most göz erővel szarnak tele minden maszlaggal, hogy Pistike jól érezze magát.Kicsit sok időt "dobtam" erre a szánalmas szarságra, bocsánat, már itt sem vagyok!

     
  16. János

    június 2, 2009 at 11:30 du.

    "Az azé\’ vicc, hogy Pistike betelefonál, hogy legyen má\’ a nyelven olyan is hogy, … oszt lesz."Na jó, azért ez nem teljesen így van. Nyilván ők is jónak látták azt az adott dolgot, ha bekerül.Teljesen felesleges ilyenfajta háborús hangulatot kelteni. Mindenki abban fejleszt, amiben neki jól esik. Mindenesetre én ebbe nem akarok beszálni, mivel sose volt kedvem erről veszekedni senkivel, mint ahogy elfogadom azt is, hogy valaki VB-be fejleszt és szereti azt a nyelvet. Ha Te szereted a C/C++-t, nyilván abba fogsz fejleszteni és Isten ments, hogy megpróbáljalak meggyőzni az ellenkezőjéről, mint ahogy egy VB fejlesztőt is arról, hogy használjon C#-ot. Csak azt kérem, hogy add meg a tiszteletet, hiszen ezek az emberek is azért dolgoznak, hogy valami jót alkossanak, ami természetesen nézőpont kérdése és egyénfüggő, de munka. Nem kell még ide is ez a fajta hangnem, szomorú nagyon, hogy az emberek javarésze rossz indulatú.

     
  17. Szőke László Zsolt

    június 3, 2009 at 7:48 du.

    Nem rossz indulatú vagyok, hanem rosszindulatú, így egybeírva! :)A nyelvtant meg a viccolgatást félretéve, nem vagyok én rosszindulatú, csak felindult voltam egy kicsit, miután elolvastam ezt az oldalt. _Bocsánatot__kérek_! Egyszerűen más világban élünk (te meg én), oszt erről egy kicsit elfeledkeztem. Majd kb. 10 év múlva másképp fogsz Te is gondolkodni azokról a dolgokról, amiket itt leírtál a programozási nyelvekkel kapcsolatban.Addig is egy útmutatónak, ha nem sértelek meg:http://www.research.att.com/~bs/homepage.htmlHa van egy kis időd, akkor érdemes végigolvasni a FAQ-t, és ha technikai részletek is érdekelnek, akkor a technical FAQ-t is.

     
  18. János

    június 4, 2009 at 12:52 de.

    Félreértés végett, nekem spec. semmi bajom nincs a C alapú nyelvekkel. Ha erre szeretnél kijukadni. C#-ot használok most is, de mivel korábban Delphi/C++Builder-eztem elég sokat és megszerettem, nem bűn az, ha írok róla pár szép szót. Sose kritizáltam egy nyelvet se és ezentúl se akarok, hanem inkább a lehetőségeket szeretem meglátni mindenben. De nem is áll szándékomban szavakkal dobálózni, ezért is egy komplett tényszerű feature lista összeállítást adtam a C#-hoz viszonyítva. Az meg, hogy én 10 év múlva hogy fogok erről vélekedni… LOL Fejlesztettem már komplett rendszereket cégeknek Delphiben, C++Builder és most C#-ban egyaránt. Lehet 10 év múlva valamilyen funkcionális nyelvet fogok használni, F#-ot mondjuk. Szerencsére sose volt gondom az újdonságok megtanulásával és hála Istennek a cégnél teljesen szabadkezet kapok ehhez.Az is más dolog, hogy ez nálam sose volt ilyen fajta mély lelki problémákat okozó kérdés. Lekopogom, hogy idáig mind elé úgy ültem le dolgozni, hogy szerettem használni. Még az assembly-re is ezt mondom, amit az egyetemen tanítottak, bár ott már nem mindig volt hozzá elég türelmem. ;)Másrészt pedig ez totál függ attól, hogy konkrétan milyen területen dolgozol, illetve attól is, hogy kinek dolgozol. Az biztos, hogy nincs olyan bolond, aki nekiáll .NET-et managed C++-ban programozni. Az MS "el is hagyta" azt az irányt egy sokkal jobban átlátható és típusbiztosabb nyelvért (C#), amit mellesleg Anders Hejlsberg, a Delphi megalkotója fejlesztett ki. Szóval csak annyit akarok kifejezni ezzel az egésszel, hogy a Világ nem csupán fehér és fekete.100 szónak is egy a vége, én nem vitatkozom, mert teljesen egyetértek azzal, hogy a C/C++/C# és más C alapú nyelvek kiemelkedően nagy lehetőséget rejtenek magukban, de ugyanakor nem kívánok átesni a ló túloldalára se azzal, hogy más nyelveket, s egyúttal mások munkáját is vele együtt becsméreljem/aláértékeljem. Mindenki használja azt amit szeret, amíg azért dolgozik, hogy másokon segítsen. Mindenki munkáját tiszeletben tartottam eddig is, és ezt követően sem lesz másképp.

     
  19. Szőke László Zsolt

    június 4, 2009 at 12:38 du.

    Anders Hejlsberg = const akarmi: integer = 123;Ennyire szerencsétlen embert, és még ezek után felvették a Microsofthoz, hogy tervezzen egy nyelvet…+++A menedzselt C++ helyett van a C++/CLI; vagy az is bolond aki ezt nyomja? Ha úgy gondolod, hogy igen, akkor beszélgess egy kicsit Herb Sutterrel erről a témáról. Az Microsoft nagyon nem hagyta el az "irányt"; a C++/CLI még szabványosítva is lett…Ja, és van aki direkt IL-ben nyomja… (Brent Rector "bácsi": http://perseus.franklins.net/dotnetrocks_0035_brent_rector.pdf)Rector szerinted bolond? Szerintem egy állat! :) (Persze csak is jó értelemben!!!)Ui.Amúgy a .Net-ről nem igazán tudnék vitatkozni, mert eddig kimarad az életemből.A C++-t és a C#-ot meg nem nagyon kellene összehasonlítani.Az egyiket egy okos ember tervezte, a másikat meg egy félokos.Persze a C++ nagyon nem tökéletes, viszont a C#-ot tömegtermelésre találta ki a Microsoft, így hát nem is a vérprofik a célközönség. A vérprofi meg talán azé\’ használja, mert esetleg egyszerűbb egy feladatot megoldani benne; valahogy úgy, mint az igazi COM-os időkben, amikor a vérprofi C++-os programozók a VB-t használták COM-os feladatokban.Mikor lesz már az Office átírva .NET-re?Nem hal má\’ kia az a büdös COM? (Naaa, ez csak a viccolgatás kedvéért volt).Végül is a .NET az ugye agy COM-os DLL…Hajrá COM! (Bár ehhez sem értek…):)

     
  20. János

    június 4, 2009 at 5:15 du.

    Mondtam, attól függ, hogy mit fejlesztesz. Ha valaki úgy gondolja, hogy egy n-rétegű üzleti alkalmazást IL-be ír meg, az magára vessen. A Visual C++ managelt változata nem ért el éppen sok sikert. Senki sem akarta használni, s bár bekerült a VS-be, IDE támogatás nulla lett hozzá a C# és VB-hez képest, és nem is adnak hozzá a jövőben sem (értsd se WPF, se ASP.NET, stb.). Alacsonyszintű dolgokat természetesen még mindig C/C++-ban éri meg fejleszteni, de nekem senki ne mondja, hogy pusztán önkínzásból valaki nekiáll assembly-ben megírni egy üzleti alkalmazást."A C++-t és a C#-ot meg nem nagyon kellene összehasonlítani.Az egyiket egy okos ember tervezte, a másikat meg egy félokos."Ezt sok ember másképp látja. Heijlbergnek nagyobb tekintélye van ma MS körben, mint valaha bárkinek. Ajánlom a channel9-et."Nem hal má\’ kia az a büdös COM? (Naaa, ez csak a viccolgatás kedvéért volt).Végül is a .NET az ugye agy COM-os DLL…Hajrá COM! (Bár ehhez sem értek…)"Jézusom! Látom bele vagy már nagyon fásulva ebbe a "csak az a jó, aki C/C++-t használ" eszmébe. Jó az, nincs azzal semmi gond, téged nyilván az a terület érdekel és éltet, de egyáltalán nincs abban igazad, hogy más területeken nincsenek igazán okos emberek. Írj egy C# 4.0-át, ha megcsinálod, akkor profi vagy és joggal mondhatod a másikra, hogy félig okos.

     
  21. Péter

    június 4, 2009 at 10:18 du.

    Hát kedves Zsolt!Szerintem tök mindegy mit használsz, mindenképpen bolond leszel!A lényeg, a célnak legmegfelelőbb eszközt választani, és ez üzleti alkalmazások terén egyértelműen a .net, mindenféle com, com+ nélkül. Jöhetsz a C++ mániáddal, meg a com-al, de egy komolyabb üzleti alkalmazás esetén úgy fogsz ****-ni mint a torkos borz! Ugyanis a hozzászólásaidból látszik, hogy közöd nem volt még hasonlóhoz.Mondok neked egy példát:5 évvel ezelőtt kerültem egy kis céghez, akkor kb 1 éve .neteztem kezdőként.Egy kedves 40 éves őskövület néni volt az architect, aki szentül hitt a com+-ban, mert ő annyira tapasztalt (előtte c++-ott ám!, bezony!!!), és hajthatatlan volt.Menetközben kiderült, hogy fingja sincs a .nethez, és a com+-hoz se.Én léptem kb 7-8 hónap múlva, mert láttam, hogy értelme nincs maradni ilyen környezetben.Azóta 3 nagyobb banki projekten dolgoztam, és mindegyik projekt sikeres volt!Na ahol kezdőként dolgoztam, ott menetközben feloszlott a fejlesztőcsapat, és a kedves kapitány is távozott a hajóról.Tudod mekkora szívás egy kb. 50-60 projektből (modulból) álló solution fordítása, amelyeket beregisztrálsz com+ alá?Elárulom, kb 70%-át viszi el a com+-al történő vacakolás a fejlesztési időnek!!!Ahhoz, hogy biztos legyen a működés minden com+ assemblyt le kell fordítani, és beregisztrálni com+ alá, és a gacba betenni!Mert van amikor elég csak az érintett assemblyvel eljátszani ezt, de van amikor totál érthetetlen módon, nem érzékelődik a változás (hiába törlöd ki a gacból, com+ alól) egyszerűen valami beragad. Most kihozta a munkát onnan egy régi munkatársam, és én is becsatlakoztam. Most éppen a win 2008 (64 bites) szerveren szívunk azzal, hogy nem működik rendesen a com+ tranzakciókezelése.Remélem egyszer összekerülsz ezzel a nénivel, és a vezetőfejlesztőd lesz, és tobzódtok a gyönyörben!!!Gratulálok!

     
  22. Oszkár

    június 5, 2009 at 1:35 de.

    Vááááhááá, mindig elő lehet kaparni valahonnan egy fanatikus BS-hívőt, aki szerint a C++ és Bjarne a Messiás, aki eljött közénk és soha senki nem fog úgy programozni mint ő. Ebbe bele kell nyugodni, mindig lesznek olyanok, akik szerint a GUI meg a NUI baromság, és az igazi Assembly írás a valódi szörőstökűek sportja :P

     
  23. Szőke László Zsolt

    június 5, 2009 at 10:12 de.

    Teccik (így két c-vel), amikor névtelen emberek vetődnek árnyékra.Többnyire nullajani clipperes képességű programolók (így l-lel).Bjarne Stroustrup és Hejlsberg között elég nagy a különbség. Az pedig, hogy microsoftos körökben mennyire elismert Hejlsberg: könyörgöm! Amikor van választási lehetőség, senki és semmi nem köti az ember kezét, hogy a büdös bánatban sikerült kiizzadnia ezt: const i: integer = 123; ??? Szánalmas!Újra megkérdezem: az Office-t mikor írják már át .Net-re?Egy kis C++ ízelítő (cégek, alkalmazások), hadd izzón a légkör:- UI (Microsoft Windows, KDE)- Adobe Photoshop, Acrobat, Illustrator, inDesign- Autodesk (CAD), Dassault Systems (Catia)- CERN- Google (Search Engine, Desktop Search), Microsoft (Desktop Search)- Microsoft IIS- Microsoft Office, Sun Open Office- Microsoft Visual C++, Basic, C#- Microsoft SQL Server, Oracle RDBMS, MySQL, SAP DB- Games (játékok)- Windows Internet Explorer, Mozilla FireFox, Safari, Google Chrome, Opera, Opera Mini- GPS (Garmin, TomTom)- Microsoft Windows, IBM OS/400, Symbian, BlackBerry (a többi OS-meg csak azé’ C, mert az hordozhatóbb)- Microsoft Windows Media Player, Apple iPod, Winamp- Microsoft .NET CLR, Java Virtual MachineClipperes képességűek, csemegézzetek!http://www.research.att.com/~bs/applications.htmlhttp://www.lextrait.com/vincent/implementations.htmlIgen, ügyvitelre tökéletes választás a .Net. A Microsoft pontosan arra találta ki, hogy a gyengébb képességű programozókat is hatékonyan lehessen bevonni a „munkába”. Kb. ennyi! Azt, meg hogy másra is lehet használni? Persze! És hogy az ügyvitelre miért .Net a megoldás? Mert gyenge képességűből sokkal több van, és az ügyviteli projektnél is számítanak a költségek.

     
  24. Péter

    június 5, 2009 at 11:51 de.

    "Többnyire nullajani clipperes képességű programolók (így l-lel)."Clipperhez életemben nem nyúltam, nem tudom honnan veszed."gen, ügyvitelre tökéletes választás a .Net. A Microsoft pontosan arra találta ki, hogy a gyengébb képességű programozókat is hatékonyan lehessen bevonni a „munkába”. Kb. ennyi! Azt, meg hogy másra is lehet használni? Persze! És hogy az ügyvitelre miért .Net a megoldás? Mert gyenge képességűből sokkal több van, és az ügyviteli projektnél is számítanak a költségek."Akkor meg mért olvasol .net-es blogokat, leírásokat?Mars vissza a 386-os gépedhez, és kódold le a legújabb linuxot, ami hiper szuper lesz, és dicsekedj a munkanélküli haverjaidnak, akik szintén meg nem értett zsenik…

     
  25. Péter

    június 5, 2009 at 12:33 du.

    Ja amúgy honnan tudod, hogy milyen képességű egy clipper programozó?Csak nem próbálkoztál azon a területen is, így 2009-ben? :DVagy a clipper programozóknak is próbáltad bizonygatni, hogy a c++ a menő?

     
  26. János

    június 5, 2009 at 12:41 du.

    "Amikor van választási lehetőség, senki és semmi nem köti az ember kezét…"Ez nem egészen így van, mivel mi csak MS platfomra fejlesztünk és teljesen egyértelmű, hogy a .NET a jövő ezen a vonalon. Ha megnézed, egyre lentebbi rétegeket cserélnek ki a Windows-ban is menedzselt kódra. Pont nemrég volt róla szó, hogy az MS legnagyobb tévedése saját bevallásuk szerint is a natív C/C++-ban megírt Win32 API volt. Ezzel szopnak most is a Win7 esetében, de be lett ígérve, hogy szépen lassan kicserélik menedzselt könyvtárakra az egészet a Win7 utáni OS-ekben.Az Office miért nincs .NET-ben? A válasz az interoperabilitás (http://support.microsoft.com/default.aspx/kb/311452). Mivel rengeteg alkalmazás épül az Office COM-os világa köré (mind natív, mind managed alkalmazások), nincs lehetősége a cégnek változtatni ezen. A .NET pedig COM interopon keresztül simán képes az együttműködést a két teljesen/radikálisan másfajta modell között biztosítani.Csupán stratégia döntések állnak az egész mögött, hogy natív alkalmazásokat fejlesztők is tudják használni az újdonságokat. Vegyük például a Sync Frameworkot. Tipikusan jó példája annak, hogy készítettek egy natív COM könyvtárat (VC++-ban), majd fölé húztak egy menedzselt réteget (C#-ban). Persze visszafele is működik az interop, tehát egy natív alkalmazás is képes menedzselt könyvtárakat használni (feltéve ha a menedzselt könyvtár osztályai úgy vannak megírva). Ez utóbbi viszont nem járható út, mivel nem várható el, hogy egy natív alkalmazás mellé még telepítsék a .NET-et is.Csak azt próbálom az egészből kihozni, hogy a .NET-nek nem csupán az a célja, hogy Pistike könnyebben készítsen üzleti alkalmazásokat, hanem sokkal inkább az, hogy több millió hibalehetőséget kizárva egy olyan osztálykönyvtárat nyújtson, mely a fejlesztés minden területét, beleértve a heterogén rendszerek közötti kommunikációt is leegyszerűsítse. Nem mindegy, hogy 1 év alatt szállítasz le egy megrendelést, vagy 1-2 hónap alatt, és még minőségi szempontból is jobbak a mutatók, mivel itt jól bejáratott/agyonra tesztelt rendszerekről van szó.Eljön az idő, amikor minden MS alkalmazás menedzselt kódalapú lesz. Volt már erre kezdeményezés OS szinten is (http://research.microsoft.com/en-us/projects/singularity/), bár tény, hogy minimális natív C/C++ szükséges lesz mindig is a legalsó rétegekben. Viszont egy menedzselt kódnak rengeteg előnye van, amit natív kóddal sosem lesznek képesek kiküszöbölni, mint pl. JIT (Just In Time Compiler) teljesítmény optimalizációk, illetve kód ellenőrzés. Persze nyilván van egy minimális overhead (http://msdn.microsoft.com/en-us/library/ht8ecch6(VS.71).aspx).Nem kell ezt ennyire leegyszerűsíteni. A .NET jóval többről szól, mint Pistike ügyviteli rendszerének megtervezése: http://research.microsoft.com/en-us/um/cambridge/projects/infernet/

     
  27. axen

    június 5, 2009 at 12:58 du.

    Ezek szerint a Crytek 3-at és a Tech 6-ot már .NET-ben élvezhetjük? Na erre kíváncsi leszek!

     
  28. János

    június 5, 2009 at 1:40 du.

    Nyilván a managed DirectX (http://msdn.microsoft.com/en-us/directx/default.aspx), illetve az XNA Framework (http://msdn.microsoft.com/en-us/xna/default.aspx) pont ezért született. Azt viszont, hogy ezeket mennyire látják jónak élesbe használni, nem tudom. A menedzselt XNA Frameworknek megvan többek azon előnye is, hogy a rajta megírt alkalmazások futnak nemcsak PC-n, hanem XBOX-on is.Egyébként pont ez lenne az egyik kulcsfontosságú tényezője a menedzselt alkalmazásoknak: egy egységes futtatási rendszer, amely minden eszközt összekapcsol a Világban. Ha pl. emlékszünk, van olyan is, hogy .NET Micro Framework (http://www.microsoft.com/netmf/about/default.mspx).

     
  29. axen

    június 5, 2009 at 1:46 du.

    MDX már megszűnt. Az XNA, ahogy a WPF is a natív DirectX-re épül. Ha .NET felé halad az MS, akkor a DirectX-et is teljesen át kéne írni managed-re, amit azért kétlek, hogy meg fog tenni, mivel az MS-nek a 3D szoftverek miatt is csurran-cseppen bevétel.Biztos, hogy C++ elérés is lesz a win32 utáni rendszerben, nem emulált, "rendes". lletve itt a Direct2D is ez is színtiszta natív kód profi desktop programokhoz, amit interoppal be lehet húzni D3D alkalmazásba is. Ez olyasmi lesz, mint a WPF interop XNA-ba. Ja és persze a közelgő DirectX 11-nek sincs semmi köze a .NET-hez és azt már nem 2 évre tervezik. Ezzel nem akarok Szőke elvtárs oldalára állni, csak azt vázolom, hogy némi igazság van abban amit ír, csak ezt olyan hülyén teszi, hogy mulatságos. :D

     
  30. axen

    június 5, 2009 at 1:59 du.

    JJ még 1: Xbox-on az a baj, hogy CF van, az meg ultragagyi, ha floating point számolást kell csinálni, ami egy komolyabb programban minden milliomod másodpercben előfordul. Gyakhatom a 3 magos hiperthread procit, ha összerosálja magát a .NET alatt. Memória kezelésre sincs semmilyen megoldás. ContentPipeline van: egyszer betöltesz mindent a játék elején, azt jó napot. A Game Developers bemutatón is az egyik játékfejlesztőt megkérdezték az XNA-ról. Egy vigyort eleresztett és azt mondta aranyos.Csak gondoltam leírom, mert az szép, hogy az ügyviteli oldalt láttod, de a másik oldalról nem nagyon tudsz semmit és így te is kezdesz próféta lenni szőke módra.

     
  31. János

    június 5, 2009 at 3:13 du.

    Nem válok semmilyen profétává. Oda is írtam, hogy: "Azt viszont, hogy ezeket mennyire látják jónak élesbe használni, nem tudom.". Én csak azt mondtam, hogy létezik ilyen is, nem azt, hogy én játékfejlesztéssel foglalkozom és érdemben túl sok mindent tudok erről nyilatkozni azon kívül amit az MSDN-en írnak.A másik meg, azt is leszögeztem, hogy bizonyos teljesítmény-kritikus területeken elkerülhetetlen a natív kód használata. Senki sem beszélt arról, hogy ezt teljesen meg kell/kellene szüntetni. De nyilván MS-en belül a mainstream most és a jövőben a .NET lesz, bárki bármit is mond.Ezért mondtam, hogy felesleges háborúzni, mert mindkét oldalon van igazság, csak éppen nem ekkora arccal kellene ezt előadni, mindenki mást lehülyézve.

     
  32. Szőke László Zsolt

    június 5, 2009 at 3:31 du.

    Jani!Te tényleg bele vagy pistulva a .Net-be meg a Hejlsberg emberbe, ha a Windows Live-odra is felraktad őt.http://cid-c3e2695fc6f7b0a4.skydrive.live.com/self.aspx/.res/C3E2695FC6F7B0A4!775/C3E2695FC6F7B0A4!780

     
  33. axen

    június 5, 2009 at 3:49 du.

    Én csak azért írtam ezeket, mert mindkét "oldalon" fejlesztek. Webnél és ügyvitelnél pisztollyal se tudnának rávenni a C++ használatára, de 3D program az más teljesen világ. Ilyen szempontól most is a .NET a mainstream, de 3D vonalon nem hiszem,hogy valaha is az lesz. Szőke elvtárs mi bajod a Hejlsberg előadásával? Nézd meg inkább a "The future of C#" videót is. Bjrane papa meg igazán meghallgathatná a pórnépet is, hogy legyen például property. ;) Nem tudom VC++ be beleteszik e MS-ék, nem lenne rossz. Van viszont parallel computing, úgyhogy örüljünk. :D

     
  34. János

    június 5, 2009 at 3:50 du.

    Nem vagyok belebondulva, de ami érdekes, azt próbálom kiragadni. Az a videó interjú pont a nyelvek fejlődéséről szólt:http://www.delphi.org/2008/11/anders-hejlsbergs-on-programming-languages/

     
  35. axen

    június 5, 2009 at 3:58 du.

    Ja igen, hogy 10 év múlva F# lesz? Abban a hieroglifás, halálfejes izében sose írnék ügyvitelt, nem arra való. :)

     
  36. János

    június 5, 2009 at 4:12 du.

    Nem is tipikusan arra van, de erről már chikk be is számolt: http://unbornchikken.spaces.live.com/blog/cns!1BE6B7B78A988D1F!685.entry

     
  37. János

    június 5, 2009 at 4:41 du.

    Itt "The Future of C#" videó is (ha már axen megemlítette):http://channel9.msdn.com/pdc2008/TL16/"Van viszont parallel computing, úgyhogy örüljünk"De ez sem pusztán csak MS natív C++ feature lesz.A parallel computing most felkapott mindenhol:http://blogs.embarcadero.com/abauer/category/parallel-programminghttp://cc.embarcadero.com/item/25101C++Builder-ben pedig létezik a property-k fogalma. Biztos Heijlsberg megőrült, hogy kitalálta ezt a Delphiben és utána ugyanez a cég bevezette ezt a C++ világban is: http://www.codegear.com/en/products/cppbuilder. Sőt, a C++Builder 2009 már támogatja az új C++0x szabványokat is: http://en.wikipedia.org/wiki/C%2B%2B0xItt van erről is a videó:http://video.codegear.com/Tiburon/WhatsNewInCppBuilderCpp0xLanguageSupport/WhatsNewInCppBuilderCpp0xLanguageSupport.html

     
  38. Szőke László Zsolt

    június 5, 2009 at 5:34 du.

    Amit kiragadtál itt, az egy videoból kivágott képkoczka (így cz-vel), amin „véletlenül” pont Hejlsberg látható. Nekem ez úgy jön le, hogy odavagy érte. Én is csípem Stroustrupot, de azé’ a Windows Live-omra nem rakom ki a képét.http://cid-c3e2695fc6f7b0a4.skydrive.live.com/self.aspx/.res/C3E2695FC6F7B0A4!775/C3E2695FC6F7B0A4!780+++A C++ nagyon nem karácsonyfa.Én megértem azt, hogy egy nyelv fejlődése C++ esetén úgy történik, hogy megszavazza azt a szabványtestület. Valahogy nekik nem fontos a property-szintaxis, vagy egyszerűen nem illik bele a képbe (, nem vagyok én sem nyelvész).http://www.research.att.com/~bs/C++0xFAQ.htmlA C++ nem egy "tulajdonosi" nyelv, nem úgy fejlődik, hogy Pistike szól. A C#-pal is azt csinál a Microsoft, amit akar…Axen!A Visual C++-ban régóta van property, az más kérdés, hogy nem szabványos, ezért nem biztos, hogy megéri használni, ha a hordozható kód követelmény. És ha nagyon hiányzik és szabványos akarsz lenni, akkor templéttel is pótolhatod, bár nem tiszta és száraz érzés, ugye! :) Sokan bizonyára hiányolják a finallyt is, mikor átpróbálnak ülni C#-ból C++-ba. És ez csak egy példa.http://www.research.att.com/~bs/bs_faq2.html#finallyA Microsoft meg tényleg üzletileg kezeli a dolgot, mert a __finally is régóta része a Visual C++-nak.+++A C++-t programozók készítik programozóknak. A Microsoft viszont egy üzleti vállalkozás; hadd ismételjem magam: a _tömegeknek_ készítenek technológiákat. Ja, és még mielőtt beszól valaki az iménti mondatért is: a Microsoft technológiai cég, és kiváló technológiákat készít, de a tömegekre összpontosít. És ez így teljesen rendben is van.Hajrá Microsoft! (Igen, csípem őket!)

     
  39. János

    június 5, 2009 at 5:51 du.

    "Amit kiragadtál itt, az egy videoból kivágott képkoczka (így cz-vel), amin „véletlenül” pont Hejlsberg látható. Nekem ez úgy jön le, hogy odavagy érte. Én is csípem Stroustrupot, de azé’ a Windows Live-omra nem rakom ki a képét."A videót linkeltem be még anno általa (az más, hogy a Live Writer az albumok közé teszi a képet és te épp erre bukkantál rá): http://jankajanos.spaces.live.com/blog/cns!C3E2695FC6F7B0A4!765.entry

     
  40. János

    június 5, 2009 at 6:30 du.

    "A C++ nagyon nem karácsonyfa."Ahhoz képest a C++0x szabványok támogatása jóval több mindennel tele fogja aggatni azt, mint a Delphi esetében a Prism-et a RemObjects. Mellesleg jegyzem meg, hogy ez sem olyan dolog, hogy bármit beletesznek a nyelvbe pusztán betelefonálás alapján. Mindkét dolog olyan feature volt, amit a C# támogatott már, mint pl. volatile fieldek. Nem értem mi ebben a rossz? Pont örülni kellene, mert a jó ötleteket és különösen a hiányosságokat viszonylag gyorsan pótolják. Ez a közösségi munka, hogy idézellek: "A C++-t programozók készítik programozóknak.".Az már teljes más kérdés, hogy neked a nyelv szintaxisa nem tetszik. De ne keverjük a szezont a fazonnal!

     
  41. Szőke László Zsolt

    június 5, 2009 at 6:37 du.

    Láttál már karácsonyfát, amit többen álltak neki díszíteni?Mit láttál? Igen, egy összhangtalan maszlagot, amit ha innen nézek is ocsmányul néz ki, meg ha amonnan nézem is ocsmányul néz ki.BJ: „The standard is expected to be ready for final national votes in 2009 …”Igen, itt meg arról van szó, hogy ha minden „díszaggató” „szépnek” látja az eredményt.

     
  42. János

    június 5, 2009 at 7:02 du.

    Nyugodt lehetsz, hogy túl sok választási lehetőség nem lesz, ha már az MS a VC++ 2010-be, illetve a Borland/CodeGear a C++Builder 2009-be elkezdte beépíteni és már kész terméket is adtak el így. Szó nincs itt a C++ társadalom hozzájárulásáról. Vagy talán úgy gondolod, hogy majd utólagosan kiveszik a nyelvből, mert néhány veteránnak nem tetszik? Az még poénosabb lenne.

     
  43. axen

    június 5, 2009 at 10:00 du.

    Az a __declspec-es izé az azért még messzi van a property-től, ahogy normális event sincs még. Ilyen alapon lehetne mondani, hogy C# ban van többszörös öröklés, csak össze-vissza kell extension-özni mindent. Az se az igazi.A C++ nél igaz az is, hogy szabvány az van, csak ezt mindenki úgy valósítja meg, ahogy akarja.Sajnos semmi se tökéletes, de a cél szentesíti az eszközt. :P

     
  44. János

    június 6, 2009 at 12:03 de.

    Erre mondják, hogy szabvány ide vagy oda, nincs két egyforma compiler (se C++, Pascal…). Kapásból tudok rá példát: DirectShow SDK. Ezzel annak idején chikk szívott rendesen, amikor C++Builderből akarta használni a VC++-os header fájlokat.A C# nyelven erősen látszik, hogy Heijlsberg keze van a dologban. Rengeteg elemet a Delphiből vett át, mint pl. tulajdonságok, indexelt tulajdonságok, események, is/as operátorok, alapértelmezett metódus-paraméterek (C# 4.0), boxing (Delphi variantok), new (Delphi reintroduce), kivételkezelés /C#: try-catch-finally; Delphi try-except-finally/, …Az azért jó húzás volt anno, hogy ilyenekkel próbálkoztak: http://msdn.microsoft.com/en-us/vstudio/aa700920.aspx

     
  45. unbornchikken

    június 6, 2009 at 9:16 de.

    :) Akkora Szentírás volt a C++ szabvány, hogy a különböző értelmezések még abban sem értettek egyet, hogy egy for ciklustörzsben deklarált változó tulajdonképpen honnan is látszik. Vagy hogy egy const reference-t miképpen kell értelmezni. Ezért volt a Builderen egy olyan kapcsoló, hogy MFC Compatibility. Persze a DirectShow SDK headereitől még így is sikítófrászt kapott a Builder, 2 hetem ment el rá, mire sikerült portolni. Hol volt akkor még a CLI? Kőbaltás idők. Hiányzik a frásznak.

     
  46. unbornchikken

    június 6, 2009 at 9:19 de.

    “It’s more important that you learn how to program and solve problems in general than it is that you learn how to implement systems that handle memory leaks and dangling pointers in C++.”- Josh Williams

     
  47. unbornchikken

    június 6, 2009 at 2:45 du.

    Ajánlom a figyelmetekbe ezt a sztorit:http://blogs.msdn.com/ricom/archive/2005/05/19/420158.aspxUnmanaged v1: 1.328 (sec)Unoptimized Managed port of v1: 0.124 (sec)Optimized Managed port of v1: 0.093 (sec)…Unmanaged v6: 0.062 (sec) YAY! \\o/Az ár:Write his own file/io stuff Write his own string class Write his own allocator Write his own international mappingInnen gratulálok! Itt az összefoglaló:http://blogs.msdn.com/ricom/archive/2005/05/10/416151.aspx

     
  48. Szőke László Zsolt

    június 8, 2009 at 12:10 de.

    Jani! „túl sok választási lehetőség nem lesz…” Nagyon vicces lenne, ha a Microsoft határozná meg, hogy mivé alakuljon a C++!Várom má’ nagyon, hogy mikor jön el az az idő, amikor Herb Sutter majd jól feláll a szavazásnál, és kijelenti, hogy mán pedig uraim az lesz itten amit mi a Microsoftnál elgondutunk -Herbnek egy csöppet parasztgyerek formája van- a C++-szal kapcsolatban.Teccet, amikor anno javasolta, hogy dobják ki az export-ot.Tudosítás; Herb bepróbálkozik a büdös exporttal:- dobjuk ki a büdös exportot!- kórusban: persze Herb, jóóó van, nyugogyGYÁÁ le SZÉpen!- :( De az is lehet, hogy így történt:- dobjuk ki a büdös exportot!- kórusban: persze Herb, jóóó van, nyugogyGYÁÁ le SZÉpen!- :) Általában mosolyog mindenen.Véleményem szerint a C++ szabvánnyal kapcsolatban, alapjában téves elképzeléseitek vannak.Mindenki vidámkodik:- mennyi idősek is vagytok? :)- 20 évesek vagyunk? :)- és benőtt má’ a fejetek lágya? :)- nem, de sok sört iszunk! :)Jani! Bocs hogy ezt mondom, de rajtad láccik meg legjobban, no nem a sörivás, hanem hogy még csak 20 éves vagy, meg az is, hogy azt hiszed, hogy Microsoft az egész világ.Én is nagyon csípem a Microsoftot, remek cég, de azért jó, hogy ott az IBM, a Sun, Larry Ellison, a Microsoft-fóbiában szenvedő EU, meg most már a oroszok is, ja és Kínát ki ne felejcsem a sorból. +++Megnemszületett! Jól látom? 1,5-szer lassabb az agyon JIT-telt C#, mint a tetves C++?Ha így van, akkor én is hadd gratulálok ehhez a teljesítményhez!Ajajjj, dogozzunk!

     
  49. János

    június 8, 2009 at 1:38 de.

    "Nagyon vicces lenne, ha a Microsoft határozná meg, hogy mivé alakuljon a C++!"Az én meglátásom szerint mindent a piac diktál. Mivel elég sokan használnak MS szoftverek, s ha ők bármikor azt mondják, hogy kell egy ilyen és ilyen feature a nyelvbe, akkor kénytelen lesz a többi MS platformot támogató cég is implementálni a saját compiler-ébe (feltéve, hogy nem akarják elveszteni mindennapi kenyerüket). Volt már erre jó példa: .NET CLR 2.0. A Microsoft azt mondta, hogy kellenek generikus típusok és nincs mese scrácok, vagy implementáljátok ezt a saját fordítóitokba, vagy hoppon maradtok."Jani! Bocs hogy ezt mondom, de rajtad láccik meg legjobban, no nem a sörivás, hanem hogy még csak 20 éves vagy…"Majdnem, 25."…azt hiszed, hogy Microsoft az egész világ"Nem az? Voltak nekem előtte Borland-os élményeim is, de még milyenek! ;) Félretéve a tréfát, az a "fiatalosság" és lendület ami jellemzi az egész MS csapatot (idehaza is), az fogott meg benne. + Imádom az illúziókat, már maga a szlogen is: "kezébe adjuk az álmait". Na ezek a videók, amik megringatnak engem:http://www.microsoft.com/video/en/us/details/e7728af1-3fe4-4e25-a907-3dbf689fe11a?vp_evt=eref&vp_video=Productivity+Future+VisionEzek olyan felemelő pillanatok, hogy esküszöm néha amikor ilyeneket látok kicsordul a könny a szememből. Már maga az tetszik, hogy van egyfajta elképzelésük mindenről, mint pl. hol fogunk tartani 5-10-x éven belül, és ez a dinamizmus sose hagyja el őket mert szentül hisznek abban, hogy ezek a közeljövőben populáris dolgokká válnak. Ha elmész idehaza is egy MS előadásra, láthatod az előadókon is ugyanezt. Hisznek mindabban, amit ez a cég most és a közeljövőben le fog tenni az asztalra. De mint mondottad, én még huszonéves koraimat élem, így hát szükségem van ezekra az illúziókra:http://www.microsoft.com/hun/realize/main.htmlÉljen a fiatalság! ;)

     
  50. Szőke László Zsolt

    június 8, 2009 at 1:59 de.

    "Nem az?";)Csak majdnem az, és ez így jól is van (szerintem).Én is microsoftos vagyok "lélelkben".Egy picit én is értem a Microsoftot. A Lurdyban ott szoktam lenni minden rendezvényükön.A linuxosokon pontosan azért röhögtem sokáig, mert nem tudják, hogy mit is akarnak valójában.Viszont minden változik, és tévedésbe kerül az, aki azt hiszi, hogy csak a Microsoft tudja, hogy mit is akar.De nem féltem őket, nagyon jó csapat, kiváló szakemberek minden téren.

     
  51. Szőke László Zsolt

    június 8, 2009 at 2:49 de.

    Axen!"Az a __declspec-es izé az azért még messzi van a property-től"<prop_példa lang=”VC++6”>class Shape {public:    Shape():m_x(0),m_y(0){}    ~Shape(){}    __declspec( property(get=get_x,put=set_x)) int x;    int get_x() const {return m_x;}    void set_x(const int x) {m_x = x;}    __declspec( property(get=get_y,put=set_y)) int y;    int get_y() const {return m_y;}    void set_y(const int y) {m_y = y;}private:    int m_x;    int m_y;};int main(int argc, char* argv[]){    Shape shape;    shape.x = 1;    shape.y = 2;    int x = shape.x;    int y = shape.y;    x += shape.x;    y *= shape.y;    ++shape.x;    return 0;}</prop_példa>Úgy kb. mennyire van „messzi” a fenti példa?1998-ban jött ki a VS6, úgy 11 évre. Ja ez tényleg „messzi” van már.;)

     
  52. axen

    június 8, 2009 at 8:26 de.

    Szőke László Zsolt képe: Nem érted, amit írok. Az a krix-krax, amit írtál nem property, hanem egy rakás fos.A property az kb így néz ki:public int MyProperty { get; private set; }A programozási nyelv egyik célja, hogy érthető legyen az ember számára. Az, hogy 100 féle krix-krax-al leírsz valamit, amire egy sor is elég az messzi van még a teljességtől.Egyébként a konzolra, XNA-ra visszatérve ott igen keményen belenyúlnak asm szinten is a kódba, mert még a devkittel se lehet megfelelően optimalizálni. Szóval ilyen .NET, meg C# az életben nem lesz életképes konzolon. PC-n se valószínű komolyabb 3D programoknál.

     
  53. Szőke László Zsolt

    június 8, 2009 at 11:01 de.

    Természetesen, ha egy nyelv támogatja a property-szintaxist, akkor azé’ annak illik elegánsnak kinéznie a kódban. A C++ egyáltalán nem támogatja a property-szintaxist, a VC++ pedig kevésbé, mint a C#.Ez a kevésbé támogatás meglátszik a kódon, de azt állítani, hogy „messzi” van a propertytől, hatáskeltés!Kisebb affinitással rendelkezőknek természetesen minden C++ kód krix-kraxnak tűnhet. Az átláthatóságot esetleg a makrók felhasználásával lehet fokozni, így a csapatban lévő gyengébb képességű, amúgy C++-t értő programolóknak is és magunknak is örömet szerezhetünk a propertyk használata közben.class Shape {public:    Shape():m_x(0),m_y(0),m_z(0){}    ~Shape(){}    PROPERTY(int, x);    PROPERTY_READONLY(int, y);    PROPERTY_WRITEONLY(int, z);};

     
  54. axen

    június 8, 2009 at 11:38 de.

    Attól, hogy körbehackeled az egészet még nem lesz jobb, robusztusabb stb. Maradok gyengébb képességű property nélküli.

     
  55. Szőke László Zsolt

    június 8, 2009 at 11:41 de.

    Ez esetben a makrók pont, hogy robosztusabbá tették a property használatát.Persze a csapatban a makrókat ne a csapat gyengébb képességű programolói készítsék!:)

     
  56. axen

    június 10, 2009 at 7:31 du.

    "a makrók pont, hogy robosztusabbá tették a property használatát"Ekkora hülyeséget is rég olvastam már. Aki csak tudja kerüli a makrókat nem véletlenül!

     
  57. Szőke László Zsolt

    június 12, 2009 at 7:27 du.

    Szelektív olvasás, axenka! …Persze nem szelektíven olvaso\’, csak szelektíven idéze\’, de ettől még nem lesz igazad, EZ ESETBEN.Elmehetsz politikusnak: hatáskeltésben jó vagy.Amúgy te is a 20-as éveidet taposod, ugye?!

     
  58. János

    június 29, 2009 at 5:41 du.

    Szerintem meg ez az egész nem feltétlen képesség kérdése. Bárki képes megérteni, ha időt szán rá, de ezeket a nyelvi fícsöröket nem azért találták ki, mert "hülyék" az emberek, hanem minek ezzel foglalkozni, amikor van épp így is elég munka. A pénzt nem ezért adják (legalábbis nekem nem), hogy minden szir-szart megírjak, ami egy nyelvből hiányzik. Mellesleg pont korábban volt már róla szó, hogy egy nyelv ismerete édes kevés ahhoz, hogy megélj. A programozás nem csak az általad kedvelt nyelv ismeretéről szól, hanem annak a platformnak, OS-nek, stb. mély ismeretéről is, amire fejlesztesz. Mindez még kiegészül különböző programtervezési minták ismeretével is. Sokkal összetettebb ez az egész kép, mint egy nyelv ismerete, legyen az C/C++/Pascal/VB/Python/Java/Perl/PHP/… . Véleményem szerint, akiben van kitartás, elhivatottság, "szerelem" a szakma iránt, az simán képes egy elfogadható szintre képezni magát pusztán önszorgalomból.

     
  59. János

    június 29, 2009 at 5:53 du.

    "Amúgy te is a 20-as éveidet taposod, ugye?!"Még mindig nem egészen értem, hogy mi köze van a kornak ehhez. Rengeteg jó képességő (30-40 éves), sőt idősebb fejlesztő van, akik az MS-en belül, vagy közvetlen velük kapcsolatban állva fejlesztenek .NET-ben C#-ot használva. Érdekes módon egyik sem tért vissza a kőkorszakba, pedig előtte C++-ban fejlesztettek nagy multi cégeknél. Ez körülbelül olyan hasonlat, hogy én se járok trabanttal, hiába cserélték ki benne a motort négyüteműre vagy raktak bele sötétített üvegeket. A C# kifejezőbb, néhol tömörebb, átláthatóbb és szebb nyelv is, mint a C/C++/Delphi/VB. Ezt állítom még akkor is, ha hozzám a Delphi közel is áll/állt.

     
  60. axen

    július 7, 2009 at 8:48 du.

    "Ez körülbelül olyan hasonlat, hogy én se járok trabanttal, hiába cserélték ki benne a motort négyüteműre vagy raktak bele sötétített üvegeket. A C# kifejezőbb, néhol tömörebb, átláthatóbb és szebb nyelv is, mint a C/C++/Delphi/VB. Ezt állítom még akkor is, ha hozzám a Delphi közel is áll/állt."Najó, de ez is attól függ honnan nézzük. Egy komoly 3D programban a C# a trabant. ;) A legújabb OpenCL szabvány mégcsak nem is C++, hanem C nyelvű intefész. Ez erősen a CPU/GPU birizgálására való. A kényelmet néha fel kell áldozni a sebesség oltárán. Ilyen szempontból még az STL is egy kényelmes embereknek való, lassú megoldás. Lehet sokmindent lecsrélnek .NET-es megoldásra a win-ben, de a doom4-et azért nem abban fogjuk megcsodálni ebben biztos vagyok.Másrészt viszont Szőke elvtárs már megint lenéz mindenkit, aki nem C++ ozik. Egyáltalán nem kevesebb tudás .NET-ben ügyködni, sőt inkább ahhoz sokkal sokrétűbb tudás kell, mint egy csupasz C++ hoz. A teljes .NET doksi megeszi reggelire a Bjarne két kis csöppnyi kötetét az STL-el, meg a C++0x-el együtt. Úgyhogy én fejet hajtok az előtt, aki a WCF, xaml, meg még vagy 26 féle technológiát ken-vág úgy, hogy közben naprakész C# 4.0-ban is. Ehhez képest a C++, meg 1-2 lib nulla tudás.

     

Hozzászólás

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

You are commenting using your WordPress.com account. Kilépés / Módosítás )

Twitter kép

You are commenting using your Twitter account. Kilépés / Módosítás )

Facebook kép

You are commenting using your Facebook account. Kilépés / Módosítás )

Google+ kép

You are commenting using your Google+ account. Kilépés / Módosítás )

Kapcsolódás: %s

 
Követés

Értesítést küldünk minden új bejegyzésről a megadott e-mail címre.

%d blogger ezt szereti: