Upload
ali-dz
View
25
Download
2
Embed Size (px)
Citation preview
١صفحة رقم
مقدمة فى لغة
F# SHARP ��ت ال #F ال� � ��ت ال dotnet ا���� �� ر���� Visual Studio 2010 و�
) مجمع من مصادر و مقاالت متعددةب كتا(
صدار االول اإل
تميمعبد اهللا أيمن محمد عبد العزيز \اعداد م
لمسلمينالحقوق محفوظة لكل ا
٢٠٠٩-٣-٩ هـ الموافق ١٤٣٠ ربيع اول لعام ١٢ االثنين
٢صفحة رقم
فهرس الكتاب
.#Fمثال لكود مكتوب بلغة -١
.مقدمة منقولة من مبرمجين عرب -٢
.و مواقع اجنبية اخرىمقدمة منقولة من موقع مايكروسوفت -٣
.متطلبات التحميل و التشغيل -٤
.)VISUAL STUDIO 2008(على ) #F(تنصيب لغة -٥
.#Fببعض قواعد لغة تعريف -٦
٣صفحة رقم
#Fمثال لكود مكتوب بلغة
٤صفحة رقم
مقدمة منقولة من مبرمجين عرب
)Din-Mohamed Gamal El المشرفمنقولة من منتدى فيجويل بيسك بقلم(مقدمة
)١مقدمة رقم (
. 23. ا1 ا0/� ا0/
@0و�?<� <= ا;و>� ا;: 90 783ا�6رت 05آ�� 96A6Bا �B�0�ا ��C =ا;�6ارات ا;و #F
�تDEFه= ا ��02 H< ا;ن �<?J6> 9د?L?�ا �B�0�ت ا�� ا/2 M3 ا/2� �NC8BO =Fوا ��Cا PCO => �QA6�ا;ن ا
. �� ال don syme 63ْا�TO J ل?U2�وه? ا #F �� ء�D3 => 0 @HF96 اA6L96/ =CJ �B�03 �� Mآ W �A �� M�XO ، =@
=D�O ان Z [F2O 96/وا ��ك �Dن ه?@O �HCF]�ا �B�0�ت ا�� ا0X8ات �J.
Wات �� ال��F #
M @�A #F �F3�_ �� ن?@O أن "Static" 90 �F� او Dynamic cH< => ال �H� تd:6 اeو �e?ا Dynamic ال �� �
Python.
HF0ات اA?TFا�U � � CJ� ال MQ� ت�<� MATLAB ا�
kl�m?ا =CJ 6�F8O �B�03 �� (Functional Programming language)ال �� MQ� ML
2 P دوت >� (dotnet framework) ا�F[6ام 3 U� ا6وت >� B?ال 3H2= �5رب او اا MQ�
w�x� w �?O @?دا(profiling) 2= �5ربا �� MQ�
EA(start up) 0?مTe �eو => z��<0�6ام ا;دا9 ا]Fا� {A0| J 6اL NGEN.exe .
M @�A F# M:6اFا(integration) ��ت ا6وت >� ا;:0ي �
�� الJ �[ 23 9d�< �<9 آ�dه F# �DJ �F@D�3ذن ا1 و� ��د�Eم ا�A;ا => M THF�3.
) !!! BoriS!!! من المشرف١ردود على المقدمة رقم (
WLاك ا1 : 0ا ا:�
} اذا ����C8O � ...
Ngen الJ رة��J ?ه MQ� 0:ا .L0F� Jit ?أ:0ة د<�8 وا/6ة وه �ا �أو � z��<0�ا ��L0F3 م?EA �D@و �ر ا�TF:أ Native
Image Generator ��2Aو Pre-JIT Compiler
٥صفحة رقم
) Boutemine Oualidمثال منقول من المشرف ٢ة رقم مقدم(
�Oو03آ� ��8O 1و ر/�� ا .@ CJ مx2ا �B�0�ا ��ال �� � �TC]F6 ا�e�8 وF�� 6L =و ه .C8Fا �[ 23 9dه Objective Camel ���: =و و ه ��A0C � و ; �HT3 أ��� l�AW Hا
�� و O Caml أ>� ��C8O ال(أ>�N3 wT ا�:?ة TD@. ا6م eأ Pd) ه9d ا��C <= ا��Aم ا�Eد�� ان �5ءJ 6روس783 ا Z��� ��8O 1ا
783 ا���� �ت: و ه�D ا6رس ا�ول .ا�/0ف / ���2��� F# �� ال -1 � M@X3 6�F8O أ���= �CJ ا�0��B ا -2Hlو�� ��� Dl�@ا c � و Hl��? �L?Fا. 3- W�0�3 =NFDO � B�0�ا��]0 ا Z �L ;; 4- �B�03 �� � @ ��DAد. 5- � :783 اE?ا6J ا����
0 >�6أ دا��l ب -�F� kA08F let .أو; _. ا� � l6اF3;ا �� Eا k �D أن >�@�A 0 و 683ه� �F�ا �= >� <= select case ال -Hا (switch =>2= �5ربا (=�Fا M@Xا �CJ �F@O
:ر��
mutch [variable] with case1 -> action1 | case2 -> action2 | n-> actionx;;
� / mutch {>ا?O select case [variable] 0 �F�ر>� ا�E�ا � CJ M�8< يdا.
case1: �ا�و ���رن(ا�E< =Fا �� Eا �N3) <= ا2= �5رب: �MQ ال :<-
actionx ��/ => �N3 م?E< =Fا � C�80ط اXء ا�H Fا� | MQ� or أو elseif ء�XO آ��.
n MQ� ;ت ا�:0ى��ا => case else أو �< =� Hا => default 2= �5ربا =>.
�A0ار@Fت ا�EC�ا :ر��
for x=1 to 10 do .... done;;
:ر��
while condition do .... done;;
ا�J0HFت :ر��
if condition then begin ...;; ...;; end else begin end;;
kA08O ا6وال :ر��
let functionName x y z = begin ... end;;
� / x y z �Aد�J 0اتF ه= 03ا�
� 8L0اF6وال اا (�A0دادFا)
let rec FunctionName x y z = begin end;;
٦صفحة رقم
اجنبية اخرىمقدمة منقولة من موقع مايكروسوفت و مواقع
)بدون ترجمة(من مواقع متعددة) #Fاف شارب (تعريف للغة
التعريف المصدر\ الموقعmsdn.microsoft.com
F# is a functional programming language for the .NET Framework. It combines the succinct, expressive, and compositional style of functional programming with the runtime, libraries, interoperability, and object model of .NET
FORUM The Origin of F# At the heart of F# lies Objective Caml, or OCaml, and the .NET language C#. C#, as you probably already know, is based upon C/C++ and Java. OCaml is the latest incarnation of the Caml language. Caml is a dialect of ML. F# is, in essence, another dialect, or "manifestation" as Microsoft calls it, of a functional ML-like language mixed with the power of C#. What is ML? ML is a functional language (similar to Scheme, as we discussed above) created about 20 years ago, primarily for research. ML is short for "meta-language", and as the name implies ML is primarily used to manipulate other languages. So a compiler, for example, is a great application to write using ML. ML creates an entirely different development environment, including interactive compilers that respond as you code. A very different mode of thinking is required to code in a functional language. Now, it's not LSD for developers, it's fairly mind-blowing.
F# in 20 Minutes - Part I
F# is a functional programming language built on .NET. Just like C# and VB.NET, F# can take advantage of core libraries such as Windows Presentation Foundation, Windows Communication Foundation, Visual Studio Tools for Office, etc. With F# you can even write XBox games using XNA. But just because you can write code in a new language doesn't mean you should. So why use F#? Because being a functional language, F# makes writing some classes of programs much easier than its imperative cousins like C#. Parallel Programming and Language-Oriented Programming are two such domains that can be expressed easily in F#.
٧صفحة رقم
متطلبات التحميل و التشغيل Brief Description F# is a type-safe, scalable language for the .NET platform that supports both functional and object-oriented programming. This CTP release includes the F# compiler and tools, as well as Visual Studio 2008 integration for F# development. Microsoft F#, Community Technology Preview Quick Details Version: 1.9.6.2 Date Published: 9/5/2008 Language: English Download Size: 13.4 MB - 13.9 MB* *Download size depends on selected download components. System Requirements Supported Operating Systems: Windows Vista; Windows XP Required software: .NET Framework 2.0 Optional software: Visual Studio 2008 or the Visual Studio 2008 Shell.
٨صفحة رقم
)VISUAL STUDIO 2008(على ) #F(تنصيب لغة
من موقع مايكروسوفت على الوصلة التاليةf# compiler قم بتحميل اخر اصدار من -١
aspx.release/fsharp/projects/cambridge/um/us-en/com.microsoft.research://http
.لخطوة االولى على الوندوز ا)f# compiler(ا قمت بتحميل المبعد) visual studio 2008(للبدء ادخل على -٢ اختار مشروع جديد اختار -٣)"Other Project Types" ( كما فى الصورة التالية ثم اختارf# projects
٩صفحة رقم
. تاكدت انه تم تحميل و تنصيب الملف بنجاح#f بنجاحك فى بدئ مشروع جديد بلغة -٤
اذهب الى Tools > Add-in Manager ...
كما فى الشكل التالى فهذا معناة وجود "F# Interactive for Visual Studio"فى حالة عدم وجود -٧ .١مشكلة فى الملف الذى قمت بتحميلة مسبقا فى الخطوة رقم
. و اختار الخانتين ثم اضغط موافق "F# Interactive for Visual Studio"قم باختيار -٨
١٠صفحة رقم
قم باضافة عنصر جديد لصفحتك كما فى الصورة #fيسية لمشروعك باستخدام لغة فى الصفحة الرئ -٩
.التالية
f# source fileاختار -١٠
١١صفحة رقم
كما فى (++vb,c#,c) التى ستقوم باستخدامها فى البرمجة مثل لغات ال fs.* سيظر لك صفحة جديدة بامتداد -١٠ .الشكل التالى
١٢صفحة رقم
#Fببعض قواعد لغة تعريف
:GHIJKLت
IDENTIFIERS
��ت� �ات ��� ���� ا��� ا�� �ء ه� ا���� �' &% ��$#ن ا��� و وا�!وال ا�# 0 $% /�. وا�ر,�م ا�*�وف &% &) ��ت 1/!� � 5#ل �0)�وز 1 ان 29:0 ا���8!ام و�$% /�ف 32 ���0' 5#�4� 230 ان ا�� �% ا� '�<� /�. ر&#ز =
�?< ان� �>�' �#ى ا��E�رAB0 �C D@ 1 ا�Gزا ا�#&�� ا�< &% ا�و�� ���� ا�
<P>CHAR ف�/</P> <P>INT >,ر O�*P ��3,</P>
<P>LONG >,ر O�*P 20#5 </P> <P>FLOAT >,ر �T�T/ اي 'V '&W� '0�X�</P>
<P>DOUBLE >,ر �T�T/ [��9& 'V '&W� '0�X�</P>
�E�رة ا�:�#ت %� �& 32 _V�C� l/ ا��,< �k8ن single precision �^j0 و�$% �C _^0#V#�^[ ر,< mTC V_ و� �>�u?#&( ،l أو ����& 64 _V) _V l&Wj��) u��C l/ ا��,< �k8ن double precision ال أ&�
>,��� O�*3ا� ،�,�Eر وا�#�$��(
١٣صفحة رقم
ABCام واGHIJKL مMNOJ PQKIQء اSTQا PUالF#WXواYا ZX [XK\IQا PU و A]Q ان _`aIJ F#bcd PIQا AbeNfQت اK]bQا hX ijeQ [آ lmW\d nOX oWe]IX) pqر ،tu(.... vIweq لKxاد G\L We]IwQع اMu GmG{IL KBj|OL مMNd h}Q .
١- Pb� [xء ادG�bQ
����������������� ������� �������������������������������� �� ��!:
�Dا P 0N�F�>d � �Fة ا.
�
)١(��� ر��
١- � �� �� ��ن ����� اآ�� ا��� ا�� ";;" %$��� ب #f"!� ا�وا�� ال
���
����
�/�ف و "(ف �-, �� #f"+*(م �'�ر ال ."IDENTIFIERS �"�� "it ��'2�2 01+/� ا
��+* �� ا��� 2/�٤٢ اد�4ل ا� ��+���� ) int ر�� :'+9 ( و ه+� �+�� ر��+� %� ا �/�ف +*�)�(
� ) .it(/�ف �'=(>� ;� ا
.٢ ر�� آ�� ه( �(A(ع �� ?(رة
)�(��� ر��
١٤صفحة رقم
�
BCAا �D � �� Enterاآ�� ا��� ا
�; ��+* �اGه و �*(م E=F ��+"" "it ا +� ;� �=H الG4 ��/�ف ا�� �+, ا *+� اI session ���JKان ��� ا � . ا
���
it��
)�(��� ر��
BCAا �D � �� Enterاآ�� ا��� ا
���
������
���L� M��4 �;�A�� ��� �� ا�٤٢Mا � ا� �+���V '&W' اي /�T�T ر,< P>FLOAT> "+�� ا �/�ف '0�X�</P>
١٥صفحة رقم
BCAا �D � �� Enterاآ�� ا��� ا
F#
����
�� ;� ا���0س �Oدوج +* �� ا�Q� M " "�/2 وA, ا� �+�����Fوف او ار��م) string("+�� ا �/�ف )�R� اء آ�ن)".
�)٥(��� ر��
١٦صفحة رقم
١- 8F6اما]F��3 M��
Tuples
�ُ�ِ��W� W+R��0 ا�"�/��M �/2ة ا�(اع �W ا 0+���ت ;� F*� واW)tuples ( �X� 2F ال .....).�Fوف،%�ر�] ، ر��(ا BCAا �D � �� Enterاآ�� ا��� ا
���
���� ���� �����
�a+ه ��� M+?� ���� ر�� :'+9 و �++� W+�� (“int * string”)%� اد�4ل �+
�+و��� %� ا �/�ف +* �� ان ا� �� � ��( ا�و����� ( �+��X (و ا�����. (
)٦(��� ر��
� W���ُ)�up�� (� ��� .2ة �+� و +B*; H زوW� W+I ا *+� ان �'�(ى
BCAا �D � �� Enterاآ�� ا��� ا
���
���� ���� ��� �������
��Xل ا e��f %� اد�4ل �=�٣;� ا�h� �+� � و ه� �� ��%� آ���:
“int * string * float”
)٧(��� ر��
١٧صفحة رقم
. ) Functions(ا�F[6ام ا6وال -٢Eآ
�C ال �;f# 2وال .�ن ا 2وال ��0رة �values ( �+� W(و ا *+� ) 2I)� � )functions اى ;�ق �� �+W ا
�/�ف ��X اى �+�� ا�4ى ��+* . و ���W ا�!�ء ا
BCAا �D � �� Enterاآ�� ا��� ا
���
fun x -� x � ���
)٨(��� ر��
� ١+�-�ف ا +�� آ��it" w"و ��� ان ا�4 �+�� �f$2ة ا
x�+��;;
�� )ا 2ا � ا x ) �*��f و ا �� %��O ا � "it" ا � �٤١*(م ��"$�د �+
BCAا �D � �� Enterاآ�� ا��� ا
���
it ����
�+y��$ ٤٢ = ١+٤١"��(ن ا $�+�R ا
١٨صفحة رقم
)٩(��� ر��
"it ""$*(م ���0�4ر ا�4 �+�� ل
���
it��
$� ه$� ان e*'�"it" ا�ول � � �/2 �'�(ى �+�� ا 2ا 'x' ����+� wآ�� �� ���� ا�ن ٤١و ا+� w'0:٤٢ و ا
�� ا 2وال دون %C++�ا | �Gو +� E=' �� ��1*� ا�4ى � . "(ف �*(م ;� OIء اW� �4 ا �Lح �� �/�ف
)١٠(��� ر��
١٩صفحة رقم
��م ا"�2hا - ٣�� �'R(زة ا Let” �C“ا �; #F
�C �� ��C+�ات ���W ا"$�د ا *+� ا +�� #F � %'�(ى � G| �/�ف ا�"�"� ا �9 ��"$�د �+�� ا � ُ�ىGا ”2h�f$" “letم اf� ف�/.
BCAا �D � �� Enterاآ�� ا��� ا
���
��t � � ����
)١١(��� ر��
���Xل ا e��f %� ا"$�د �+�� ر� ��C+� ;=� ا .a � ا � ا
��+� W� 2آ�� � a و ���$$� ا�� .������ ا��� ا
���
���
)١٢(��� ر��
٢٠صفحة رقم
�C ال �; f# �+C�% � M���D ��% ����; �+C�� M$+/� �� . �/2 ا�!�ء �+
(i.e. “let x = �;;”)
�� ا+* �$M �*(م ��"�2hام ا ���2* �� E=�'� 2�2ةI �� � ا�!�ءة �+�F �; و B*; 2�2ةR .
(i.e. “let x = ‘forty two’”)
�ُ ��W ا"�2hام ا��X� �+��f' �+�ت ا�/ ;;#"a /�ف ;� ا
�, ����A;� ٤٢آ��F a w+� ان ا�4 �+�� ل I �+������ ا�"�"+� ١ و "(ف �*(م �/+� � . ا
���
� � ���
)١٣(��� ر��
+C��� ��W ا��دة EF � �a ا�| �� ��K ا�M %� ا"$�د �+�� 2�2Iة � � W� ��M ا ��f*� و +*� E=�'� زال � M$� ;��M �*(م ��"�2hا��� و
��+ .ا"�2hا��� ��ة ا�4ى او ا (:(ل ا
���
��t � � ���
���
)١٤(��� ر��
٢١صفحة رقم
�*��f �� ا+* �+� ا)$� e� ا�-� ���W ا"$�د �+�� 2�2Iة � %�/
��+� e��f ��Xل ا � "$*(م ��"$�د �+�� �?+� ا +�� ٤٢*2ر ب آ��w ر��� و % Fa+� ;� ا�� ��Xل ا string و �$$� ;� ا
���
��t � � ����
)١٥(��� ر��
٢٢صفحة رقم
))identifiers�tuples ( Z(د�z ال -٤
2Fف وا�/� � ��W ا"$�د �2ة �+� ا�
���D ف ر�� و�/�� �*F ان ��(ن اول �X� و ه� Q� �*FGا
� �� ��Xل ا �/�ف "$*(م ���!�ء ;� ا �� ر��+� a ا+� ٤٢ �+?� ���H“ و �+�����”
�a+ه ������ * ����� �+%�� �� .
���
��t � � ���� ���� �����
)١٦(��� ر��
W+� � وI(د �+���ن �e��1 W ا 2ا�F �; �:ا); ��� W��� fst and snd ف�/� �; �� �'+� �*(م ��"�2hام اول �+
�� ;� �/�ف ا+� ���D 2�2 وI 2�2I �4.
� �� ��Xل ا :آ�� ;� ا
���
��t b � fst ���
��t c � snd ���
�+?� ��+� ���� �/�ف ا �/�ف ا�ول �+�� ر�+�� و ا �!�ء ا�� �$�� �+F.
� �� �e��1 W ا��� ا ��+ :و ���$$� ��Lه2ة ا *+� ا �� %� ا"$�ده� ا
���
b��
c��
٢٣صفحة رقم
)١٧(��� ر��
�/�ف ا�"�"� ���W ا�-� ا��دة ا"$�د ا aو %(ز�, ا *+� ا � ا
:��Xل
���
��t �b� c� � ���
b��
c��
)١٨(��� ر��
�� ;� ال +� W� �X2ام اآh�"ا � �F �;tuple W+� �f� W!+, ا"�2hام ا 2ا f � and �d
�!4 �y�"و %��� ر ��+�W "+'2ث 4!+� W� �+* و �$2 �'�و � ا"�2hا��� �/2 ز��دة �2د ا
٢٤صفحة رقم
��0رة �tuple a W �+� ا � ال ٣$� ���A;� "$*(م ه �������, a ����� and a f���.� �� ا �(ا�
���
��t � � ���� ���� ��� �������
)١٩(��� ر��
W+� 2$ �'� � ا"�2hام ا 2ا� �Dfst and snd � �� � ا!h : "+��� ا
)٢٠(��� ر��
���� 2Fى آ� � ��"$�د آ� OIء �� � "$*(م ���� ��Xل ا : ;� ا
���
��t �b� c� d� � ���
٢٥صفحة رقم
�� �+� �f$2ة �� OIء ;� ال � �$�?F ن)�$;tuple
� �� .آ�� ;� ا ��L ا
)٢١(��� ر��
� �� ��Xل ا �� آ� �$?� آ�� ;� ا+� W� 2آ�� ��W ا�:
���
b��
c��
d��
)٢٢(��� ر��
٢٦صفحة رقم
F �-ا� W���G ال W� �+� فtuple
�� وا2Fة و Fا اG"$*(م ;� ه+� �����Xل ����*�ء G ,A)� ��0� ;$*(م ���ن ا *+� ا �� � ���2ه� _ ف ا
�D ��� ا��4ى �*(م �+* �$� ��"$�د D"$�د ا � ا� � �� ا+� �)��e(
���
��t �_� �� _� � ���
)٢٣(��� ر��
� �f$2ة ا �� ا+* � eو ��L� 2$ه2ة ا �+��X �� ا+* tuple و��2Iه� ا
)٢٤(��� ر��
٢٧صفحة رقم
اPQوال
�=� ;� #fو�ن �C ال �h� �� �W ا 0+���ت ا)�R� �1�f0� ا��� ����+$� 2Iا ا �/��� �, ا 2وال G %�/��� �, ا 2وال � ��f� ا.
+� ��Lح آ+� %�/��� �C ال �� .�, ا 2وال #f و "$*(م ;� ا h!(ات ا
عرفاسناد الدالة اىل م
��Xل "$�/�� آ+� انG;� ه ��W ا"$�ده� ا � ُ�ا ا� �+� W� ./�ف ا 2وال ��0رة
�ُ � ���dd(/�ف "$*(م �0$�ء دا � و "$*(م ��"$�د �+���� ا��Nu�b��. (
���
��t �ddT�nT�Numb�r � �fun x -� x � �����
�/�ف �$� ��"$�د ا� e��f ��Xل ا ���dd(;� ا��Nu�b��fu(ا � ا 2ا � F+� ان %/��� ا 2ا � ا�"�"� ) �(
�+C�� )�D )x ا"� ا
�� �D G ا ��f ا+* �� ا� ).�D )x�+��0 ;� ا $���� �'�(ى ا 2ا � )<-(ى �2ل
)٢٥(��� ر��
�C�� e��f �/�ف #�CL% 2/� f ا��� ا $� ان ا ��< addTenToNumber ر�� M9%� %*��2ة ا�+':
)int -> int(و �/!� ��+M�R ���� :'+9 �+� �ر��م :'+'� G و ��4
٢٨صفحة رقم
�� ���(I(د ;� ا 2ا � ) x(/�ف"$*(م ا�ن ���!�ء �+ ���dd(ا��Nu�b��$� ���y�$0 ;� ا )!hة ( �� �� ا
�*��f ا
��+� �y�!� � ٣٢"$*(م ���� ��Xل ا . آ�� ;� ا
���
�ddT�nT�Numb�r '���
٢٩صفحة رقم
��4م
�f�FااG2 ا� ان ��(ن ه$� �C اول آ��ب ���� ا ���ب �; F#
���h� در�?� W� M%ا�*; �I�%��2*� د�R� ان ��(ن w+=در اآ��?� �� ا* و
W� �C� �� 01+/� هGة ا���f*2����0 ان ��/�ف . ا �� "+�(ن �� ��ن ��+� ;� ا
� ا �ا����وو �� �?�در2 �$�ذن ا� ا ���ب ا اآ���ل ا
) F# W� اف��Fا� ��F 20ا�� )ا
9 دو� �: W� ��)f$%��y��