Présentation
L'époque du vieux et du bon Pascal est révolue. Le temps est venu pour de nouveaux environnements de développement pour ce langage. De nombreux dialectes de cette langue sont apparus. Bien qu'ils aient tous quelque chose en commun. Aujourd'hui, nous allons parler du dialecte PascalABC.Net et pourquoi vous devriez l'abandonner si vous voulez sérieusement faire de la programmation et pensez que c'est votre avenir.
Premier coup d'oeil
Imaginez que vous êtes débutant. Même si ce n'est pas le cas. Imaginez que vous êtes venu dans le monde de la programmation pour la première fois et que la première chose que vous avez appris est le langage Pascal. Et ils disent, bien sûr, d'écrire dans l'environnement PascalABC.Net. Eh bien, vous vous asseyez et commencez à apprendre lentement la langue elle-même. Vos compétences augmentent et vous souhaitez de plus en plus apprendre quelque chose de nouveau. Et maintenant, vous n'êtes pas le même débutant que vous étiez au début, mais une personne avec un niveau moyen de connaissances en programmation. Et à partir de ce moment même - vous commencez à ressentir un certain inconfort lorsque vous travaillez dans PascalABC.Net. Et plus l'étude de la langue et de la plate-forme .Net avance, plus vous sentez que l'écriture n'est pas très pratique. Vous commencez à remarquer une certaine instabilité de l'IDE lui-même. Au fait, vous avez probablement déjà rencontré un problème en appuyant sur Ctrl + Z - plantant une erreur dans PascalABC.Net lui-même lors de la tentative d'annulation d'une action, après quoi il n'était pas question de modifier le code. Ce n'est là qu'un des rares problèmes que vous devez rencontrer.
Et ensuite?
Et puis le plaisir commence. Avez-vous déjà utilisé la généralisation lorsque vous travaillez? Sinon, cela vaut la peine, car c'est ici que vous rencontrerez de nombreux pièges, et, à coup sûr, cela tournera votre opinion positive sur PascalABC.Net à l'opposé. Pour un exemple:
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.
, .
( ).