بضعة أسباب لنسيان PascalABC.Net

مقدمة


انتهى عصر باسكال القديم والجيد. لقد حان الوقت لبيئات تطوير جديدة لهذه اللغة. ظهرت العديد من لهجات هذه اللغة. على الرغم من أنهم جميعا لديهم شيء مشترك. سنتحدث اليوم عن لهجة PascalABC.Net ولماذا يجب عليك التخلي عنها إذا كنت ترغب بجدية في البرمجة وتعتقد أن هذا هو مستقبلك.

النظرة الأولى


تخيل أنك مبتدئ. حتى لو لم يكن كذلك. تخيل أنك أتيت إلى عالم البرمجة لأول مرة ، وأول شيء تحصل عليه لتعلمه هو لغة باسكال. ويقولون ، بالطبع ، أن يكتبوا في بيئة PascalABC.Net. حسنًا ، تجلس وتبدأ في تعلم اللغة ببطء. ترتفع مهارتك وتريد بشكل متزايد تعلم شيء جديد. والآن أنت لست نفس المبتدئ كما كنت في البداية ، ولكنك شخص يتمتع بمستوى متوسط ​​من معرفة البرمجة. وبدءًا من هذه اللحظة بالذات - تبدأ في الشعور ببعض الانزعاج عند العمل في PascalABC.Net. وكلما تقدمت دراسة اللغة ومنصة .Net ، كلما شعرت أن الكتابة ليست مريحة للغاية. تبدأ في ملاحظة بعض عدم الاستقرار في IDE نفسه. بالمناسبة ، ربما واجهت بالفعل مشكلة عند الضغط على Ctrl + Z - تعطل خطأ في PascalABC.Net نفسه عند محاولة التراجع عن إجراء ، وبعد ذلك لم يكن هناك أي شك في تحرير الرمز. هذه ليست سوى واحدة من المشاكل القليلة التي عليك مواجهتها.

ماذا بعد ذلك؟


ثم يبدأ المرح. هل سبق لك استخدام التعميم عند العمل؟ إذا لم يكن الأمر كذلك ، فهذا يستحق القيام به ، حيث أنه هنا ستلتقي بالعديد من المزالق ، وبالتأكيد ، سيحول هذا رأيك الإيجابي حول PascalABC.Net إلى العكس. على سبيل المثال:

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/ar417229/


All Articles