Beberapa alasan untuk melupakan PascalABC.Net

Pendahuluan


Masa Pascal lama dan baik sudah berakhir. Waktunya telah tiba untuk lingkungan pengembangan baru untuk bahasa ini. Banyak dialek bahasa ini telah muncul. Meskipun mereka semua memiliki kesamaan. Hari ini kita akan berbicara tentang dialek PascalABC.Net dan mengapa Anda harus meninggalkannya jika Anda serius ingin melakukan pemrograman dan berpikir bahwa ini adalah masa depan Anda.

Penampilan pertama


Bayangkan Anda seorang pemula. Bahkan jika tidak. Bayangkan Anda datang ke dunia pemrograman untuk pertama kalinya dan hal pertama yang Anda pelajari adalah bahasa Pascal. Dan mereka mengatakan, tentu saja, untuk menulis di lingkungan PascalABC.Net. Nah, Anda duduk dan mulai perlahan belajar bahasa itu sendiri. Keahlian Anda meningkat dan Anda semakin ingin mempelajari sesuatu yang baru. Dan sekarang Anda bukan pemula yang sama dengan Anda di awal, tetapi seseorang dengan tingkat rata-rata pengetahuan pemrograman. Dan mulai dari saat ini - Anda mulai merasa tidak nyaman ketika bekerja di PascalABC.Net. Dan semakin jauh studi tentang bahasa dan platform .Net semakin maju, semakin kuat Anda merasa bahwa menulis tidak nyaman. Anda mulai memperhatikan beberapa ketidakstabilan IDE itu sendiri. Ngomong-ngomong, Anda mungkin sudah mengalami masalah ketika menekan Ctrl + Z - menabrak kesalahan di PascalABC.Net sendiri ketika mencoba mengurungkan tindakan, setelah itu tidak ada masalah dalam mengedit kode. Ini hanya satu dari sedikit masalah yang harus Anda temui.

Apa selanjutnya


Dan kemudian kesenangan dimulai. Apakah Anda pernah menggunakan generalisasi saat bekerja? Jika tidak, maka itu layak dilakukan, karena di sinilah Anda akan bertemu banyak jebakan, dan, tentu saja, ini akan mengubah pendapat positif Anda tentang PascalABC.Net menjadi sebaliknya. Sebagai contoh:

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


All Articles