Ein paar Gründe, PascalABC.Net zu vergessen

Einführung


Die Zeiten des alten und guten Pascal sind vorbei. Es ist Zeit für neue Entwicklungsumgebungen für diese Sprache. Viele Dialekte dieser Sprache sind erschienen. Obwohl sie alle etwas gemeinsam hatten. Heute werden wir über den PascalABC.Net-Dialekt sprechen und warum Sie ihn aufgeben sollten, wenn Sie ernsthaft programmieren möchten und denken, dass dies Ihre Zukunft ist.

Erster Blick


Stellen Sie sich vor, Sie sind ein Anfänger. Auch wenn es nicht so ist. Stellen Sie sich vor, Sie sind zum ersten Mal in die Welt des Programmierens gekommen und das erste, was Sie lernen müssen, ist die Pascal-Sprache. Und sie sagen natürlich, in der PascalABC.Net-Umgebung zu schreiben. Nun, Sie setzen sich und lernen langsam die Sprache selbst. Ihre Fähigkeiten steigen und Sie möchten zunehmend etwas Neues lernen. Und jetzt sind Sie nicht mehr derselbe Anfänger wie am Anfang, sondern eine Person mit durchschnittlichen Programmierkenntnissen. Und ab diesem Moment fühlen Sie sich unwohl, wenn Sie in PascalABC.Net arbeiten. Und je weiter das Studium der Sprache und der .Net-Plattform voranschreitet, desto stärker ist das Gefühl, dass das Schreiben nicht sehr bequem ist. Sie bemerken eine gewisse Instabilität der IDE selbst. Übrigens sind Sie wahrscheinlich bereits auf ein Problem gestoßen, als Sie Strg + Z gedrückt haben - ein Fehler in PascalABC.Net selbst stürzte ab, als Sie versuchten, eine Aktion rückgängig zu machen. Danach war es keine Frage mehr, den Code zu bearbeiten. Dies ist nur eines der wenigen Probleme, denen Sie begegnen müssen.

Was kommt als nächstes?


Und dann beginnt der Spaß. Haben Sie jemals Generalisierung bei der Arbeit verwendet? Wenn nicht, dann lohnt es sich, dies zu tun, denn hier werden Sie auf viele Fallstricke stoßen, und dies wird Ihre positive Meinung zu PascalABC.Net mit Sicherheit ins Gegenteil wenden. Beispielsweise:

type
  ft = () -> integer;

begin
  var f: ft := () -> 0;
  var a := Arr(0).Select&<integer,  ft>(i -> f);
end.

ft, ( — ). Select . , a , sequence of ft, sequence of integer. Select , ft TResult ( ). IDE. ? .


, . , . . — C#, PascalABC.Net ( ). , () TA, T. — TB, - T2.

type
  TA<T> = auto class
    X: T;
  end;
  
  TB<T, T2> = class(TA<T>)
    Y: T2;
    constructor Create(x: T; y: T2) := (self.X, self.Y) := (x, y);
  end;

begin
end.

. . :
Internal compiler error in module [pabcnetc.exe] :'System.Exception: System.NullReferenceException: .
PascalABCCompiler.NETGenerator.ILConverter.ConvertCommonGenericInstanceTypeMembers(ICommonGenericTypeInstance value)
PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles)
PascalABCCompiler.Compiler.Compile()'
? . Issue. : .


, ? ? , , , PascalABC.Net. :

type
  TA = class
    property Prop1: real read 0 write begin end;
  end;

begin end.

Ctrl+Shift+F ( ) :

type
  TA = class
    property Prop1: real read function#GetGen2(real read 00write 
  
  procedure#SetGen1(valuereal read 0 write begin endbegin endproperty 
  
  Prop1: real read#GetGen2 0 write#SetGen1;
end;
  TA = class
    property Prop1: real read 0 write begin end;
  end;

begin end.

, — . . , Ctrl+Z, , .


-, . ? , , . , Ctrl+Z, — , - :
. .
. , . , ( ), . , .

, ?


— C#, Microsoft , PascalABC.Net .


, , , , PascalABC.Net C# — , ( , , IDE ).

P.S. , . ( ).

Source: https://habr.com/ru/post/de417229/


All Articles