<?xml version="1.0" encoding="utf-8"?>
	<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>مدونة سلام</title>
		<link>http://www.salamm.com/</link>
		<language>ar-sy</language>
		<description>مدونة سلام ، مدونة شخصية تحوي مواضيع منوعة</description>
		<pubDate>Fri, 22 Feb 2008 11:00:00 GMT</pubDate>
		<generator>Notepad++</generator>
		<managingEditor>salamj@gmail.com</managingEditor>
		<webMaster>salamblog@gmail.com</webMaster>
		
		<item>
			<title>مشروع المترجمات</title>
			<link>http://www.salamm.com/16</link>
			<description>اليوم انتهيت من مشروع المترجمات (Compiler) ، قضيت 10 ساعات متواصلة في كتابة الكود ، حوالي 500 سطر جافا.&lt;br /&gt;
أعتقد أنه إنجاز جيد بالنسبة لي لعدة اعتبارات :&lt;br /&gt;
&lt;br /&gt;
- تغلبت قليلا على &lt;a href=&quot;http://www.salamm.com/18&quot; title=&quot;كسل&quot;&gt;الكسل&lt;/a&gt;.&lt;br /&gt;
- هذه أول مرة أكتب برنامج بلغة Java ، معرفتي بها ضعيفة ، سأتوسع بها فيما بعد.&lt;br /&gt;
- استخدام طريقة جديدة في الترجمة تتمثل في استخدام الـXML كمرحلة ، و استخدام المكدس Stack في التحليل و هذا ما أعجب الأستاذ &lt;img src=&quot;http://www.salamm.com/images/smiles/26.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; .&lt;br /&gt;
&lt;br /&gt;
مراحل عمل المترجم :&lt;br /&gt;
&lt;br /&gt;
1 - قراءة الكود الذي يقوم المستدم بكتابته في ملف.&lt;br /&gt;
2 - تقسيم الكود إلى مقاطع و وضعها في ملف XML .&lt;br /&gt;
3 - جلب البيانات من ملف الـ XML و تحليل كل مقطع و حفظ قائمة بالأخطاء.&lt;br /&gt;
4 - في حال عدم وجود أخطاء ، بناء برنامج java مكافئ.&lt;br /&gt;
5 - توليد ملف .class من ملف الجافا الناتج.&lt;br /&gt;
&lt;br /&gt;
بالطبع هو مترجم متخلف جدا ، لكن نظرا لضيق الوقت ، و لأن ليس بالمشروع الضخم ، هو مجرد تطبيق لبعض المفاهيم مثل طرق التحليل من أدنى لأعلى و الأساليب المستخدمة في التحقق من صحة عبارة بواسطة جدول Shift Reduce.&lt;br /&gt;
&lt;br /&gt;
اللغة التي يقبلها المترجم هي لغة بسيطة تتكون من الآتي :&lt;br /&gt;
&lt;br /&gt;
- يبدأ البرنامج بكلمة start و ينتهي بكلمة end .&lt;br /&gt;
- يعرف المتحول على أنه إما String أو int بواسطة الكلمة def مثل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;def test int;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة if  لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;if (exp){}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة for لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;for x  = y to z { }&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة الإدخال هي :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;input(x)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة الإخراج لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;output(x)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- تقبل اللغة حلقات for و حلقات if متداخلة.&lt;br /&gt;
&lt;br /&gt;
هذه صورة توضح الطريقة المتبعة في معالجة حلقة For ، يتم بناء مكدس أو مصفوفة تحوي في عناصرها تعابير نظامية Regular Expression كل منها يعبر عن محتوى يجب أن يكون ، تتم معالجة الجملة بحيث نقوم بتجميع الحروف حتى نصل للفراغ ثم مقارنة النص الناتج مع قمة المكدس ، إذا حصل تطابق matches ننفذ الطريقة pop التي تحذف قمة المكدس ، و في نفس الوقت نكون قد حذفنا الأحرف المشكلة للكلمة التي تم تحليلها.&lt;br /&gt;
هناك حالتان لوقوع الخطأ : &lt;br /&gt;
- في حال انتهاء العبارة و عدم انتهاء المكدس.&lt;br /&gt;
- في حال وجود حالة عدم تطابق في إحدى المراحل.&lt;br /&gt;
صورة توضيحية ( بعض الشيء ) :  اضغط على الصورة للتكبير -&lt;br /&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.salamm.com/pics/stack-pop.png&quot;&gt;&lt;img src=&quot;http://www.salamm.com/pics/stack-pop-small.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
بشكل عام ، كان المشروع مقبول قياسا بمدة الإنجاز و الوقت المتوفر  ولو أنه كان هناك بعض الأخطاء.&lt;br /&gt;
ما أزعجني في النهاية هو مايكروسوفت وورد 2007 ، فأنا أبغض الكتابة فيه و هذه أول مرة أستخدم الإصدار 2007 و هذا ما جعلني أبحث طويلا عن كل أمر ، لأنه كان مطلوبا أن نكتب بعض الشرح عن آلية المترجم و هذا ما كتبناه بـ 3 صفحات شديدة الاختصار.  &lt;img src=&quot;http://www.salamm.com/images/smiles/1.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt;  </description>
			<pubDate>Thu, 15 May 2008 02:27:05 +0000</pubDate>
<category>مجتمع</category>
<category>شخصي</category>
<category>من حياتي</category>

			<comments>http://www.salamm.com/16#comments</comments>
			<dc:creator>salam</dc:creator>

		</item>
		
		<item>
			<title>البرمجة الكائنية عند أفلاطون</title>
			<link>http://www.salamm.com/16</link>
			<description>نظرية المثل عند أفلاطون الحكيم ، يعرض أفلاطون قصة الكهف ليبين المثال من الشيء ، فقصة الكهف هي عن أشخاص مكبلين في كهف مظلم و يوجد خلفهم نار و وجوههم متجهة نحو الحائط بحيث لا يرون الحقائق ورائهم و إنما يرون خيال الأشياء التي تمر بينهم و بين النار و هم لم يسبق لهم أن رأوا الأشياء بذاتهم لذلك يعتقدون أن الظل الذي يرونه هو  الحقيقة !&lt;br /&gt;
&lt;br /&gt;
نحن نعلم الشيء المطلق بمثاله ، فمثلا عمل الخير هو مثال للخير ، شيء جميل هو مثال للجمال و ليس الجمال ... &lt;br /&gt;
&lt;br /&gt;
البرمجة الكائنية OOP أي Object Oriented Programming أسلوب في البرمجة يعتمد على تحويل أي شيء إلى كائن ، مثلا إذا كان البرنامج يتناول صورة عندها يمكننا إنشاء نوع هو صورة يحوي مواصفات مثل نوع الصورة jpg, gif , png ... حجم الصورة ، أبعاد الصورة ( طول ، عرض ) ... هذا كلّه وصف لصورة ، ليس صورة بالتحديد و إنما نوع.&lt;br /&gt;
&lt;br /&gt;
و عندما نريد استخدام هذا النوع في البرمجة بشكل تطبيقي فإننا نأخذ مثال عنه ، أي كائن منه فالصورة img.gif هي مثال للنوع صورة.&lt;br /&gt;
&lt;br /&gt;
فمثلا في Java نكتب :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;public class Img{&lt;br /&gt;
...&lt;br /&gt;
}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
و عندما نريد استخدام هذا النوع نحتاج لننشئ شيء منه أو كائن فنكتب :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;Img anyName = new Img();&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
إن anyName هو مثال للصورة أو لنوع الصورة ، كما هو السرير الخشبي مثال للسرير المطلق ! &lt;br /&gt;
&lt;br /&gt;
كيف سندرك المطلق؟ اللانهاية ؟ &lt;br /&gt;
&lt;br /&gt;
ما هي مساحة مستقيم طوله لا نهاية ؟ المستقيم المطلق لا عرض له أي عرضه صفر فكم هي مساحته أنها صفر × لا نهاية ، كم الناتج ؟ واحد !&lt;br /&gt;
الواحد عند فيثاغورث هو الأول ، الغير قابل للتقسم ، وهو المطلق.</description>
			<pubDate>Wed, 23 Apr 2008 00:00:00 +0000</pubDate>
<category>مجتمع</category>
<category>شخصي</category>
<category>من حياتي</category>

			<comments>http://www.salamm.com/16#comments</comments>
			<dc:creator>salam</dc:creator>

		</item>
		
	</channel>
	</rss>