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.
, .
( ).