<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1210170703988679829</id><updated>2012-01-24T05:52:09.869-08:00</updated><category term='education'/><category term='technology'/><category term='kick'/><category term='tools'/><category term='democracy'/><category term='news'/><category term='compilers'/><category term='c-sharp'/><category term='kalimat'/><category term='social'/><category term='computational-thinking'/><category term='projects'/><category term='original-software'/><category term='arabic-language'/><category term='ffi'/><category term='nahda-plan'/><category term='fcis'/><category term='memories'/><category term='programming-language-theory'/><category term='society'/><category term='graduation-projects'/><category term='schools'/><category term='inventions'/><category term='code'/><category term='happiness'/><category term='jan25'/><category term='usability'/><category term='science'/><category term='english-posts'/><category term='shoes'/><category term='future'/><category term='math'/><category term='computer-history'/><category term='children'/><category term='arabic-posts'/><category term='business'/><category term='nahda'/><category term='vision'/><category term='research'/><category term='personal'/><category term='logic'/><category term='programming'/><category term='politics'/><category term='metaprogramming'/><category term='lisp'/><category term='ideas'/><category term='linguistiscs'/><category term='proof'/><category term='awraq'/><category term='computer-science'/><category term='tutorials'/><category term='programming-languages'/><category term='software'/><category term='unix'/><category term='languages'/><category term='history'/><category term='puzzles'/><category term='egypt'/><category term='fun'/><category term='teaching-children-programming'/><category term='writing'/><category term='ide'/><category term='open-source'/><title type='text'>Mohamed Samy's thoughts</title><subtitle type='html'>مدونة عن البرمجة والتعليم والنهضة</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-6087931025632155980</id><published>2012-01-23T21:19:00.000-08:00</published><updated>2012-01-23T22:16:13.323-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teaching-children-programming'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><title type='text'>الطريق المعلوم لشرح مثال مثلث النجوم</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;هب انك معيد في كلية الحاسبات تعلم البرمجة لطلبة مبتدئين، وتريدهم أن يكتبوا برنامجاً رسم مثلثاً مقلوباً من النجوم ارتفاعه 5:&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;****&lt;br /&gt;***&lt;br /&gt;**&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;الطريقة التقليدية، التي رأيتها تتكرر كثيراً، هي الآتي:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;المعيد يعطي الطلبة فرصة لكتابة البرنامج بأنفسهم.&lt;/li&gt;&lt;li&gt;الوقت ينتهي، بعض الطلبة كتبوا البرنامج والبعض لا.&lt;/li&gt;&lt;li&gt;المعيد يري الطلبة الحل الصحيح، ويشرح لماذا يقوم هذا البرنامج بعمله وأنه يرسم بالفعل المثلث.&lt;/li&gt;&lt;/ol&gt;كما خمنتم، ارى أن هذه الطريقة خاطئة. نعم هي تجعل الطالب يفكر بنفسه في البرنامج، لكنها لا تخبره مطلقاً كيف يفكر: تخيل انني اعلم شخصاً السباحة بأن أتركه في الماء واقول له "سأعطيك نصف ساعة كي تسبح". نعم، هناك بعض من الناس سيتعلم بهذه الطريقة، لكنها بكل تأكيد ليست الأفضل!&lt;br /&gt;&lt;br /&gt;اشعر ان هذا الاسلوب يوحي للطلبة ان البرمجة الهام مثل الإلهام الشعري: ان المبرمج هو شخص يجلس ويتأمل في المشكلة بعض الوقت، ثم فجأة يكتب الحل كاملاً مثلما يكتب الناس خطاباً. البرمجة مثل أي عملية فكرية لا تخلو من الإلهام والحلول الفجائية، لكن في كثيرها هي سلسلة من الخطوات تطبق بصورة علمية، &lt;span style="font-weight: bold;"&gt;وإن أردنا أن نحقق تقدما في تعليم البرمجة فلابد أن نبدأ في التفكير الجدي في ماهية هذه الخطوات وكيفية عرضها.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;عملاً بمبدأ اظهر ولا تخبر تعالوا الآن نقدم طريقة مختلفة لشرح هذا المثال.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;اولا سوف نصف المشكلة:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;نريد كتابة برنامج يكتب مثلث نجوم ارتفاعه 5 سطور.&lt;/li&gt;&lt;li&gt;أدوات حل المشكلة لدينا هي (أ) امر cout الذي يعرض اشياء على الشاشة. (ب) امكانية الانتقال لسطر جديد بإضافة endl في امر cout وأخيراُ (ج)ادوات التحكم البرمجية التقليدية من loops، conditions، variables&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;الأمر إذاً مثل الفوازير على غرار "لديك حبل طوله كذا وصندوق وماعز وتريد ان تعبر من النافذة ذات ارتفاع كذا" الفرق الوحيد ان الأدوات المستخدمة هي افكار غير ملموسة وليس حبالاً (ولا ماعز من حسن الحظ).&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);"&gt;الآن نفكر في الحل:&lt;/p&gt;&lt;p&gt;(من اجل التبسيط لن اكتب "طقوس" برامج السي من #include وما شابه)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;من الواضح أنه مهما كان شكل الحل فإنه لابد أن يكتب سطوراً على الشاشة. ولابد أن يكون عدد هذه السطور خمسة:&lt;/p&gt;&lt;p dir="ltr"  style="text-align: left; font-family:courier new;"&gt;main() {&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;for(int i=0; i&amp;lt;5; i++) {&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;draw_line();&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;}}&lt;/p&gt;&lt;p&gt;مهلاً! لا يوجد في السي++ أمر اسمه draw_line! انا تخيلت ان هذا الأمر موجود لسبب بسيط جداً هو أنني أريد ان احل المشكلة على أجزاء. سوف نفكر الآن فقط في عدد السطور المطلوبة ثم لاحقاً نفكر في شكل كل سطر.&lt;/p&gt;&lt;p&gt;العقل البشري يسهل على نفسه بأن يتجاهل بعض مكونات المشكلة ويركز في مكونات اخرى: هذا سلاح المفكرين في كل زمان ومكان وأحد أسباب التقدم العلمي الإنساني، وهذه العملية اسمها abstraction.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;الآن نكتب الأمر المطلوب:&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: arial;"&gt;void draw_line() {&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: arial;"&gt;// ???????&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: arial;"&gt;}&lt;/p&gt;&lt;p&gt;علامات الاستفهام هذه محيرة: ما المطلوب ان نفعل هنا؟؟؟؟؟ الطبيعي اننا سنرسم عدداً معينا من النجوم، ولا ننسى الانتقال لسطر جديد لأن الاستدعاء القادم للدالة لابد أن يرسم من اول السطر التالي.&lt;/p&gt;&lt;p&gt;ما هو عدد النجوم المطلوب؟ اوه ألا تعرف؟ إنه n بالطبع!&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;void draw_line() {&lt;/p&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;for(int j=0; j&amp;lt;&lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;; j++) {&lt;n; p=""&gt;&lt;/n;&gt;&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;cout &amp;lt;&amp;lt; "*";&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;}&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;cout &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt; &lt;p&gt;هل تذكر الabstraction؟ لقد افترضت في الجزء السابق ان البرنامج "يعرف" كيف يرسم السطر. الآن أنا افترض انه "يعرف" كم نجمة ترسم في كل سطر. الآن نفكر: من أين سنأتي بهذه القيمة؟ نعود مرة اخرى ونتأمل الشكل:&lt;/p&gt;&lt;p&gt;*****&lt;br /&gt;****&lt;br /&gt;***&lt;br /&gt;**&lt;br /&gt;*&lt;/p&gt;&lt;p&gt;الذي نلاحظه أن العدد المطلوب يبدأ بخمسة ويتناقص مع كل سطر. التحول من سطر إلى سطر يحدث في الدالة main ، إذن هذا هو مكان المتغير المطلوب:&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;main() {&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;int n = 5;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;for(int i=0; i&amp;lt;5;i++) {&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;draw_line();&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;n--;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt;&lt;p dir="rtl" style="text-align: right; font-family: arial;"&gt;الكود تبدو طبيعية جدا: طول السطر يبدأ بخمسة، ثم نرسم السطر، ثم ننقص الطول بمقدار واحد، وهكذا. لكن الدالة draw_line هي التي تحتاج لطول السطر، وليس main!&lt;/p&gt;&lt;p dir="rtl" style="text-align: right; font-family: arial;"&gt;لا بأس، من أجل هذا هناك إمكانية تمرير الparameters. أولا نعدل main:&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;main() {&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;int n = 5;&lt;br /&gt;&lt;/p&gt;  &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;for(int i=0; i&amp;lt;5;i++) {&lt;/p&gt;  &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;draw_line(&lt;span style="font-weight: bold;"&gt;n&lt;/span&gt;);&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;n--;&lt;br /&gt;&lt;/p&gt;  &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt;  &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt;&lt;p dir="rtl" style="text-align: right; font-family: arial;"&gt;وثانيا نعدل draw_line:&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;void draw_line(&lt;span style="font-weight: bold;"&gt;int n&lt;/span&gt;) {&lt;/p&gt; &lt;span style="font-family:courier new;"&gt; &lt;/span&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;for(int j=0; j&amp;lt; n; j++) {&lt;n; p=""&gt; &lt;/n;&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;cout &amp;lt;&amp;lt; "*";&lt;br /&gt;&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;cout &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;/p&gt; &lt;span style="font-family:courier new;"&gt; &lt;/span&gt; &lt;p dir="ltr" style="text-align: left; font-family: courier new;"&gt;}&lt;/p&gt;وانتهى البرنامج! ماذا لو لم يكن الطالب قد اخذ الfunctions من قبل؟ مشكلة قابلة للحل: يمكن تقديم الfunctions قليلاً أو استخدام comments هكذا:&lt;br /&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;main() {&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;for(int i=0; i&amp;lt;5;i++) {&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt; // draw line&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr" face="courier new" style="text-align: left; "&gt;}}&lt;/p&gt;&lt;p dir="rtl"  style="text-align: right; font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;ثم التساؤل "ماذا نكتب مكان التعليق" بدلاً من "كيف نكتب الدالة المطلوبة".&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;الآن ما مميزات الطريقة الجديدة؟&lt;br /&gt;&lt;ul&gt;&lt;li&gt;لم تعد الخطوات بين المشكلة والبرنامج شيئاً غامضاً، وكسرنا قشرة البرنامج ونظرنا داخلها. &lt;/li&gt;&lt;li&gt;الآن يمكن للطالب أن يقلد نفس الطريقة حين يأتي عليه الدور ليكتب برنامجاً بنفسه (في السكشن او خارجه).&lt;/li&gt;&lt;li&gt;البرنامج الناتج منظم جداً ويتبع منهج structured programming، ليس لأننا فرضنا هذا على الطالب فرضاً ولكن لأن هذه كانت اسهل طريقة للتفكير في المشكلة.&lt;/li&gt;&lt;li&gt;لم نكتب البرنامج مرة واحدة لكن جزءاً جزءاً وهذه هي طريقة العمل في البرامج الحقيقية: البدء بكود تبدو صغيرة (لدرجة التفاهة احياناً) ثم تزويدها وتنقيحها تدريجيا لتصل للبرنامج المطلوب.&lt;/li&gt;&lt;li&gt;تعلم الطالب التفكير بطريقة top down والانتقال من مستوى اعلى من الabstraction لمستوى اقل.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;ارجو أن يفيد هذا المثال من هو في موقف تعليمي.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-6087931025632155980?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/6087931025632155980/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=6087931025632155980' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6087931025632155980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6087931025632155980'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/blog-post_23.html' title='الطريق المعلوم لشرح مثال مثلث النجوم'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7720643532788463730</id><published>2012-01-21T17:43:00.000-08:00</published><updated>2012-01-21T21:39:49.993-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='schools'/><category scheme='http://www.blogger.com/atom/ns#' term='memories'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>كنا نفعل أشياء!</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;لم تكن أمي معجبة جداً بالمدرسة في قطر.&lt;br /&gt;&lt;br /&gt;كانت المدرسة انجليزية، والمدرسون كلهم تقريبا أجانب، ماعدا بعض المعلمين العرب في بعض المواد المتخصصة:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;معلمة اللغة العربية شامية (سورية؟).&lt;/li&gt;&lt;li&gt;معلمة التربية الدينية اردنية.&lt;/li&gt;&lt;li&gt;معلمة اللغة الفرنسية شامية (لبنانية؟).&lt;/li&gt;&lt;li&gt;ومعلمة الكمبيوتر مصرية (وإليها أدين بدخولي عالم البرمجة).&lt;/li&gt;&lt;/ul&gt;أما الرياضيات، اللغة الانجليزية، العلوم، الرسم...الخ فكان مدرس واحد يؤدي مهامها - مسؤوول عن الفصل كله - وكان انجليزياً. ولم تكن أمي معجبة جداً بالمدرسة. ولهذا سبب: لم نكن نأخذ شيئاً تقريباً.&lt;br /&gt;&lt;br /&gt;لم تكن توجد الكتب المصرية السميكة، نادراً ما كنا نرى المعلم يشرح على السبورة، الواجب المدرسي قليل، والامتحانات لم تكن شيئاً مهماً جداً. من وجهة نظر الأم المصرية لم تكن هذه مدرسة اصلاً. ومع ذلك فإن ما أنا عليه الآن يعود جزء كبير منه لهذه المدرسة. وقد تعلمت منها الكثير جداً.&lt;br /&gt;&lt;br /&gt;نحن ببساطة لم نكن نتلقى الكثير من المعرفة knowledge، لكن كنا نفعل أشياءاً؛ هذا هو سر الموضوع.  ذات مرة قال المعلم لنا في أول الترم: أريدكم أن تكتبوا قصة بوليسية.&lt;br /&gt;&lt;br /&gt;لم تكن هذه شيئاً مطلوباً على الفور، بل مشروعاً قمنا به على مر الاسابيع. لم تكن أيضاً قصة نكتبها في كراسة بل "كتاباً" التلميذ مسؤول عن كل جوانبه: عليه أن يرسم له غلافاً، ويكتب النبذة في ظهر الغلاف التي تجذب القاريء، ويرسم الرسومات الداخلية. كان الكتاب النهائي للاسف مصنوعاً بخط اليد لا مطبوعاً، لكن من كل العوامل الأخرى كان التلميذ يصنع منتجاً كاملاً من البداية للنهاية.&lt;br /&gt;&lt;br /&gt;ثم انه لا يمكن كتابة قصة بوليسية كما تكتب خطاباً مثلاً: في الخطاب يمكنك أن تمسك القلم وورقة بيضاء وتكتب من البداية للنهاية، لكن القصة البوليسية لابد لها من خطة أولاً. لابد لها من تصميم design يشبه التصميم الهندسي أو تصميم برنامج. لابد لها من بنية structure.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;في البداية، ما هي البيئة المحيطة أو الظروف التي تدور فيها أحداث القصة؟&lt;/li&gt;&lt;li&gt;وما هي الشخصيات؟ سواء المجرم، أو "الضحية"، أو الشخصيات الأخرى، أو "المخبر" الذي سيكتشف الجاني؟&lt;/li&gt;&lt;li&gt;وكيف حدثت الجريمة، ولماذا هي لغز، ما الذي يمنع معرفة الجاني على الفور؟&lt;/li&gt;&lt;li&gt;وما هي الادلة، وكيف ستنكشف تدريجياً بحيث يكون هناك فرصة للقاريء أن يستنتج مع المخبر؟&lt;/li&gt;&lt;li&gt;وكيف يمكن تحيير القاريء بحيث لا يكون الاكتشاف بديهياً؟&lt;/li&gt;&lt;li&gt;وهل للرسومات دور؟ هل يمكن إخفاء دليل في رسمة بدلا من ذكره في سرد القصة؟&lt;/li&gt;&lt;li&gt;وهكذا وهكذا...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;وأنا كطفل في الثانية عشر لم أكن اعرف كلمة البيئة المحيطة ولا design، لكني - عرفت أو لم أعرف - كنت &lt;span style="font-weight: bold;"&gt;أفعل&lt;/span&gt; هذه الأشياء.&lt;br /&gt;&lt;br /&gt;نعم يا سادة: الطفل يصمم منتجاً، ويقوم بخطوات مشروع على مدى اسابيع. &lt;span style="font-weight: bold;"&gt;ويستمتع&lt;/span&gt; بما يقوم به. نحن في مجتمعنا نفخر بذكاء الطفل المصري، ونقول انهم اذكى من الكبار، لكننا نفعل هذا بأفواهنا أكثر الأحيان لا بأعمالنا. إن كنت تراه ذكياً لهذه الدرجة اعطه مسؤولية شيء يفعله. اجعله &lt;span style="font-weight: bold;"&gt;يقوم بأشياء&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;ماذا عن الرسم؟ في المدارس المصرية هناك ثلاث مواضيع للرسم لا خروج عنها:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;الأهرام&lt;/li&gt;&lt;li&gt;حرب اكتوبر&lt;/li&gt;&lt;li&gt;الاطفال يحتفلون بالعيد في الحدائق&lt;/li&gt;&lt;/ul&gt;ماذا كنا نرسم إذاً في المدرسة في قطر؟ يختلف الأمر من حين لحين: يمكن ان نرى فيلماً ثم نرسم مشهداً اعجبنا فيه، أو نقرأ كتاباً أو شعراً ونرسم شيئاً مرتبطا بما قرىء، أو نرسم رسماً يصاحب قصة ألفناها (مثلما رأيتم). القصد ان الرسم هنا كان وظيفياً: إنه يعبر هنا عن شيء رأيته أو قرأته أو تفكر فيه. عندما ترسم حرب اكتوبر فإنك لا &lt;span style="font-weight: bold;"&gt;تفكر&lt;/span&gt; في الرسمة: أنت فقط تقسم الصفحة إلى اقسام كل قسم فيه عنصر ما: هنا دبابة، هنا جندي، هنا مظلة. لا تفكير مطلقاً.&lt;br /&gt;&lt;br /&gt;كانت هذه المرحلة الابتدائية. في المرحلة الإعدادية ذهبت إلى مدرسة اخرى (انجليزية أيضاً) كانت اكثر تقليدية من الأولى: هذه المرة فيها مناهج واشخاص يشرحون على السبورة. لكن مازال لها رونقها وتميزها. مثلاً كان هناك نشاط - على مدى الترم - لصنع مجلة للمدرسة.&lt;br /&gt;&lt;br /&gt;في المدارس المصرية كلمة مجلة معناها غالباً مجلة حائط، أما هناك فكانت مجلة حقيقية تطبع وتوزع. اخذتنا المدرسة من ضمن ذلك النشاط إلى مطبعة لنرى كيف تصنع المجلات والصحف. لم يكن عندهم وقتها نشر مكتبي بالكمبيوتر، بل ترص "العواميد" على لوح زجاجي يدوياً ثم تأتي آلة تصور هذه الرصة تمهيداً لطباعتها. هذه الزيارة صنعت لدي اهتماما كبيراً بموضوع النشر هذا: الخطوط والصور والإطارات النصية ورصة الصفحة page layout وكل هذا. ربما اهتمامي &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post_14.html"&gt;بجهاز أوراق&lt;/a&gt; يعود جزء منه لهذا الاهتمام بالنشر.&lt;br /&gt;&lt;br /&gt;لا أريد أن أبالغ في المقارنة بين هذه المدرسة والمدارس المصرية، فالمدرسة القطرية/الانجليزية كانت مصاريفها باااهظة بينما المدارس المصرية ليس لها نفس الحظ مالياً، لكن أياً كان السبب فقد تعلمت شيئاً آخر: الطموح. هناك عادة لدى كثير من المصريين هي وضع الحدود لأنفسهم: لا تصنع مجلة بل مجلة حائط. في الثمانيات والتسعينات لم يكن الشخص يفتح شركة بل يفتح "مشروع"، حيث معناها شراء آلة صنع فشار أو آلة صنع أكياس بلاستيك. دائماً أول ما يفكر فيه الشخص ليس كيف يحقق طموحه بل عن مدى "واقعية" هذا الطموح. كل شوية: خليك واقعي، الواقعية! لازم تفكر بواقعية! الواقعية الشقية!&lt;br /&gt;&lt;br /&gt;حين عدت لمصر كنت افكر في كيفية فتح شركة برمجيات وكنت في الإعدادية. لم انجح في جزء الشركة لكن التفكير نفسه واقعي وليس خيالي. هناك في الخارج طفل في الرابعة عشرة &lt;a href="http://www.pcmag.com/article2/0,2817,2375905,00.asp"&gt;مطور برامج آيفون&lt;/a&gt;. وآخر في &lt;a href="http://www.siliconrepublic.com/new-media/item/24542-worlds-youngest-mac-app-de"&gt;الثانية عشرة&lt;/a&gt;. ولو قلنا ان تطوير البرامج اسهل من فتح شركة تقليدية فسأرد بهذا الصبي في العاشرة الذي &lt;a href="http://candysushi.myshopify.com/"&gt;فتح محل حلويات&lt;/a&gt;. هناك عشرات الأمثلة الأخرى. أنا لا أريد ان يتصرف المجتمع كأن هؤلاء حالة خاصة لا تتكرر: أتمنى أن أرى هذا النوع من الطموح مألوفاً.&lt;br /&gt;&lt;br /&gt;طبعاً صار الأمر يتغير الآن بظهور المصلحين الاجتماعيين، ووجود حملات مثل صناع الحياة، وظهور نماذج كثيرة لشركات عربية ناجحة وشبكات إعلامية شبابية ظهرت من لاشيء على الفيسبوك...الخ. المجتمعات العربية الآن افضل بكثييير في جانب الطموح، لكن أتمنى أن تكون هذه التغييرات جذرية مستشرية في المجتمع كله وليس فقط نماذج إيجابية هنا وهناك (وإن كانت تزيد مع الوقت).&lt;br /&gt;&lt;br /&gt;ربما يمكن بدء التغيير في المدارس: إن كنت ترى أن الأطفال في المجتمع أذكياء حقاً وتريد منهم الطموح فلا يكفي أن تحثهم بلسانك، بل اعطهم مسؤوليات تليق بالذكاء الذي تحسبه فيهم: دعهم يؤلفون كتباً أو يرسمون كاريكاتير، أو يصممون مواقع على النت، أو يطبخون، أو يفتحون شركات. لا تجعلهم يصنعون اشياء "لعبة": لو فتحوا شركات فلتكن تدر ربحاً حقيقياً (لا يلزم ان يكون ربحا كبيراً). لو صنعوا موقع انترنت فليكن موقع في موضوع يهم الناس ان يزوروه فعلا، لو طبخوا فلتكن طريقة عمل البيتزا وليس صنع المربى. دعهم يفعلون أشياء حقيقية.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7720643532788463730?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7720643532788463730/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7720643532788463730' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7720643532788463730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7720643532788463730'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/blog-post_21.html' title='كنا نفعل أشياء!'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-391892366202109410</id><published>2012-01-14T21:39:00.000-08:00</published><updated>2012-01-15T01:06:36.215-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><category scheme='http://www.blogger.com/atom/ns#' term='graduation-projects'/><title type='text'>Improving FCIS education: ideas and strategies</title><content type='html'>&lt;div style="text-align: left;direction:ltr"&gt;&lt;div style="direction: rtl;background-color: rgb(212, 212, 212);text-align: center;font-size: 112%"&gt;الم تتلق العلم في معاملي، وتضحك وتبكي بين جدراني؟&lt;br /&gt;إذن اخبرهم كم أنا جميلة!&lt;br /&gt;كم أنا ذكية!&lt;br /&gt;فقط أحتاج لمن ينفض التراب عن وجهي...&lt;br /&gt;من يجدد شبابي...&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Architecture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There's a book called "&lt;a href="http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/026214087X"&gt;The elements of computing systems&lt;/a&gt;" that attempts to go through all layers of a computer: starting from logic gates and building the hardware, assembler, compiler, operating system, and finally a Tetris game on top. The book even has prepared course material to teach with.&lt;br /&gt;&lt;br /&gt;Will it be good? Will it be possible to give in a semester? I don't know, but seems worth examining.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Python, computer vision, and scientific computing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem with computer vision/image processing is that the set-up takes much longer than the fun parts. Students spend too much time learning how to load images, access pixels, do transformations,...etc&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Python&lt;/span&gt; is a very high-level language, with very readable syntax (looks like pseudocode) and a lot of libraries. It currently has a gained a lot of users in the scientific community and got some excellent high-performance, high-quality libraries in these domains. It might be much easier to use in imaging/scientific computing than the current tools (C++, C#) and &lt;a href="http://vnoel.wordpress.com/2008/05/03/bye-matlab-hello-python-thanks-sage/"&gt;some researchers&lt;/a&gt; are even using it instead of Matlab.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.python.org/moin/NumericAndScientific"&gt;This is a list&lt;/a&gt; of common Python libraries for imaging/SC. The most famous is &lt;a href="http://www.scipy.org/"&gt;SciPy&lt;/a&gt;, described as having "... modules  for  linear algebra, optimization, integration, special functions,  signal and image processing, statistics, genetic algorithms, ODE  solvers, and others. "&lt;br /&gt;&lt;br /&gt;Another is &lt;a href="http://vtk.org/"&gt;VTK&lt;/a&gt; (visualization toolkit), described as "an open source, freely available software system for 3D computer  graphics, image processing, and visualization used by thousands of  researchers and developers around the world."&lt;br /&gt;&lt;br /&gt;Also, there's &lt;a href="http://simplecv.org/"&gt;SimpleCV&lt;/a&gt;, a set of Python libraries to make computer vision easy and straightforward. You can look at their &lt;a href="http://simplecv.org/demos.html"&gt;demos&lt;/a&gt; if you like.&lt;br /&gt;&lt;br /&gt;Perhaps someone can have some experiments with these libraries and try to make use of them in FCIS subjects and/or projects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Algorithm animation toolkit&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't know how useful algorithm animation would be in teaching algorithms, but it could be quite useful (algorithm animation = drawing each step in the algorithm one after the other while showing state of variables, content of arrays, ...etc).&lt;br /&gt;&lt;br /&gt;I suggest creating a generic algorithm animation kit: it would be an interpreter for a small language (perhaps C-like), the TA would write the algorithm in that language and the interpreter (which knows how to draw an array, a tree, graph...etc) would run each step, visualizing along the way.&lt;br /&gt;&lt;br /&gt;It's not that hard a project for someone who knows compilers. By the way it might be even more useful in the data structures course (e.g to explain insertion in a binary search tree) than algorithms.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;First year &amp;amp; programming&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's be honest: there are too many 3rd year students who barely know how to code (probably a lot of 4th year too). Even worse: &lt;span style="font-weight: bold;"&gt;they haven't learned to make it easy for themselves&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;What do I mean, not make it easy? I don't mean object oriented design or such, I mean the really simple things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Indenting code to know where each loop or if statement ends, to have no statement in the wrong place (e. outside the if instead of outside the while).&lt;/li&gt;&lt;li&gt;Passing values as parameters instead of storing them as global variables or fields in the class.&lt;/li&gt;&lt;li&gt;Giving variables meaningful names. I can't remember how many times I've seen variables called a, a1, c, instead of pixelsPerCentimeter, nameToEmployeeMap,...etc&lt;/li&gt;&lt;li&gt;Not trying to really understand the problems, instead randomly changing things until the program seems to run.&lt;/li&gt;&lt;li&gt;Not trying to &lt;span style="font-style: italic;"&gt;plan&lt;/span&gt; their work: no sketching of solutions, no equations before coding, nothing but opening the editor and typing.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;These things do not even require practice or extreme intelligence, they simply need to be &lt;span style="font-style: italic;"&gt;done&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So how do I suggest solving those problems? We could at least start by:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Having TAs talk about these issues.&lt;/li&gt;&lt;li&gt;Having TAs code in front of new programmers. All crafts are learned by watching: a young carpenter learns by watching older carpenters. A mechanic learns from his master. Programming might be a science but - like it or not - it's also a craft.&lt;/li&gt;&lt;/ul&gt;There is this belief among beginners that code is the final product: As if a programmer should read the problem, think real hard about it, and then write the code correctly. In such an imaginary world there is no need to indent code or give variables good names: the code is for the compiler to translate, not for a human to read.&lt;br /&gt;&lt;br /&gt;In the real world you'll spend 10 or 20 times as much debugging the code as you wrote it. You'll ask TAs to debug the code with you. Neither you nor the TA wants to get lost in x,c,i,j or wonder where the while loop ends among those braces, or discover that the function depends on a global or member that he forgot about. &lt;span style="font-style: italic;"&gt;Just do what you can to make life easier.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Structured programming: the subject that isn't :(&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a feeling that structured programming has never been taught in the faculty: they always would teach loops or pointers or the like: this is not SP! this is just &lt;span style="font-style: italic;"&gt;programming language features&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Real structured programming is about code having structure, i.e being decomposed into smaller components, being able to reason about each component separately of the others, then combining them into a larger program.&lt;br /&gt;&lt;br /&gt;This is a sample of the stuff that should be taught in such a course:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Decompose programs into functions&lt;/li&gt;&lt;li&gt;Functions should be like mathematical functions: takes input from parameters and returns values. Do not call a function by first writing to a global var, calling it, and letting it read from the global.&lt;/li&gt;&lt;li&gt;Don't let the function doing the calculation open a file, let each function do a specific job.&lt;/li&gt;&lt;li&gt; Don't mix user interface (console or GUI) with the logic. This prevents reuse, among other things.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A function should map to a unit of meaning in the problem (e.g draw_character, determine_if_monster_is_dead). Reading code should sound - in your head - like reading the solution of a problem.&lt;/li&gt;&lt;li&gt;Think hard about the data, and also decompose it into structs, arrays,...etc. Those should also map to units of meaning in the program (car, deck_of_cards, salary).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Object oriented programming&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Among the syntax, the static methods, the class definitions, public &amp;amp; private,...the most important concept is forgotten: &lt;span style="font-weight: bold;"&gt;objects&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Basically, the idea is that when a program runs, a lot of objects will be created in memory and will interact with each other by method calls. This simple idea - believe it or not - is virtually unknown to a large portion of students.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Don't believe me? Here are the signs:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is very hard to explain to students what &lt;span style="font-style: italic;"&gt;static&lt;/span&gt; is, even if it means just "Doesn't work on a particular object".&lt;/li&gt;&lt;li&gt;It's very hard to explain the &lt;span style="font-style: italic;"&gt;'this'&lt;/span&gt; keyword, even if it just means "The object on which the method is called".&lt;/li&gt;&lt;li&gt;Students try to call methods on C# forms without having a reference to the form. If compilation fails they create a new form instance instead of acquiring a reference to the active form.&lt;/li&gt;&lt;li&gt;They have difficulty getting &lt;span style="font-weight: bold;"&gt;constructors&lt;/span&gt;, which are ways to create objects.&lt;/li&gt;&lt;/ul&gt;Basically, the students mostly memorize certain shapes of code and write them as-is. So how to solve the problem?&lt;br /&gt;&lt;br /&gt;You can start by making sure the basic concept is understood: forget encapsulation, forget inheritance, forget public/private. First you got to make sure they get it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When the program runs, objects are created. They call methods upon each other.&lt;/li&gt;&lt;li&gt;An object is not the class; the class is simply an 'algorithm' to create similar objects. All real work is with the objects. &lt;/li&gt;&lt;li&gt;When writing a class, think about how the objects created from it will behave.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;(This is similar to functions actually: a functions is separate from its &lt;span style="font-style: italic;"&gt;activation&lt;/span&gt;. This is why the same function can have multiple activations in e.g recursion).&lt;/p&gt;&lt;p&gt;Also, before making them define their own classes, let them use existing classes in the standard library to do basic object operations: creating them, calling methods, setting them as fields in other objects, learn about references...etc&lt;/p&gt;&lt;p&gt;The advice that I just gave can be applied to all subjects in all years: &lt;span style="font-style: italic;"&gt;Start with the simplest, most essential concept&lt;/span&gt; (structured = decomposition, OOP = objects...) &amp;amp; make sure they learn it before you continue.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Graduation project supervision&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It pains me to think about how much knowledge is &lt;span style="font-style: italic;"&gt;created, then destroyed &lt;/span&gt;all along the years in FCIS.&lt;br /&gt;&lt;br /&gt;Think about how many times e.g Ahmed Salah  supervised a GP related to computer vision: He recommends papers to students to learn imaging from, then more specialized papers related to the project's domain, then tutorials to Matlab. And then next year students come and he has to repeat the whole cycle again. The day he leaves for his Phd is the day less students will be able to work on CV projects. &lt;span style="font-weight: bold;"&gt;Why does it have to be like that??&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Come on people! I'm not asking for some big, systemic change! Can't we have a Google document online for all TAs to copy &amp;amp; paste the names of papers that they gave to the students?&lt;br /&gt;&lt;br /&gt;Then along the years, new students can be pointed to them to learn about the GP domain, interested people like me can use them to learn about new subjects. The information in preserved when the TA is away. New papers would be added if the existing ones get out of date. Wouldn't it be awesome?&lt;br /&gt;&lt;br /&gt;The same can be said about code &amp;amp; documentation: We should sort the copyright issues then have all code and docs posted online, and enable searching for projects by name, problem domain (e.g augmented reality) or year. This would solve problems like&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Has my project idea been done before?"&lt;/li&gt;&lt;li&gt;"Why aren't more projects continued on and improved?"&lt;/li&gt;&lt;li&gt;"We want a list of interesting projects to tell TV reporters, to make FCIS more known to society"&lt;/li&gt;&lt;/ul&gt;What I'm proposing here is &lt;span style="font-weight: bold;"&gt;accumulated knowledge&lt;/span&gt;: Recording previous valuable knowledge so that it can be reused in the future. This is for example why books are such an important part of human progress.&lt;br /&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Themes for graduation projects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In 2010/2011 I &lt;a href="http://iamsamy.blogspot.com/2011/08/graduation-project-themes-and-ideas_31.html"&gt;tried to introduce&lt;/a&gt; the idea of themes: a lot of GPs in the same general domain. The aims were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Encourage multiple teams to cooperate on common problems (e.g share papers that introduce NLP).&lt;/li&gt;&lt;li&gt;Plant a seed of research groups in the faculty, when some of those students become TA. This would form research groups naturally instead of by fiat from management.&lt;/li&gt;&lt;/ul&gt;I think this idea should be revisited. Have two or three themes each year, and let TAs announce in a session 10 ideas or so for each theme (but allow students to freely work outside them).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Observation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;During my last months as a TA, and in the summer training after I quit, I did something new to myself: I began observing.&lt;br /&gt;&lt;br /&gt;I'd sit with the students during a lecture that another TA is giving and see how they react to different styles, or even when do they focus and when they're distracted. If I would do that now I'd also go to the labs and watch how they actually try to program and the things that are repeatedly not understood by different groups of people.&lt;br /&gt;&lt;br /&gt;Perhaps as educators we need to take a more scientific approach to teaching, &amp;amp; base our decisions on data instead of personal opinions.&lt;br /&gt;&lt;br /&gt;Speaking of scientific, perhaps we could look at research about the topic of teaching programming. For example there's an ACM special interest group called &lt;a href="http://www.sigcse.org/"&gt;SigCSE&lt;/a&gt; (special interest group, computer science education) where relevant papers are published. Also a lot of educators have blogs on the internet, and sometimes they write gems &lt;a href="http://blogs.kent.ac.uk/mik/2009/09/quality-oriented-teaching-of-programming/"&gt;like this&lt;/a&gt; for example.&lt;br /&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Know your goals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rarely has an FCIS student been told: what is the purpose of your faculty, and why give those subjects in particular.&lt;br /&gt;&lt;br /&gt;To improve the situation, I created this presentation: a tour of almost all FCIS subjects and the purpose of each, both science-wise and market-wise. If you haven't seen it already, &lt;a href="http://vimeo.com/27630864"&gt;I suggest doing so&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Epilogue&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I hope some of those ideas turn out to be practical and useful. I think there's much more to be said in this area, and I might write a part II of this article someday :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-391892366202109410?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/391892366202109410/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=391892366202109410' title='6 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/391892366202109410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/391892366202109410'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/improving-fcis-education-ideas-and.html' title='Improving FCIS education: ideas and strategies'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-3335189584384899193</id><published>2012-01-11T15:09:00.000-08:00</published><updated>2012-01-13T13:19:52.698-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computational-thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>التفكير الحوسبي: مفتاح لنهضة علمية عربية</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div class="mbl notesBlogText clearfix"&gt;&lt;div&gt;&lt;p&gt;كما نعلم فإننا الآن في حالة تأخر علمي كبير عن الدول الأخرى، ومن أجل سد تلكم الثغرة نحتاج طرقا جديدة مختلفة عن المعتاد&lt;/p&gt;&lt;p&gt;نقطة  أخرى هي أنه احيانا يكون هناك "منعطف تاريخي" في البحث العلمي تتغير فيه  صورة البحث كليةً  وتؤثر على مستقبل العلم بعدها قروناً (مثلما حدث في  النهضة الأوروبية)، وهناك من يرى - وهذا ليس رأيي الشخصي بل رأي علماء  كثيرون&lt;/p&gt;&lt;p&gt;بالخارج - أننا أمام أحد هذه المنعطفات، بسبب ظهور فكرة جديدة هيComputational thinking.&lt;/p&gt;&lt;p&gt; وهي  فكرة مبنية على استخدام علوم الحاسب والبرمجة كأساس لسائر العلوم الأخرى  (الطب، الهندسة، الاقتصاد، اللغة...الخ) والمزج بينها. بدلا من تعليم الطفل  مثلا النحو ثم الجبر ثم الاحياء وكل منهم بأساس مختلف فإن التعليم يأتي  بمقدمة لعلوم الحاسب ثم استخدام هذه الخلفية في العلوم الأخرى كلما أمكن،  حيث ان علوم الحاسب هي طريقة لتمثيل الفكر البشري أياً كان مجاله.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;قبل  ان اقول ماذا اقترح القيام به في هذا المجال، سآخذكم في جولة عبر ما يفعله  الآخرون في العالم الغربي في هذا المجال. الفقرة القادمة من ورقة بحثية  بعنوان"Computational thinking: What and why"&lt;/p&gt;&lt;p style="text-align: left; color: rgb(0, 0, 153);" dir="ltr"&gt;At Carnegie Mellon, computational thinking is everywhere. [...]&lt;/p&gt;&lt;p style="text-align: left; color: rgb(0, 0, 153);" dir="ltr"&gt;We  have programs in computer music, and in computation, organizations, and  society. We have joint programs between computer science and other  disciplines, e.g.,&lt;/p&gt;&lt;ul style="text-align: left; color: rgb(0, 0, 153);" dir="ltr"&gt;&lt;li dir="ltr"&gt;Algorithms, combinatorics, and optimization (computer science &amp;amp; mathematics, business)&lt;/li&gt;&lt;li dir="ltr"&gt;Computer science and arts&lt;/li&gt;&lt;li dir="ltr"&gt;Entertainment technology (computer science &amp;amp; drama)&lt;/li&gt;&lt;li dir="ltr"&gt;Human-computer interaction (computer science &amp;amp; design, psychology)&lt;/li&gt;&lt;li dir="ltr"&gt;Language technologies (computer science and linguistics)&lt;/li&gt;&lt;li dir="ltr"&gt;Logic and computation (computer science and philosophy)&lt;/li&gt;&lt;li dir="ltr"&gt;Pure and applied logic (computer science &amp;amp; math, philosophy)&lt;/li&gt;&lt;li dir="ltr"&gt;Robotics (computer science &amp;amp; electrical and computer engineering, mechanical engineering)."&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;يعني  باختصار، جامعة كارنجي ميلون (على سبيل المثال) يبحثون في كل المجالات  العلمية في كل الكليات: اللغويات والفلسفة والأعمال والهندسة و...و...كيف  يمكن حوسبتها؟&lt;/p&gt;&lt;p&gt;تعالوا الآن ننظر للشركات والمؤسسات الحكومية الأمريكية والبريطانية كيف تمول هذه المشاريع&lt;/p&gt;&lt;ul style="text-align: left;" dir="ltr"&gt;&lt;li&gt;On May 29,2009 an event about computational thinking was sponsored by &lt;strong&gt;ACM&lt;/strong&gt;, CRA, CSTA, &lt;strong&gt;IEEE&lt;/strong&gt;, &lt;strong&gt;Microsoft&lt;/strong&gt;, NCWIT, &lt;strong&gt;NSF&lt;/strong&gt;, and SWE...&lt;/li&gt;&lt;li&gt;CSEdWeek is sponsored by ABI,  ACM, BHEF, CRA, CSTA, Dot Diva, &lt;strong&gt;Google&lt;/strong&gt;, Globaloria, &lt;strong&gt;Intel&lt;/strong&gt;, Microsoft,  NCWIT, NSF, SAS, and Upsilon Pi Epsilon&lt;/li&gt;&lt;li&gt;In  August 2010, the British  Royal Society announced that it is leading an  18-month project to look  “at the way that computing is taught in  schools, with support from&lt;span style="font-weight: bold;"&gt; 24  organisations&lt;/span&gt; from across the computing  community including learned  societies, professional bodies,  universities, and industry”  (http://royalsociety.org/Education-Policy/Projects/).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;من هذه الأمثلة يتضح أن فئات المجتمع كلها، من شركات ومؤسسات حكومية وعلمية، يركضون حتى يصدم بعضهم بعضاً لتمويل مثل هذه الأنشطة.&lt;/p&gt;&lt;p&gt; &lt;span class="fbUnderline"&gt;&lt;strong&gt;ألم يأت دورنا نحن؟&lt;/strong&gt;&lt;/span&gt; سأقول لكم الآن الخطة التي لدي&lt;/p&gt;&lt;p&gt; أما المشروع الذي أقدمه، فهو فكرة مركز ابحاث لدعم نشر التفكير الحوسبي في مصر والعالم العربي، يقوم بنشاطات مثل الآتي&lt;/p&gt;&lt;ul&gt;&lt;li&gt;التعاون  مع طلبة الماجستير والدكتوراه في المجالات الحوسبية أو التعليمية أو  العلمية، لبحث تطوير تدريس علوم الحاسب أو تطبيق علوم الحاسب على العلوم  الأخرى&lt;/li&gt;&lt;li&gt;التعاون مع الاساتذة الجامعيين أو المدارس في تجربة تطبيق علوم الحاسب في المناهج التي يدرسونها&lt;/li&gt;&lt;li&gt;استخدام  منهج البحث العلمي (أي عمل افتراضية ومحاولة اثباتها أو نفيها بتجربة) في  تطوير مناهج تعليم البرمجة لتلاميذ المدارس، وذلك عن طريق التجربة مع اطفال  حقيقيين&lt;/li&gt;&lt;li&gt;عمل الندوات في الجامعات، المؤتمرات، والاماكن العامة (مثل ساقية الصاوي) لتعريف المجتمع بأهمية التفكير الحوسبي&lt;/li&gt;&lt;li&gt;السعي لتطوير مناهج جاهزة يمكن استخدامها بالمدارس في مصر وخارجها&lt;/li&gt;&lt;li&gt;تطوير لغات برمجة جديدة، العاب الكترونية يمكن برمجتها، وغير ذلك من وسائل التعليم المتطورة المخصصة للأطفال&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;المركز  سيبدأ صغيراً ويكبر مع الوقت، وسيقوم بجزء بحثي وجزء توجيهي، أي أنه سيقوم  بقطعة صغيرة من البحث الكلي، بينما الجزء الأكبر نرجو أن يتم في الجامعات  المؤسسات العلمية المصرية بعد ان تبدأ الفكرة في الانتشار.&lt;/p&gt;&lt;p&gt; هذه الفكرة اسعى لها منذ مدة طويلة، كما يتضح من اول تدوينة لي في هذا الموضوع، انها كانت عام  2009&lt;/p&gt;&lt;p&gt;&lt;a href="http://iamsamy.blogspot.com/2009/04/blog-post.html"&gt;http://iamsamy.blogspot.com/2009/04/blog-post.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt; وقد قمت بخطوات فعلية في هذا الموضوع، مثل تصميم وتنفيذ لغة "كلمات" لتعليم الأطفال البرمجة:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.kalimat-lang.com/"&gt;http://www.kalimat-lang.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt; ومدونة "التفكير الحوسبي في مصر"&lt;/p&gt;&lt;p&gt;&lt;a href="http://ctegypt.blogspot.com/"&gt;http://ctegypt.blogspot.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt; وهذه روابط للمزيد من المعلومات&lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt; &lt;strong&gt;&lt;span class="fbUnderline"&gt;The Official Project Proposal:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt;&lt;a href="http://goo.gl/T1zS0"&gt;http://goo.gl/T1zS0&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt; &lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt;&lt;span class="fbUnderline"&gt;Computational thinking: why and how (Paper)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt;&lt;a href="http://www.cs.cmu.edu/%7ECompThink/papers/TheLinkWing.pdf"&gt;http://www.cs.cmu.edu/~CompThink/papers/TheLinkWing.pdf&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: left;"&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="fbUnderline"&gt;مقال بالتفصيل يجيب عن السؤال: ازاي بالضبط التفكير الحوسبي حيغير العلم&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;english:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ctegypt.blogspot.com/2011/12/computational-thinking-why-is-it-that.html"&gt;http://ctegypt.blogspot.com/2011/12/computational-thinking-why-is-it-that.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;arabic:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://iamsamy.blogspot.com/2011/12/blog-post_27.html"&gt;http://iamsamy.blogspot.com/2011/12/blog-post_27.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt; من  أجل التوسع في هذا الموضوع وتسريع العمل، لابد ان يكون المجتمع معي في هذا  المجال. اريد نشر الفكرة، وان يبدأ الناس في مناقشتها واتخاذ خطوات من اجل  تحقيقها. أتمنى أن تكون هذه المقالة بذرة لذلك النقاش.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-3335189584384899193?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/3335189584384899193/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=3335189584384899193' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3335189584384899193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3335189584384899193'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/computational-thinking.html' title='التفكير الحوسبي: مفتاح لنهضة علمية عربية'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5414140844827628656</id><published>2012-01-11T13:28:00.000-08:00</published><updated>2012-01-14T17:22:46.841-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='schools'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>أفكار عن صنع مدارس المستقبل</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;أماكن وابحاث نسرق منها&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;اعتقد انه ينبغي، على رجل النهضة المتحمس، أن يقوم بجولة حول العالم يأخذ منها الافكار ليعود ويرى ما يناسب تطبيقه في مدارسنا. هذه هي المصادر الحالية في ذهني:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;مدارس حركة كولن في تركيا،&lt;/span&gt; وهي مدارس مستوحاة من أفكار فتح الله كولن المفكر الإسلامي التركي. هناك أشياء معينة لاحظتها من المعلومات القليلة التي اعرفها عن تلك المدارس، مثل انهم يعتبرون الشطرنج منهجا رسميا وله كتب دراسية مثلاً، او ان كولن يبدو ان له نظريات معينة في التعليم. &lt;a href="http://gulenschools.org/"&gt;http://gulenschools.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;مدارس Aspire Schools في امريكا،&lt;/span&gt; ويبدو انها متفوقة لدرجة ان مؤسسة بيل وملندا جيتس تدعمها ماليا وكتبت عنها &lt;a href="http://www.gatesfoundation.org/grantee-profiles/Pages/aspire-public-schools-early-college-high-school.aspx"&gt;هذا المقال&lt;/a&gt;. لاحظ كيف انهم يهتمون بإعداد المعلم عن طريق عملية mentoring بأن يلزم المعلم الجديد بالتدرب على يد معلم اقدم يحضر للمتدرب حصصه ويوجهه؛ احيانا حتى يعطي نصائح بمايكروفون  للمعلم المبتديء الذي يضع سماعات في اذنيه! &lt;a href="http://www.aspirepublicschools.org/"&gt;http://www.aspirepublicschools.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;مدارس المغرب&lt;/span&gt; وطريقة متميزة لتدريس اللغة العربية (القراءة والكتابة). اترككم مع &lt;a href="http://www.bab.com/articles/full_article.cfm?id=8274"&gt;هذا المقال عن الموضوع&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;المدارس الفنلندية&lt;/span&gt; من افضل المدارس في العالم، حتى ان الدول الاخرى صارت ترسل البعثات لترى ماذا يفعلون بالضبط. هذا المقال &lt;a href="http://www.theatlantic.com/national/archive/2011/12/what-americans-keep-ignoring-about-finlands-school-success/250564/#.Tv4NA-e7HkY.mailto"&gt;يحكي قصة&lt;/a&gt; هذه المدارس وهناك &lt;a href="http://www.amazon.com/Finnish-Lessons-Educational-Change-Finland/dp/0807752576"&gt;كتاب&lt;/a&gt; يلخص الدروس من التجربة لمن يهتم. لا اظن انه يمكن تطبيق التجربة كما هي في مجتمعنا في صورته الحالية، ومؤلف الكتاب نفسه يقول انه ليس ارشادات تطبق كما هي لأن كل مجتمع مختلف، لكن فهم التجربة نفسها مهم ومفيد في رأيي.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;هناك &lt;a href="http://www.amazon.com/Fractals-Mathematics-Education-Mathematical-Association/dp/0883851695"&gt;كتاب يتحدث&lt;/a&gt; عن استخدام الfractals (ذوات الأبعاد الكسرية) في تطوير مناهج الرياضيات اسمه "Fractals, graphics and mathematics education" ويبدو انه هناك حركة علمية في هذا الموضوع. القصة تبدو تستحق النظر والكسيريات هذه موضوع شيق في حد ذاته، أتمنى ان اتحدث عنه في المدونة.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;مناهج جديدة للتدريس&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;قد تابعت ذات مرة مناقشات للإجابة عن سؤال "ماذا ترى ينبغي تقديمه كمنهج دراسي؟". هذه بعض ملاحظات مختلطة بآرائي الشخصية. طبعاً هذا الكلام يفترض تدريس المنهج بإخلاص للاستفادة وليس مجرد تعريفات ومقررات تحفظ.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;التفكير الناقد:&lt;/span&gt; وهذا يشمل التمييز  بين الأفكار المعقولة والمغلوطة، المصادر وكيفية الاعتماد عليها والتمييز بين ذات المصداقية وغيرها، &lt;a href="http://iamsamy.blogspot.com/2011/08/blog-post.html"&gt;المغالطات المنطقية&lt;/a&gt;، وغير ذلك.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;فن الحوار والإقناع،&lt;/span&gt; سواء في مناظرة أو كتابة مقال أو  في ال"بزنس" مثل اختبار وظيفي. لكن يكون هذا مبني على افكار علمية مجربة وليس مجرد نصائح عامة مثل ما يحدث في كثير من كتب الsoft skills.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;إدارة الأموال الشخصية&lt;/span&gt; والادخار والتخطيط المالي للفرد والاسرة. ربما ايضا مقدمة بسيطة &lt;span style="font-weight: bold;"&gt;للقوانين&lt;/span&gt; تركز على الجانب العملي (كيف تتم كتابة العقود، ماذا تفعل لو طلبت للتحقيق، او للشهادة، كيف تتصرف  كضيف في بلد اجنبي...)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;منهج البحث العلمي،&lt;/span&gt; طالما ان كثير من طلبة المدارس قد يكونوا في مستقبلهم اطباء او اساتذة جامعة او طلبة ماجستير او مخترعين (نأمل ان يكثر هؤلاء في مجتمعنا !) فنحتاج مقدمة لأشياء مثل اسس إجراء التجارب، التحقق من النتائج إحصائيا، مبدأ قابلية الدحض falsifiability ، النظام الاكاديمي من مؤتمرات وpapers وورش عمل...الخ&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;افكار عامة:&lt;/span&gt; كل الافكار السابقة تندرج تقريبا تحت فئة "كيف يعمل المجتمع" او "كيف يتعايش الناس مع بعضهم". وإنه لمن العجب ان كل منا يكبر وهو لا يعرف هذه المباديء، رغم ان المدارس قد صنعت لتقوم بإعداد التلامذة لكي يكونوا افراد منتجين في المجتمع. اعتقد انه لو بحثنا سنجد الكثير مما يمكن تقديمه لتأهيل مواطن نافع ومرتاح.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;لا اقول اننا يجب ان نهرع ونطبق كل هذه المناهج، فربما هي مناسبة للمراحل الدراسية او لا، لكن على الاقل تستحق التفكير. ايضا هناك اسئلة كبيرة لو اردنا تطبيقها: في أي سنة دراسية؟ ما شكل المنهج؟ كيف سنجهز الذين سيدرسونه بينما هذه المباديء غائبة عن مجتمعنا اصلا؟&lt;br /&gt;&lt;br /&gt;اسئلة ينبغي الإجابة عليها :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;اختراع وإبداع&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;أيام النهضة الأوروبية كان كل الناس تقريبا يخترعون؛ من ابسط الأشياء (مثلا السوستة او بنسة الشعر) حتى اعقدها (المحرك البخاري). لماذا لا نحافظ على هذه الروح في مجتمعنا الحديث؟ لماذا لا يكون من ضمن الأنشطة - او حتى الحصص - اختراع؟&lt;br /&gt;&lt;br /&gt;ولو كان الاختراع الحقيقي صعبا فلماذا لا يمكن عمل حتى simulation؟ هناك لعبة على الإكس بوكس اسمها "Banjo Kazooie, nuts and bolts" ابطالها مخترعون وفي اللعبة نفسها تقوم بتركيب محركات نفاثة، اجنحة، عجلات..الخ لتصنع طائرة او سيارة. لو كنت سأفتح مدرسة اليوم لكنت - بدون مبالغة - جعلت فيها حصة بانجو كازوي. تأمل بنفسك:&lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3hJfTQ2dBZA?version=3&amp;amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/3hJfTQ2dBZA?version=3&amp;amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="360" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ألعاب الاختراع بشكل عام لم تعد نادرة، ولعل من اكثرها طموحاً لعبة اسمها Minecraft تبني فيها اشياء على درجات متنوعة من التعقيد حتى ان احد اللاعبين قام &lt;a href="http://www.youtube.com/watch?v=yxAmphwLPDY"&gt;ببناء معالج حاسوبي&lt;/a&gt; CPU من داخل اللعبة نفسها!!&lt;br /&gt;&lt;br /&gt;هذه النوعية من الألعاب يا رفاق اسمها الفرصة الذهبية. أين المصممون العباقرة ليضعوا مناهج اختراع مبنية على مثل هذه البرامج؟ أين المدرسون الشجعان الذين سيجربوا تخريج أول دفعة من المخترعين الصغار؟ أين المبرمجون العرب الذين سيصنعون العاباً افضل من تلك؟&lt;br /&gt;&lt;br /&gt;لماذا لا نصنع مثلا لعبة لتصميم نظام مرور بالمدينة. يبني فيها اللاعب طرق سيارات، خطوط اتوبيس ومترو انفاق، اشارات وتقاطعات..الخ ثم تضغط زر 'تجربة' فيقوم الجهاز بعمل simulation ليكتشف التلميذ اي اختناقات مرورية ويتعلم من اخطائه؟&lt;br /&gt;&lt;br /&gt;ومادمنا ذكرنا الإبداع، فلابد أن نذكر الإبداع البرمجي، ووجود لغات للبرمجة الإبداعية أو المشجعة على الإبداع مثل &lt;a href="http://www.agentsheets.com/"&gt;Agent Sheets &lt;/a&gt;مثلاً، او MIT &lt;a href="http://scratch.mit.edu/"&gt;Scratch&lt;/a&gt;، أو لغة &lt;a href="http://kalimat-lang.com/"&gt;كلمات&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;وإن ذكرنا البرمجة فلنذكر أيضاً...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;المدرسة الفكرحوسبية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;التفكير الحوسبي هو تطبيق علوم الحاسب على سائر العلوم والنشاطات البشرية، واستخدام البرمجة كأساس للتدريس والبحث في العلوم الأخرى من لغة وطبيعة وهندسة وأحياء وادب و...و...&lt;br /&gt;&lt;br /&gt;العالم كله الآن يسعى لإدخال هذا العلم الجديد في المدارس والجامعات. الآن تخيل مدرسة تقوم بشرح النحو عن طريق الparse trees، أو قوانين نيوتن عن طريق ان يأخذ التلميذ المعادلات ويدخلها في برنامج يكتبه بنفسه، ثم يشغل البرنامج ليرى الاجسام تتحرك ويرى الفعل ورد الفعل. أو برنامج بصريات، يدخل فيه القوانين ثم يرى شعاع الضوء وهو ينعكس وينكسر ويمر عبر العدسات، فإن كتب خطأ في القانون يرى الصورة تخرج عكس المتوقع، ويتعلم العلاقة بين القانون وتطبيقه في الواقع.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;خاتمة&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;يحتاج الأمر للكثير من التأمل. والأفكار نفسها تحتاج لتقييم وتجربة عملية. لكن هذا المقال مساهمة مني لرجال ونساء النهضة الذين يرغبون في بناء مدارس المستقبل. أتمنى أن يكون هناك حوار مجتمعي في هذا الأمر.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5414140844827628656?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5414140844827628656/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5414140844827628656' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5414140844827628656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5414140844827628656'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/blog-post_11.html' title='أفكار عن صنع مدارس المستقبل'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-3621092149593310165</id><published>2012-01-11T13:02:00.000-08:00</published><updated>2012-01-12T06:24:48.231-08:00</updated><title type='text'>خطط النهضة: جدول المحتويات</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt; هذه الصفحة تجميع يحدث باستمرار لمقالات النهضة دون غيرها، لمن يريد ان يقرأها او ينشرها&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;خطة النهضة الأساسية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;الجزء الأول&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2011/02/2.html"&gt;الجزء الثاني&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://iamsamy.blogspot.com/2011/05/3.html"&gt;الجزء الثالث&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2011/12/4.html"&gt;الجزء الرابع&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;التفكير الحوسبي&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.facebook.com/note.php?note_id=10150457666766969"&gt;التفكير الحوسبي: مفتاح لنهضة علمية عربية&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-weight: bold;" href="http://iamsamy.blogspot.com/2011/12/blog-post_27.html"&gt;التفكير الحوسبي، كيف سيغير العلم؟&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/note.php?note_id=10150459368336969"&gt;A key for advancing science and technology: computational thinking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2009/04/blog-post.html"&gt;البرمجة والتفكير وفرصة للتفوق العلمي&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2011/09/blog-post.html"&gt;يوم في حياة أطفال مبرمجين&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2011/10/blog-post.html"&gt;يوم في حياة أعضاء بمركز التفكير الحوسبي&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;الأطفال والبرمجة&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2008/04/blog-post.html"&gt;علّموا الأطفال البرمجة&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2010/12/blog-post_31.html"&gt;لغة برمجة  عربية تعليمية: بعض الاعتراضات والرد عليها&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2010/04/blog-post.html"&gt;بيئة حية متكاملة&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;اختراعات وافكار ومشاريع&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://iamsamy.blogspot.com/2012/01/blog-post_11.html"&gt;أفكار عن صنع مدارس المستقبل&lt;/a&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/document/d/1zA9_EfTSnWF2LfNdcgR6lBe7BoAGqDpCPQFs3cVIa8A/edit?hl=ar"&gt;مركز التفكير الحوسبي&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.kalimat-lang.com/"&gt;كلمات، لغة البرمجة العربية الجميلة&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post_14.html"&gt;جهاز أوراق: عربي، قلمي، ذكي&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-3621092149593310165?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/3621092149593310165/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=3621092149593310165' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3621092149593310165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3621092149593310165'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2012/01/blog-post.html' title='خطط النهضة: جدول المحتويات'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-967422903974853076</id><published>2011-12-27T08:22:00.000-08:00</published><updated>2011-12-27T09:41:23.707-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computational-thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>التفكير الحوسبي: هل سيغير العلم حقا؟</title><content type='html'>يبدو أن المهتمون بعلوم الحاسب لا يجدون صعوبة في تقدير الأهمية الكبيرة لعلم التفكير الحوسبي. انظر مثلاً لما &lt;a href="http://www.cs.cmu.edu/%7ECompThink/index.html"&gt;يقوله الباحثون&lt;/a&gt; في جامعة كارنجي ميلون عن هذا المجال الناشيء:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 51, 0);"&gt;لقد صارت علوم الحاسب مؤثرة تأثيراً ثورياً على البحث والاكتشاف العلمي. وباختصار فإنه يكاد يستحيل القيام بأي بحث في أي مجال علمي أو هندسي بدون التفكير حوسبياً.  ثم أن تأثير الحوسبة ليمتد أبعد بكثير من البحث العلمي ليؤثر في حياتنا جميعاً. &lt;span style="font-weight: bold;"&gt;لكي يزدهر في عالمنا اليوم، فإن كل شخص منا يحتاج للتفكير الحوسبي&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;وفي مقالات سابقة لي فإني لم أمل من تكرار جملة أن التفكير الحوسبي يتوقع له تأثير على العلم يشبه تأثير النهضة الأوروبية. المشكلة هي أنني لم اصف قبل ذلك - بالتفصيل - لماذا يتوقع ذلك التأثير! ربما من السهل على المبرمجين او المهتمين بعلوم الحاسب ان يشعروا بهذا الأثر، لكن ماذا عن الأشخاص خارج هذا المجال؟&lt;br /&gt;&lt;br /&gt;هذا المقال هو مجموعة من الأفكار حاولت تجميعها لأفسر للقاريء - خاصة خارج المجال - أهمية هذا العلم.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;تفاصيل بلا التباس&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;تدور علوم الحاسب حول الخوارزمية Algorithm، وهي سلسلة من الخطوات الثابتة تقدم للكمبيوتر لينفذها. لا يستطيع الكمبيوتر ان يفهم نية المبرمج، لذلك يجب ان تكون التعليمات مفصلة ومحددة جداً. أي جزء غير محسوب أو مبهم يؤدي لئلا يقبل الكمبيوتر تنفيذ البرنامج، أو أن ينفذه بنتائج خاطئة.&lt;br /&gt;&lt;br /&gt;في مقابل ذلك فكر كيف نقوم نحن البشر بالتعامل احيانا مع العلوم أو القوانين أو سائر الأنشطة: احيانا نترك بعض الأجزاء غير محددة، أو ننسى تدارك كل الاحتمالات المختلفة في المسألة التي نتعامل معها، أو نترك أجزاء معينة يفسرها القاريء بنفسه (مما يؤدي لتعدد التفسيرات والخلاف عليها كما في القوانين).&lt;br /&gt;&lt;br /&gt;ولكن لو وصفنا نشاطنا العلمي والبشري بطريقة قريبة من الطرق البرمجية كلما أمكن فإننا نتخلص من كثير من هذا اللبس والغموض، ويكون التفاهم بين البشر والبشر - وليس فقط البشر والآلة - أوضح وادق كثيراً.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;لغة مشتركة بين العلوم&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;لقد كان لعلم مثل الجبر دوراً عظيماً في النهضة العلمية الحديثة، لماذا؟ لأنه لغة مشتركة بين كل العلوم المعروفة! فكر في المحاسبة، أو الهندسة الكهربائية، أو الآحياء، أو الطبيعة؛ وستجد فيها دوراً للجبر بصورة أو أخرى. غير ذلك: لو احتاج علم معين إلى تطوير في فهمنا للجبر فإن ذلك التطوير يعود بالمنفعة على كل العلوم الأخرى، ويفيد النشاط العلمي كليةً.&lt;br /&gt;&lt;br /&gt;وإن علوم الحاسب لعلها تكون مثل الجبر للقرن الحادي والعشرين، وتكون لغة موحدة لعلوم بشرية اكثر وأعمق، وتقدم لنا أداة مشتركة للتعامل معها جميعاً.&lt;br /&gt;&lt;br /&gt;وهذا واضح أمام أعيننا لو نظرنا حتى لسوق البرامج: فكل يوم يظهر تطبيقات في مجالات مجتمعية وطبية ورياضية وفنية وعلمية، وكلها تستخدم نفس مباديء علوم الحاسب - هي هي - لتصف هذه النشاطات.&lt;br /&gt;&lt;br /&gt;لم يبق لنا إذاً سوى استخدام علوم الحاسب لوصف والتفاهم حول هذه المجالات بيننا وبين انفسنا، وليس فقط بيننا وبين الآلة.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;لغة لوصف العمليات السارية&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;تشبه البرامج خطة أو وصفة كوصفات الطهي يأخذها الكمبيوتر وينفذها (ولكن ليس منفذها بالضرورة آلة، قد ينفذها إنسان أو فريق من البشر).&lt;br /&gt;&lt;br /&gt;وفكرة "خطة ثابتة مكتوبة يتم تنفيذها في عملية جارية غير ثابتة" هو من أهم الأفكار البشرية، ويمكننا أن نتخيل بدلا من برمجة التطبيقات أو الألعاب، أن "نبرمج" أي إجراء آخر مثل إجراءات تشغيل الشركات أو الإجراءات القانونية أو الخطط العسكرية أو العمليات الجراحية أو الدروس التعليمية أو الفن التفاعلي أو أي شيء يمكن وصفه بأنه إجراء أو عملية؛ سواء قام بها بشر أو جهاز.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;وسيلة للتفكير في الكفاءة بطريقة علمية منظمة&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;يهتم علماء الحاسب كثيراً بالكفاءة، فهم يريدون للبرامج أن تحل المشكلة المطلوبة في أقل عدد من الخطوات وبأقل موارد ممكنة. ومن أجل هذا فقد طوروا علوما راقية وفنوناً.&lt;br /&gt;&lt;br /&gt;اخترعوا مثلاً مقاييس رياضية مثل time complexity ليمكن بها المقارنة بين كفاءة وسيلتين لحل نفس المشكلة، والمشاكل نفسها صنفوها في فصائل حسب كفاءة افضل حل ممكن لكل منهاـ وهناك كتب وابحاث وعلماء لا يعدون قد تخصصوا لأجل هذا الجانب الذي يعد اساسيا في مجالنا.&lt;br /&gt;&lt;br /&gt;الآن تخيل هذا التراث العلمي الغني وقد تم تطبيقه على كل العمليات البشرية: في المستشفيات، في المصانع، في شركات النقل، في كل ما يمكن وصفه بأنه إجراء أو عملية كما ذكرنا. كم يا ترى سنوفر من الوقت والمال، بل وفي إنقاذ الحيوات البشرية؟&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;لغة، نَصِف بها تفكيرنا!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;وإن نفس الوسائل الفكرية لنجدها تتكرر في كل مشكلة وكل تطبيق: مثلاً فكرة الـgraph، أي مجموعة من العناصر وعلاقات بينها، نجدها في شبكة النقل بالمدن، وفي علم الحديث، وفي الابحاث العلمية التي يتخذ بعضها البعض مراجع، وفي الmind maps، وفي آلاف التطبيقات.&lt;br /&gt;&lt;br /&gt;أو حتى فكرة اصغر في علوم الحاسب مثل فكرة الطابور queue: تجدها في ممرات الإقلاع والهبوط في المطار، وفي إرسال البيانات عبر الإنترنت، وفي تنظيم المهام إدارياً، وفي طباعة الوثائق، وهكذا.&lt;br /&gt;&lt;br /&gt;هذه الأشياء البسيطة في ظاهرها، الـgraph أو tree أو queue أو stack، هي خبز علماء الحاسوبيات الذي يعيشون عليه: يبحثون فيها ويكتبون الأبحاث عنها منذ عقود، كيفية التعبير عنها رياضياً بكفاءة، كيفية حساب خصائص معينة لها (مثل أقصر طريق بين نقطتين)، وغير ذلك الكثير.&lt;br /&gt;&lt;br /&gt;إن هذه الأبحاث تعتمد عليها الحياة الحديثة: تخطيط الطرق في المدن، أو خطط المشاريع والجداول الزمنية، أو الاستهلاك الأمثل للمواد الخام في المصانع، أو صنع الدوائر الكهربائية، كلها تعتمد على هذه الوحدات البسيطة.&lt;br /&gt;&lt;br /&gt;والأن فكر معي: ماذا لو اخرجنا هذه المفاهيم من حظيرة علوم الحاسب وقدمناها للناس كافة في المدارس الإعدادية والثانوية كما يأخذون الحساب والجبر، ولم تعد حكرا على مجال من المجالات بل صارت جزءا من التفكير كله؟ ألا تدرك معي ضخامة الأمر وتأثيره؟ التفكير الحوسبي!&lt;br /&gt;&lt;hr /&gt;أرجو أن أكون قد ساهمت في توضيح أهمية هذا العلم الجديد الشيق.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-967422903974853076?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/967422903974853076/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=967422903974853076' title='1 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/967422903974853076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/967422903974853076'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/12/blog-post_27.html' title='التفكير الحوسبي: هل سيغير العلم حقا؟'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-3593276380618568961</id><published>2011-12-12T15:43:00.000-08:00</published><updated>2011-12-14T16:13:53.049-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='metaprogramming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><category scheme='http://www.blogger.com/atom/ns#' term='kick'/><title type='text'>Dreams about metaprogramming in Kalimat</title><content type='html'>&lt;div dir="ltr" style="text-align: left;"&gt;&lt;span style="font-style: italic;"&gt;(Note: These are only design thoughts - I do not promise that all or any of those features will actually be in Kalimat).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm a big Lisp fan. It seems I can't create a language without trying to turn it into a Lisp. One of the reasons Kalimat got finished in the first place was that I decided to forget all the macros and metaprogramming and try my best to do a good "normal" language.&lt;br /&gt;&lt;br /&gt;But now macros call me again...&lt;br /&gt;&lt;br /&gt;The first thing I want to add is reified parse trees. I'll make the examples in Kick - the English version of Kalimat - because the Blogger editor has problems with mixing Arabic and English text. But if I implement this it will probably be implemented in Kalimat first.&lt;br /&gt;&lt;br /&gt;Now consider this code:&lt;br /&gt;&lt;pre&gt;m = myParseTree( )&lt;br /&gt;print m: toString( )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What should be its expected output? Probably something like this:&lt;br /&gt;&lt;pre&gt;Program(&lt;br /&gt;    statements = [&lt;br /&gt;        assignmentStmt(m, functionCall(myParseTree, [])),&lt;br /&gt;        printStmt(methodCall(m, toString, [])) ])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Looks like Lisp already :). The program here can see the objects that represent its own parse trees. This has many benefits. For example I can create automatic documentation tools, write code to convert a program into another language, create programs that do code generation or code verification, all without needing to write a Kalimat parser!&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Modifying the trees&lt;/h3&gt;In a possible next step, I can make the program modify it own parse trees, and enable something like Lisp macros, C++ template metaprogramming, or MetaLua.&lt;br /&gt;&lt;br /&gt;What do I mean? Suppose I could mark some functions as special "compile time code". Then I can write a function like this:&lt;br /&gt;&lt;pre&gt;compiletime function const(code ~ expression):&lt;br /&gt;code: replace(evaluationOf(code))&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;...and use this function like so:&lt;br /&gt;&lt;pre&gt;x = const(sin(0.5) * cos(3) / factorial(3))                      &lt;br /&gt;&lt;/pre&gt;This will result in the code becoming like this; &lt;span style="font-weight:bold;"&gt;before the program is compiled:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;x = -0.0791046143&lt;br /&gt;&lt;/pre&gt;Notice what happened: The program's parse tree was modified to replace an expression without variables with its own result (an optimization called constant-folding). This means that during the program's run the expression won't need to be evaluated.&lt;br /&gt;&lt;br /&gt;What other tricks can we do? Imagine:&lt;br /&gt;&lt;pre&gt;classFromDbTable("person")&lt;br /&gt;classFromDbTable("department")&lt;br /&gt;&lt;/pre&gt;...and before compilation this code becomes:&lt;br /&gt;&lt;pre&gt;class person:&lt;br /&gt; has name, id, department, salary&lt;br /&gt; responds to save(db), load(db)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class department:&lt;br /&gt; has name, location&lt;br /&gt; responds to save(db), load(db)&lt;br /&gt; replies to getEmployees()&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;Here the compiler ran the "classFromDbTable" macro, which made a connection to the database, retrieved the needed information about tables and relations, and generated a class for each of the given table with methods to save a record, load a record, or retrieve related records.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Even more dreams&lt;/h3&gt;What can we do next? This is an active research area and I don't know if I can/want to implement this; but we could allow certain Kalimat modules to modify the parser before compilation. It means a Kalimat program can define a special version of Kalimat syntax and then we write the rest of that program in the new syntax! For example, if we are developing a game, we can make special syntax for declaring a game character:&lt;br /&gt;&lt;pre&gt;syntax character:&lt;br /&gt;  codeForm: ...how it should look...&lt;br /&gt;  translation: ...actual kalimat code it should become...&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;...and then use the new syntax as if it were part of the existing Kalimat syntax:&lt;br /&gt;&lt;pre&gt;character Ship:&lt;br /&gt;  image "ship.png"&lt;br /&gt;  control = keyboard&lt;br /&gt;  ai attack(enemy), maneuver(map)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;ai attack for ship(enemy):&lt;br /&gt; ...implement attack...&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;ai maneuver for ship(map):&lt;br /&gt; ...implement maneuver...&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;So, what's the purpose of this article? &lt;span style="font-weight: bold;"&gt;First&lt;/span&gt;: to show you that compile-time meta-programming is cool. Right? :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Second&lt;/span&gt;, to share with you some features I'm considering for Kalimat and hear any comments or suggestions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Third&lt;/span&gt;, this article also answers a question I sometimes get: Why reinvent the wheel implementing a new language with its own parser, compiler, VM...etc. The answer is because Kalimat is not a translation of an existing language: it &lt;i&gt;is&lt;/i&gt; a brand new language with its own features, design, and ideas.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-3593276380618568961?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/3593276380618568961/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=3593276380618568961' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3593276380618568961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3593276380618568961'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/12/dreams-about-metaprogramming-in-kalimat.html' title='Dreams about metaprogramming in Kalimat'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7577819293061194822</id><published>2011-12-09T09:21:00.000-08:00</published><updated>2011-12-09T09:52:48.898-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nahda-plan'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>خطة للنهضة (4): أنا والنهضة</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;المحتويات: [&lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;الجزء الأول&lt;/a&gt;، &lt;a href="http://iamsamy.blogspot.com/2011/02/2.html"&gt;الجزء الثاني&lt;/a&gt;، &lt;a href="http://iamsamy.blogspot.com/2011/05/3.html"&gt;الجزء الثالث&lt;/a&gt;، الجزء الرابع هذا المقال]&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;قلت في المقالات السابقة أنني أريد خطة موزعة يقوم بها المجتمع كله، وليس خطة مركزية ذات قائد وجدول زمني...الخ&lt;br /&gt;&lt;br /&gt;لكن هناك بعض الأنشطة أسعى لأن أقوم بها بنفسي (هذا لا يمنع الآخرين من القيام بها أيضاً...ربما يتجهون اتجاهات لم تخطر على بالي، أو ننجح نحن الاثنين!). لا أريد أن اسمي نفسي "مفكراً" واجلس على لوحة المفاتيح أكتب. أريد أن اكون شخص ذو فعل يشارك في النهضة بيديه.&lt;br /&gt;&lt;br /&gt;ثم أن أفضل طريقة لإقناع الناس بأفكار "الضربات الجراحية"، "العلم المستشري"،...الخ هي أن يرى الناس نماذج تتحقق أمامهم. بكل تأكيد لن اكون أول من يقدم هذه النماذج! فقد بدأت النهضة بالفعل على يد كثيرين شباباً وكباراً كانوا سباقين، بل حتى بعض الأفكار المقترحة على المدونة وجدت من قد حققها بالفعل، لكن على الأقل لعلي أقدم أمثلة تضاف لما فعله هؤلاء.&lt;br /&gt;&lt;br /&gt;حسناً، ماذا أريد أن افعل إذاً؟&lt;br /&gt;&lt;br /&gt;اول اهتماماتي حاليا هو نقطة &lt;span style="font-weight: bold;"&gt;التفكير الحوسبي&lt;/span&gt;، وقد اتعبتكم بالحديث عنها بالفعل فلن أقول المزيد. لو لم تسمع عنها انظر من فضلك للروابط في العمود الأيسر في بداية هذه الصفحة :)&lt;br /&gt;&lt;br /&gt;ثاني اهتاماتي، وإن كان للمدى الطويل، هو &lt;span style="font-weight: bold;"&gt;جهاز أوراق اللوحي&lt;/span&gt;: عربيّ، قلميّ، ذكيّ.&lt;br /&gt;&lt;br /&gt;تخيل الـiPad لو كان بقلم ويتعرف على خطك وكتاباتك ورسوماتك. تستطيع أن ترسم شخصيات وتحركها بالكمبيوتر، أو ترسم شكلا هندسيا وتقيس مساحته، أو دائرة كهربائية يحللها الكمبيوتر لك، أو صحفي يدون الملحوظات بخط يده ثم يعود للمكتب ويحولها لنص الكتروني. أو مجلس علم في مسجد، والمعلم والتلاميذ كل منهم معه جهاز اوراق وقلم، وكل منهم ممسك بجهازه يتناقشون ويرسمون ويدونون في حوار بشري/رقمي.&lt;br /&gt;&lt;br /&gt;بالنسبة لي أوراق ليس مجرد جهاز كمبيوتر: إنه تجربة اجتماعية. أداة للتعبير عن الأفكار وغرس ثقافة الإبداع. الم يكن اختراع المطبعة أحد عوامل النهضة الأوروبية؟ أتمنى أن يكون أوراق مطبعة القرن الواحد والعشرين.&lt;br /&gt;&lt;br /&gt;هناك أشياء صغيرة أيضاً أسعى لعملها حالياً إن شاء الله: مثلاً احاول تقديم &lt;span style="font-weight: bold;"&gt;مجلس علم &lt;/span&gt;أو أكثر (فيزياء، حوسبة..) في المساجد وتصويرها فيديو ونشرها على الإنترنت لعل هذا يوحي لذوي العلم بتقليد الفكرة. غرس بذور إن استطعت.&lt;br /&gt;&lt;br /&gt;أفكر أيضاً في شيء على غرار &lt;span style="font-weight: bold;"&gt;"ويكي نهضة"&lt;/span&gt;، موقع يتبادل فيه الناس افكار الضربات الجراحية على محاور الخطة الثلاثة ويخططون للعمل ويتناقشون في حوار مفتوح. لكن غالباً ليس لي خبرة في تنظيم التفاعلات البشرية على الإنترنت، فـ"نشاطي" في هذا الموضوع حالياً هو إخبار الناس بالفكرة :)&lt;br /&gt;&lt;br /&gt;هل سأنجح في أي من هؤلاء؟ هل سأبدأ أصلاً فيما لم ابدأ فيه؟ لا أعلم. حتى ذلك الحين الأفكار على المدونة لمن يشاء! لست محتاجا لأن تنتظرني حتى تتحقق الأفكار!&lt;br /&gt;&lt;br /&gt;ماذا عنك أنت؟ منذ نشرت الأجزاء الأولى من هذه الخطة ويأتيني السؤال: الخطة تعجبني، لكن ماذا افعل بالضبط؟&lt;br /&gt;&lt;br /&gt;كل إنسان له فترة يكتشف فيها اهدافه ووسيلة تحقيقها. انظر إلى رسالة، صناع الحياة، قبيلة TV، سلفيو كوستا، ...الخ...الخ. كل شخص قد جرب وفكر وتناقش حتى وجد "رُكنه" الذي يرتاح له.&lt;br /&gt;&lt;br /&gt;تقول لي: كلام حسن، لكن الا يوجد لديك اقتراحات اكثر تحديداً؟ في الواقع كنت أنوي عمل جزء خامس من هذه السلسلة اسمه "أنت والنهضة" أجيب فيه على هذا السؤال، لكن الإجابة لم تتشكل جيداً في ذهني. لو وجدت ما اقول....فانتظروا الجزء القادم!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7577819293061194822?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7577819293061194822/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7577819293061194822' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7577819293061194822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7577819293061194822'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/12/4.html' title='خطة للنهضة (4): أنا والنهضة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7838364366686755711</id><published>2011-12-02T14:40:00.000-08:00</published><updated>2011-12-03T03:31:52.997-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>مطابقة الأنماط في لغة البرمجة كلمات</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ملاحظة: هذه الأمثلة تحتاج نسخة كلمات ديسمبر 2011 أو أحدث. يمكن تحميل أحدث نسخة من &lt;a href="http://code.google.com/p/kalimat/downloads/list"&gt;هنا&lt;/a&gt; أو &lt;a href="http://www.kalimat-lang.com/"&gt;هنا&lt;/a&gt;.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;مطابقة الأنماط pattern matching هي خاصية في لغات برمجة كثيرة وهي الآن في كلمات أيضاً. سوف نتعرف عليها الآن.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;تخيل أنك تريد كتابة إجراء اسمه اطبع.الأسم، يأخذ اسماً في أحد الصور الآتية:&lt;/div&gt;&lt;ul dir="rtl" style="text-align: right;"&gt;&lt;li&gt;مصفوفة من عنصرين: الاسم واسم الأب&lt;/li&gt;&lt;li&gt;مصفوفة من ثلاثة عناصر: الاسم، اسم الأب، واسم العائلة على طريقة أهل الخليج العربي&lt;/li&gt;&lt;/ul&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ربما يمكن كتابة هذا الإجراء هكذا:&lt;/div&gt;&lt;div dir="rtl" style="background-color: #f0f0ff;"&gt;&lt;pre style="text-align: right;"&gt;&lt;span style="color: blue;"&gt;إجراء&lt;/span&gt; اطبع.الاسم ( م ) :&lt;br /&gt;    &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م &lt;span style="color: blue;"&gt;هو&lt;/span&gt; مصفوفة.قيم &lt;span style="color: blue;"&gt;وأيضا&lt;/span&gt; عدد( م ) = 2 :&lt;br /&gt;        الاسم = م [ 1 ] &lt;br /&gt;        اسم.الأب = م [ 2 ] &lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; الاسم ، &lt;span style="color: magenta;"&gt;" "&lt;/span&gt; ، اسم.الأب &lt;br /&gt;    &lt;span style="color: blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م &lt;span style="color: blue;"&gt;هو&lt;/span&gt; مصفوفة.قيم &lt;span style="color: blue;"&gt;وأيضا&lt;/span&gt; عدد( م ) = 3 :&lt;br /&gt;        الاسم = م [ 1 ] &lt;br /&gt;        اسم.الأب = م [ 2 ] &lt;br /&gt;        اسم.العائلة = م [ 3 ] &lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; الاسم ، &lt;span style="color: magenta;"&gt;" بن "&lt;/span&gt; ، اسم.الأب ، &lt;span style="color: magenta;"&gt;" آل "&lt;/span&gt; ، اسم.العائلة &lt;br /&gt;    &lt;span style="color: blue;"&gt;تم&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;لكن هذه الكود تبدو رتيبة ومتكررة، التأكد ان القيمة المقدمة مصفوفة، التأكد من العدد، تفكيك البيانات إلى متغيرات...&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هذه النوعية من المهام هي الدور الطبيعي لمطابقة الأنماط! هيا نكتب نفس الإجراء بالطريقة الجديدة:&lt;/div&gt;&lt;div dir="rtl" style="background-color: #f0f0ff;"&gt;&lt;pre style="text-align: right;"&gt;&lt;span style="color: blue;"&gt;إجراء&lt;/span&gt; اطبع.الاسم ( م ) :&lt;br /&gt;    &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ [ ؟الاسم ، ؟اسم.الأب ] :&lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; الاسم ، &lt;span style="color: magenta;"&gt;" "&lt;/span&gt; ، اسم.الأب &lt;br /&gt;    &lt;span style="color: blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ [ ؟الاسم ، ؟اسم.الأب ، ؟اسم.العائلة ] :&lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; الاسم ، &lt;span style="color: magenta;"&gt;" بن "&lt;/span&gt; ، اسم.الأب ، &lt;span style="color: magenta;"&gt;" آل "&lt;/span&gt; ، اسم.العائلة &lt;br /&gt;    &lt;span style="color: blue;"&gt;تم&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;هذه الكود أوضح بكثير، أليس كذلك؟ اقرأ علامة ~ كأنها "يطابق"، وعلامة الاستفهام قبل اسم المتغير معناها "أنا أريد أن أضع القيمة الموجودة هنا بداخل المتغير"، ولولا علامة الاستفهام لكان معنى وجود المتغير "أريد مقارنة قيمة المتغير بالقيمة الموجودة هنا".&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لكن ماذا لو كان يمكن أيضاً أن يقدم للإجراء - بجانب القيم السابقة - كائن من نوع "شخص" له حقلين هما الاسم واسم الأب؟ يمكننا تعديل البرنامج كالآتي:&lt;/div&gt;&lt;div dir="rtl" style="background-color: #f0f0ff; text-align: right;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;فصيلة&lt;/span&gt; شخص :&lt;br /&gt;    &lt;span style="color: blue;"&gt;له&lt;/span&gt; اسم ، اسم.أب &lt;br /&gt;&lt;span style="color: blue;"&gt;تم&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;إجراء&lt;/span&gt; اطبع.الاسم ( م ) :&lt;br /&gt;  &lt;span style="color: #666666;"&gt;  &lt;/span&gt;&lt;span style="color: #666666;"&gt;إذا&lt;/span&gt;&lt;span style="color: #666666;"&gt; م ~ [ ؟ الاسم ، ؟ اسم.الأب ] :&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;        &lt;/span&gt;اطبع الاسم ، " "&lt;span style="color: #666666;"&gt; ، اسم.الأب &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;    &lt;/span&gt;&lt;span style="color: #666666;"&gt; &lt;/span&gt;&lt;span style="color: #666666;"&gt;إذا&lt;/span&gt;&lt;span style="color: #666666;"&gt; م ~ [ ؟ الاسم ، ؟ اسم.الأب ، ؟ اسم.العائلة ] :&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;        &lt;/span&gt;&lt;span style="color: #666666;"&gt;اطبع&lt;/span&gt;&lt;span style="color: #666666;"&gt; الاسم ، &lt;/span&gt;&lt;span style="color: #666666;"&gt;" بن "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، اسم.الأب ، &lt;/span&gt;&lt;span style="color: #666666;"&gt;" آل "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، اسم.العائلة&lt;/span&gt; &lt;br /&gt;    &lt;b&gt;&lt;span style="color: blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ شخص &lt;span style="color: blue;"&gt;له&lt;/span&gt; اسم = ؟ أ ، اسم.أب = ؟ ب :&lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; أ ، &lt;span style="color: magenta;"&gt;" "&lt;/span&gt; ، ب &lt;/b&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;تم&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لاحظ كيف ان قراءة هذا الجزء من البرنامج سلسة جداً: "إذا كان م يطابق شخصاً له اسمٌ يساوي أ، واسم أبٍ يساوي ب، افعل كذا وكذا". شيء جميل جداً في رأيي :)&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;أخيراً ماذا لو كان يمكن للإجراء أيضاً أن يقبل قاموساً (مثل hashtable) فيه الاسم واسم الأب، وقد يكون أو لا يكون فيه اسم العائلة؟؟&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;كل مشكلة لها حل :)&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div dir="rtl" style="background-color: #f0f0ff;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;إجراء&lt;/span&gt; اطبع.الاسم( م ) :&lt;br /&gt;   &lt;span style="color: #666666;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;إذا&lt;/span&gt;&lt;span style="color: #666666;"&gt; م ~ [ ؟ الاسم ، ؟ اسم.الأب ] :&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;اطبع&lt;/span&gt;&lt;span style="color: #666666;"&gt; الاسم ، &lt;/span&gt;&lt;span style="color: magenta;"&gt;" "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، اسم.الأب &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;وإلا&lt;/span&gt;&lt;span style="color: #666666;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;إذا&lt;/span&gt;&lt;span style="color: #666666;"&gt; م ~ [ ؟ الاسم ، ؟ اسم.الأب ، ؟ اسم.العائلة ] :&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;اطبع&lt;/span&gt;&lt;span style="color: #666666;"&gt; الاسم ، &lt;/span&gt;&lt;span style="color: magenta;"&gt;" بن "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، اسم.الأب ، &lt;/span&gt;&lt;span style="color: magenta;"&gt;" آل "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، اسم.العائلة &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;وإلا&lt;/span&gt;&lt;span style="color: #666666;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;إذا&lt;/span&gt;&lt;span style="color: #666666;"&gt; م ~ شخص &lt;/span&gt;&lt;span style="color: blue;"&gt;له&lt;/span&gt;&lt;span style="color: #666666;"&gt; اسم = ؟ أ ، اسم.أب = ؟ ب :&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;اطبع&lt;/span&gt;&lt;span style="color: #666666;"&gt; أ ، &lt;/span&gt;&lt;span style="color: magenta;"&gt;" "&lt;/span&gt;&lt;span style="color: #666666;"&gt; ، ب &lt;/span&gt;&lt;br /&gt;  &lt;b&gt;  &lt;span style="color: blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ {&lt;span style="color: magenta;"&gt;"الاسم"&lt;/span&gt; =&amp;gt; ؟أ، &lt;span style="color: magenta;"&gt;"اسم.الأب"&lt;/span&gt; =&amp;gt; ؟ب، &lt;span style="color: magenta;"&gt;"اسم.العائلة"&lt;/span&gt; =&amp;gt; ؟ج}:&lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; أ ، &lt;span style="color: magenta;"&gt;" بن "&lt;/span&gt; ، ب ، &lt;span style="color: magenta;"&gt;" آل "&lt;/span&gt; ، ج &lt;br /&gt;    &lt;span style="color: blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ { &lt;span style="color: magenta;"&gt;"الاسم"&lt;/span&gt; =&amp;gt; ؟أ ، &lt;span style="color: magenta;"&gt;"اسم.الأب"&lt;/span&gt; =&amp;gt; ؟ب } :&lt;br /&gt;        &lt;span style="color: blue;"&gt;اطبع&lt;/span&gt; أ ، &lt;span style="color: magenta;"&gt;" "&lt;/span&gt; ، ب &lt;/b&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;تم&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لاحظ أنه قد كان يجب اختبار حالة اسم العائلة أولاً قبل حالة عدم وجود اسم عائلة، وذلك لأن مطابقة القواميس تتأكد فقط أن القيم المطلوبة موجودة، &lt;b&gt;وليس إذا كانت القيم الوحيدة الموجودة&lt;/b&gt;!&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هل تبقى شيء؟ أجل:&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;- يمكن المطابقة بالقيم العادية، مثلاً م ~ 12 ، أو مثل م ~ "مرحبا"&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;يمكن مطابقة مصفوفة بحيث لا يهم طولها، بل فقط قيم معينة تبدأ بها، هكذا:&lt;/div&gt;&lt;div dir="rtl" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: right;"&gt;&lt;span style="color: blue;"&gt;إذا&lt;/span&gt; م ~ [&lt;span style="color: magenta;"&gt;"شجرة"&lt;/span&gt;، ؟ب، ...] :&lt;/div&gt;&lt;div dir="rtl" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: right;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;افعل كذا&amp;gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;تم&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&amp;nbsp;هذا يطابق م مع مصفوفة أول عنصر فيها "شجرة"، ويضع ثاني عنصر في المتغير ب، ولا يهمه باقي العناصر، فقط ينبغي أن يكون عددها اثنان أو أكثر.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;- علامة ~ على لوحة المفاتيح العربية هي shift + ئ&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;-  وآخر شيء هو أن مطابقة الأنماط يمكن تبييتها nesting بحيث يمكن مثلاً  مطابقة إذا كانت القيمة مصفوفة أول عنصر فيها كائن من نوع كذا وله حقل اسمه  كذا....الخ.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7838364366686755711?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7838364366686755711/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7838364366686755711' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7838364366686755711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7838364366686755711'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/12/blog-post.html' title='مطابقة الأنماط في لغة البرمجة كلمات'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2106548249365838904</id><published>2011-12-02T05:27:00.000-08:00</published><updated>2011-12-02T05:27:00.634-08:00</updated><title type='text'>Hints of pattern matching...</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MXSv1FeUC4o/TtjSG90v5DI/AAAAAAAAAUs/eEkuP3G_D9s/s1600/kalimat+pattern+matching.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://1.bp.blogspot.com/-MXSv1FeUC4o/TtjSG90v5DI/AAAAAAAAAUs/eEkuP3G_D9s/s320/kalimat+pattern+matching.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2106548249365838904?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2106548249365838904/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2106548249365838904' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2106548249365838904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2106548249365838904'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/12/hints-of-pattern-matching.html' title='Hints of pattern matching...'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MXSv1FeUC4o/TtjSG90v5DI/AAAAAAAAAUs/eEkuP3G_D9s/s72-c/kalimat+pattern+matching.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-9004644542556266339</id><published>2011-11-09T04:47:00.000-08:00</published><updated>2011-11-09T18:39:19.912-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='writing'/><title type='text'>عن الكتابة</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="rtl" style="text-align: right;"&gt;يقول الكتّاب: Show, don't tell. أترجمها: اظهر ولا تخبر.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ما معنى هذا؟ تماشياً مع سياق هذا المقال لن اخبرك، لكن سأظهر لك :)&lt;br /&gt;&lt;br /&gt;ملاحظة قبل أن نبدأ: المهارة هي في استخدام الأدوات التعبيرية المناسبة في المكان المناسب. لست أقترح أن تستخدم هذا الاسلوب في كل مكان بدون تفكير. المهم؛ هيا نبدأ:&lt;/div&gt;&lt;hr /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;قبل&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;نريد أن نرى العلم مستشرياً في المجتمع، يشارك فيه كل الناس من كل الفئات وكل الأعمار، ويفعلون ذلك لأنهم يرغبون في العلم لا رغبةً في الشهادات أو الوظائف. لو حدث هذا سوف نجد المجتمع قد تغير جذرياً في الجانب العلمي.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;بعد&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;نريد أن نرى الأطفال يلعبون بتجميع روبوتات صغيرة، والشباب على المقهى يناقشون قضية علمية كما يُناقش حالياً مباريات الكرة، والناس يقفون طوابيراً أمام المكتبات. لو صارت هذه حياتهم الطبيعية فكيف تتخيلهم في الجامعات والمعامل؟&lt;/div&gt;&lt;hr /&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;قبل&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هناك اشخاص يتمسكون بفكرة ما ولا يتخلون عنها أبداً مهما كان الثمن، يكافحون من اجلها ويتنازلون عن رفاهية الحياة. بالنسبة لهم النجاح هو هدف اكبر مما يتخيل الشخص العادي، واهدافهم الكبيرة دائما نصب أعينهم.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;بعد&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هناك من يعيش سنوات يأكل يوما ويجوع يوما بينما يحاول فتح شركته، هناك من ينسى الحياة الأسرية ويكرس عمره لعلاج الكوليرا، هناك كاتب سيارته محجوزة منذ اسبوعين لم يدفع مخالفاتها لأنه مشغول بتلك الموسوعة التي بدأها منذ عشر سنوات.&lt;/div&gt;&lt;hr /&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;قبل&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;إن أردت أن تنضم للعمل السياسي فلابد أن تحتمل إذا أردت أن تنجح. لن يكون كل الناس ودودين ولن يكونوا منصفين ولن يكونوا اصدقائك، وسيتهمونك بأبشع التهم وعليك أن تستمر بالرغم من كل ذلك، ولا تجعل هذا يؤثر فيك.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;بعد&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ما ان تبدأ في العمل السياسي فستجد اسمك قد صار تهمة: هناك من سيتهمك انك عميل في مؤامرة امريكية، هناك من سيتهمك أنك مرتشي، ولو تعين أي قريب لك في أي مؤسسة حكومية فبالتأكيد أنت الذي عينته بالواسطة. قد تستطيع الرد على هؤلاء أو لا تستطيع، لكن في الحالتين حاول ألا تكثر من الجلوس حزيناً تتساءل "لماذا يفعلون بي ذلك؟؟".&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-9004644542556266339?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/9004644542556266339/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=9004644542556266339' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/9004644542556266339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/9004644542556266339'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/11/blog-post_09.html' title='عن الكتابة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7703471280685115611</id><published>2011-11-05T18:01:00.000-07:00</published><updated>2011-11-05T18:54:27.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><category scheme='http://www.blogger.com/atom/ns#' term='egypt'/><title type='text'>عشان كدة الثورة يا عمنا</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="rtl" style="text-align: right;"&gt;انت ممكن تكون بتفكر ان الثورة دي ما لهاش لازمة. ان حسني كان حرامي بس محافظ على الاستقرار. ان العادلي كان ظالم بس كان مخوف المجرمين، والانفلات الأمني ما كانش عمره حيبقى كدة لو العادلي كان موجود.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;أو ممكن تكون حاسس ان الثورة كانت صح، بس الشباب زودوها بقى، ايه اللي خلاهم يمشوا احمد شفيق، ماهو كان حيظبط البلد، صح؟ ايه اللي خلاهم كل شوية مظاهرات مظاهرات. دول عيال زبالة مش فاهمين الدنيا  ومش عاجبهم حاجة في عيشتهم.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;كان ايه اللي جبرنا على ده كله...عيال خايبة...&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;عاوز احكي لك حكاية: حسني كان عاوز يعمل انتخابات رئاسية في سبتمبر 2011، يعني كان زماننا دلوقتي بيحكمنا راجل ما بين الحياة والموت. أو كان زمان بيحكمنا ابنه دلوقتي.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;وسواء حسني أو ابنه، كان الحزب الوطني ماسك في كل حاجة، الحزب الوطني يعني رجال أعمال، بيفصلوا القوانين عشان البيزنس. يعني ممكن واحد يوقف بيع الطيور الحية عشان يجامل صاحبه بتاع الفراخ المجمدة. يعني مافيش شقق تتبني عشان يكسبوا من الحديد. يعني اكل وشرب وسكن الناس مشاركينهم فيه.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;والأنكت من كدة: فاكر لما كانوا بيبيعوا الأراضي في 2007؟ هو ايه اللي يتبقى من البلد غير الأرض؟ عارف -- البلطجية حيقعدوا يبرطعوا كام شهر؟ قول حتى سنة، قول حتى سنتين، انما دول كانوا عاوزين يقعدوا ميت سنة، ويسلموها لبعض كل ما يمشوا.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;والبلطجي حيسرق منك بيت والا عربية، والا حتى يخطف واحد، انما ما كانش حيبيع البلد كلها. واحسب عموما الناس اللي ماتوا من الجوع، ومن الأدوية المغشوشة، واللي وقعت عليهم بيوتهم، واللي ماتوا في المعتقلات، واللي غرقوا، وشوف الثورة جابت البلطجية صحيح والا البلطجية كانوا اللي قاعدين من قبلها..&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;وبعدين يا أخي البلطجي ممكن تدافع عن نفسك منه، انما الحكومة اما تسرق حتعمل ايه؟ حتفتح بقك حيطلعوك انت المجرم اصلاً، وتروح ورا الشمس...&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;طيب ليه بيتظاهروا لغاية دلوقتي؟ مش كان كفاية بقى ويهمدوا؟ حاقول لك...&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;الحرامي اللي ذاق النهب مش حيهدا، والحزب الوطني نفسه يرجع، والوزرا نفسهم يقعدوا، ولسة فيه ناس ذممهم خربانة؛ واحشهم بيع البلد عشان الفراخ المجمدة. عاوزين يملكوا البلد ويدوسوا علينا وعلى ابو أمنا.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;احمد شفيق كان سايب وزرا من النظام القديم؛ وكان تفكيره تفكير نظام قديم، وكان دماغه ناشفة ومايستحملش حد يقول له بم: ولو جينا نشيل الفاسدين من كل حتة كان حيقرفنا في عيشتنا ومش حناخذ منه حاجة في الآخر.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;عصام شرف له مشاكل كثير، بس فيه حاجات كويسة حصلت معاه بننساها: انتخابات نزيهة في الجامعات[جت بالعافية اصلا]، في النقابات، محاكمة الوزرا القدام، محاكمة علاء وجمال وزكريا عزمي [خليهم على الأقل ينشغلوا بالمحاكمة بدل ما ينشغلو بالرجوع للسلطة]. كل حاجة من دول كانت خازوق في وش الفاسدين؛ لأنهم كانوا مسيطرين اصلا على البلد حتى بعد حسني..ولو ما مشيوش كان ممكن شوية شوية يرجعوا للحكم تاني. وعموما مش دور شرف - أو غيره - انه يقعد ميت سنة، دوره انه يضبط البلد لغاية ما يبقى فيه انتخابات مجلس شعب عدلة ورئيس عدل ونختار بقى اللي احنا عايزينه بالورقة والقلم؛ ويبقى مافيش حوجة للمظاهرات اصلا.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;المظاهرات اللي حصلت كانت شد وجذب: مظاهرة جابت محاكمة، مظاهرة جابت قانون احسن للانتخابات، مظاهرة شالت حد فاسد. مش كل حاجة مظاهرات، معاك حق، ومش كل مظاهرة جابت نتيجة صح، بس برضه مش كل مظاهرة غلط؛ فيه مظاهرات كانت محتاجينها. الشباب دول مش عاوزين غير المصلحة، وضحوا بصحتهم وحياتهم وحريتهم عشان البلد؛ ولغاية دلوقتي لسة بيعتقلوا كل يوم والناس يقولوا اصلهم يستاهلوا..وحسني قاعد بيه في المستشفى وفالحين يقطعوا ويسحلوا في دول.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;طيب انا باقول لك كدة ليه؟ عشان البلد دي كويسة وتستاهل. عشان عاوزين نخلص بقى. عشان عاوزين نشيل الفاسدين والحال ينضبط ونعيش بقى. طب تعمل ايه؟ اعمل كل حاجة تقدر عليها يا سيدي، وانا حاقول لك شوية افكار آهي:&lt;/div&gt;&lt;ul dir="rtl" style="text-align: right;"&gt;&lt;li&gt;ما تقعدش في البيت يوم الانتخابات، شوف ايه حكاية الدايرة والفرد والقايمة وانتخب؛ بس خلي بالك من بتوع الحزب الوطني!! حتقول لي تعقيد وقرف اقول لك قرف يوم ولا قرف عمر بحاله.&lt;/li&gt;&lt;li&gt;لما ييجي وقت الانتخابات الرئاسية ما تنتخبش فلان عشان شكله جدع، أو عشان "قديم"، أو الكلام ده. اللعب بقى على كبير يابا واللي حيحكم حيأثر على مستقبل البلد كلها، لازم تشوف التفاصيل وتفكر وتدقق.&lt;/li&gt;&lt;li&gt;تابع الحالة السياسية، شوف ايه القضايا وحاول تفهمها، بس ما تصدقش كل حاجة يقولها الإعلام.&lt;/li&gt;&lt;li&gt;اعرف ان الحرية مش كلام فارغ. والديموقراطية مش بس كلام مثقفين: الحرية يعني انك تعرف تقول للحرامي يا حرامي من غير ما تروح المعتقل. الديموقراطية يعني مش اي حمار يحكم ويقول يا ارض اتهدي ما عليكي قدي. عارف؛ من اسبوعين كان فيه انتخابات عمادة في الكلية بتاعتي، كل واحد مرشح لم الدكاترة والمعيدين وقعد - يمكن لأول مرة في حياته - يشرح للناس ليه هو يستاهل يبقى عميد، ويعترف بمشاكل الكلية وحلولها، وحتى عيبوبه الشخصية ممكن يتكلم عنها ويواجهها. تخيل لو البلد كلها بقت كدة ايه اللي حيحصل.&lt;/li&gt;&lt;li&gt;دي قيمة الحرية، طب ايه ثمنها؟ انك تقرأ وتفهم وتتابع، انك تنتخب وتشارك، أو حتى بكلمة تقولها: تحذر واحد من انتخاب راجل فاسد، تقول لحد قريبك تعال معايا انتخب، أو حتى ساعات يعني - عارف - مظاهرة لو كانت في الحق.&lt;/li&gt;&lt;/ul&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&amp;nbsp;البلد ظروفها صعبة قوي. بس هي تستاهل. شد حيلك يا اخي.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7703471280685115611?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7703471280685115611/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7703471280685115611' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7703471280685115611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7703471280685115611'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/11/blog-post.html' title='عشان كدة الثورة يا عمنا'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5876166704879310660</id><published>2011-11-04T21:18:00.000-07:00</published><updated>2011-11-05T07:54:29.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='programming-language-theory'/><title type='text'>Almost all programming is metaprogramming</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Any sufficiently large program involves metaprogramming, whether the program's author meant it or not. By so I mean it:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Creates a 'program' in some specialized encoding, or 'language'&lt;/li&gt;&lt;li&gt;Writes an interpreter for that language&lt;/li&gt;&lt;li&gt;During runtime, creates a new program in the newly created language and executes it.&lt;/li&gt;&lt;/ul&gt;Or in other words, a sufficiently advanced data structure is indistinguishable from code.&lt;br /&gt;&lt;br /&gt;Let's think of this in terms of real-world (and some not so real-world) examples:&lt;br /&gt;&lt;br /&gt;1- Think of implementing a word processor; you have a specialized 'language' to describe paragraphs, lines, formatting, and so on and one or more 'interpreters' to take the program and render it to the screen or print it. Sometimes the language is very real, like for example Postscript.&lt;br /&gt;&lt;br /&gt;2- Also, parser combinators: You are essentially creating a program out of lambdas or objects. Consider the parsing primitives to be like instructions of a virtual machine, and the resulting parser as an AST that knits those instructions together. Running the parser is passing the instructions calls to the VM.&lt;br /&gt;&lt;br /&gt;3- Similarly, the reason a Turing machine is so powerful is because it has an infinite tape that can be freely accessed. If you study TM programs you'd find a lot of them generating intermediate data on the tape and then traversing this intermediate data using fixed circuitry in its transition diagram; so in other words interpreting it.&lt;br /&gt;&lt;br /&gt;All of this seems rather obvious, and somewhat too philosophical. What practical benefit do we get out of this? I think if we realize that our programming is mostly about creating and executing more specialized programs; we'd start thinking about tooling support for our specialized programs..&lt;br /&gt;&lt;br /&gt;Whether we're programming with C, Java or your favorite functional language, you probably have debugging, refactoring, and other support for the first level program; the (e.g Java code itself) the higher level program, however, is neglected as mere 'data'. So you'd be working on a lower abstraction level.&lt;br /&gt;&lt;br /&gt;There's ongoing research about tooling support for domain specific languages and making it easy to integrate them with the host language's debugger...etc. I suggest going to the next level: make it easy to treat any data structure as a DSL..&lt;br /&gt;&lt;br /&gt;That would probably require the host language to take homoiconism very seriously: If it's an OOP language the program itself would be composed of object literals. ML-like languages would have their code be composed of calls to data constructors. Prolog-like languages would have the program be a set of program facts. And so on. Basically, if the tools in the IDE work on code they should work similarly on anything else.&lt;br /&gt;&lt;br /&gt;After all this is done, imagine again working on our word processor: We could step over the rendering of each paragraph, then step into a given line to troubleshoot a bug. Tracing the running of a parser created from combinators would be on a rule-by-rule basis. The 'safe delete' refactoring could have a lot in common with the language's garbage collector. An error would make the IDE stop and show which piece of &lt;i&gt;input&lt;/i&gt; caused the problem instead of the troubled code in the main program.&lt;br /&gt;&lt;br /&gt;Or maybe I'm wrong. Maybe no one came with the idea because there's some obvious flaw in this reasoning. Or that the idea is vaguely defined and falls apart if studied in detail..I don't know!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5876166704879310660?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5876166704879310660/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5876166704879310660' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5876166704879310660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5876166704879310660'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/11/almost-all-programming-is.html' title='Almost all programming is metaprogramming'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2108806764097758063</id><published>2011-10-31T07:30:00.000-07:00</published><updated>2011-11-01T20:16:23.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nahda-plan'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><category scheme='http://www.blogger.com/atom/ns#' term='democracy'/><title type='text'>للديموقراطية صور كثيرة</title><content type='html'>رئيس الولايات المتحدة يأتي بالانتخاب، وكذلك أعضاء الكونجرس. دستورهم شهير في هذا الجانب حتى صارت كلمة "دستور جفرسوني" Jeffersonian Constitution تطلق على الدساتير المصنوعة على النمط الأمريكي. لكن الصورة الآن ليست كما نتخيل...&lt;br /&gt;&lt;br /&gt;سيطرة رجال الأعمال على الدولة حتى أن القوانين تُفصّل لهم خصيصاً، تفتيش الناس في المطارات، معتقلات جوانتانامو، ضرب المتظاهرين بالرصاص المطاطي في مظاهرات Occupy wall street. طبعاً مازال لديهم نقاط إيجابية كثيرة (ليس هدف مقالي الهجوم عليهم) لكني أريد أن أتساءل: كيف تتآكل الديموقراطية في الأمم؟ وكيف يمكن تحصينها لجعل تآكلها أصعب؟ هذه بالطبع اسئلة لها معنى في الجو السياسي الحالي، جو رسم الصورة المستقبلية للدول العربية، ومن هنا هذا المقال.&lt;br /&gt;&lt;br /&gt;تعال نضرب أمثلة على استخدام كلمة "ديموقراطية" في نسق غير سياسي، سنعرف لماذا بعد قليل:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;الفيسبوك ويوتيوب - ومن قبلهم المدونات - صنعوا ديموقراطية في الإعلام، وصار يمكن لأي شخص أن يصنع بذرة قناة إخبارية (مثل شبكة رصد وغيرهم). وهناك أشخاص مثلي لم يكن ليُسمع لهم صوت بدون هذه الأدوات.&lt;/li&gt;&lt;li&gt;المدونات بالذات جعلت إنشاء موقع على الإنترنت بسهولة ملء صندوق نصي. قبل ذلك كان يمكن لمتخصص أن يصنع موقعاً للإنترنت بلغة HTML  ويبحث لها عن host، لكن الآن خالتي تستطيع عمل مدونة إن أرادت.&lt;/li&gt;&lt;li&gt;لغة Visual basic وبرنامج Microsoft Access صنعوا في عصرهم ديموقراطية برمجية، بحيث يمكن لصيدلي مثلاً أو صاحب سوبر ماركت أن يصنع برنامجاً لمحله دون الحاجة لمبرمج متخصص.&lt;/li&gt;&lt;/ul&gt;ما الذي يجعلني اطلق كلمة "ديموقراطية" على كل من هذه المواقف؟ الشيء المشترك بين كل من هؤلاء هو فكرة نزع القوة من القلة وإعطاؤها للأكثرية. وللقوة صور عديدة...اقتصادية وفكرية وعلمية وتكنولوجية وسياسية وإعلامية...كل قوة منهم لو تركزت في يد قلة فإن هذه القلة قد تسعى لاستثمار قواها الحالية في اكتساب قوى جديدة. وبهذا تبدأ الديموقراطية في التآكل.&lt;br /&gt;&lt;br /&gt;وهذا ما حدث في أمريكا: جزء كبير من مشاكلهم سببها تركز الإعلام في يد فئات محددة توجه الشعب كيفما تشاء، إن أهملت تلك الفئات أي تجاوز لم يغضب من الشعب أحد، وإن ركزت على أشياء أخرى لم يتحدث أحد إلا عنها: لقد صاروا يحددون للناس ما هو المهم وما هو غير المهم. [فكر في ما حدث في مصر أيام مباراة الجزائر أيضاً]&lt;br /&gt;&lt;br /&gt;فكيف نحافظ على الديموقراطية إذاً؟ أشياء كثيرة، لكن من ضمنها فكرة "توزيع القوة على الأكثرية":&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;المعلومات قوة&lt;/span&gt;، لذلك لابد أن يكون هناك شفافية ويستطيع المواطن أن يعرف كل صغيرة وكبيرة تحدث في إداريات وحكم الدولة. لو تركزت هذه المعلومات في يد قلة فسيكون من الصعب محسابتهم أو وقف الفساد.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;التكنولوجيا قوة&lt;/span&gt;، لذلك لابد أن يكون استخدام الإنترنت مثلاً متاحاً للجميع بلا قيود، وبسعر رخيص وفي كل مكان، وإلا فسيكون السبيل الوحيد للحصول على المعلومات هو الوسائل التقليدية وهي سهل السيطرة عليها. كل تكنولوجيا يملكها قلة ولا يملكها كثرة هي نقطة يمكن إساءة استغلالها.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;الفكر قوة&lt;/span&gt;، ولو لم يكن الشعب كله على مستوى فكري عالٍ فسيمكن في أية لحظة أن يأتي من يسمون أنفسهم النخبة ويدّعوا - ولو زيفاً - أن الجميع لابد أن يستمع لهم لأن التفكير حكراً عليهم.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;المال قوة&lt;/span&gt;، وفي غياب العدالة الاجتماعية وتكافؤ الفرص والحراك الاجتماعي - أي وجود فرصة للفقير لكي يعمل ويرفع مستواه - ستجد دولة رجال الأعمال.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;الوظائف قوة&lt;/span&gt;، وأرى أنه لابد من تسهيل عملية أن يفتح من يريد شركته أو عمله الخاص ونشر تلك الثقافة، لكي يزيد استقلال كل شخص اقتصادياً ولا يجد نفسه معتمداً على الحكومة أو المؤسسات الكبيرة يعينونه متى شاووا ويتخلصوا منه متى شاؤوا.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;اللغة قوة&lt;/span&gt;، ولو تعلم الأكثرية فن الخطابة والتفاوض والإقناع لكان ذلك ايسر للحوار القومي بدلاً من أن يحتكر ذوو الكلام المزخرف التأثير على الآخرين.&lt;/li&gt;&lt;/ul&gt;وهكذا وهكذا..إن كنت تريد ترسيخ الديموقراطية في المجتمع عليك أن تسأل نفسك: &lt;span style="font-weight: bold;"&gt;ما هي صور القوة؟ وكيف يمكن كسر احتكارها؟&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;بالمناسبة، هل تذكر &lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;خطة النهضة&lt;/a&gt; التي ذكرتها من قبل على تلك المدونة؟ اسلوبها هو "رفع المستوى الفكري، تغيير القيم الاجتماعية" ومحاورها "العمل بالاسلام، طبقة وسطى قوية، علم مستشري".&lt;br /&gt;&lt;br /&gt;الخطة في اساسها اجتماعية، لكن مثل كل شيء لها جوانب سياسية أيضاً!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2108806764097758063?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2108806764097758063/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2108806764097758063' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2108806764097758063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2108806764097758063'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/10/blog-post_31.html' title='للديموقراطية صور كثيرة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8400546639392557020</id><published>2011-10-29T12:12:00.000-07:00</published><updated>2011-11-04T06:42:16.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='open-source'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>Kalimat-related open source project ideas</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;Do you like open source and want to create your own project? Do you like &lt;a href="http://www.kalimat-lang.com/"&gt;Kalimat&lt;/a&gt;? Do you want to contribute something to the future of programming in the Arab world?&lt;br /&gt;&lt;br /&gt;Here are some new projects that I would love to see for the Kalimat programming language, and which can be done independently of the main Kalimat package of you want to 'own' your project:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Kalimat for .Net&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you write a .Net implementation for SmallVM (the virtual machine of Kalimat &amp;amp; &lt;a href="http://iamsamy.blogspot.com/2011/10/pony-for-amina.html"&gt;Kick&lt;/a&gt;) then the rest would be easy: Just recreate the compiler that translates from Kalimat to SmallVM, or even use the original compiler.&lt;br /&gt;&lt;br /&gt;Why Kalimat for .net? It would make Kalimat both usable as an educational language and a professional one; opening the door for libraries that wrap ASP.net, ADO.net, ...etc into an Arabised API and make it available for Arab programmers; kids and adults alike.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;Automatic code documentation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The CoffeeScript language has a tool called &lt;a href="http://jashkenas.github.com/docco/"&gt;Docco&lt;/a&gt;, that takes commented source code and generates documentation that puts the code and the explanation side by side like &lt;a href="http://jashkenas.github.com/coffee-script/documentation/docs/coffee-script.html"&gt;this&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I really want a tool that works the same way; it would make it so much easier for educators to write Kalimat tutorials with heavy source code and notes, which is why the language was created in the first place!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Kalimat environment on the web&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would make trying the language much easier without needing to download anything and make Linux users happier (since currently Kalimat for Linux has an Ubuntu-only ready made package and other Linux users have to compile from source).&lt;br /&gt;&lt;br /&gt;Again, the secret is in SmallVM: If you write it using JavaScript and implement the run-time library (Graphics, Sprites, ...etc) with HTML5 then the IDE itself would probably not be too hard.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;More platforms&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to .Net, Kalimat could be ported to other platforms. If done right we could have some sort of a "Kalimat everywhere" ecosystem:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;SmallVM could be translated to, or interpreted by, ActionScript bytecode (ABC) to enable running Kalimat programs as &lt;b&gt;Flash applications&lt;/b&gt; (suggested by Issam Elbaytam in the comments)&lt;/li&gt;&lt;li&gt;Could similarly be translated to &lt;b&gt;Java&lt;/b&gt;, to use the Java platform or to create &lt;b&gt;Android&lt;/b&gt; programs&lt;/li&gt;&lt;li&gt;Or perhaps translated to Objective-C, to create &lt;b&gt;iOS applications&lt;/b&gt; ;)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-8400546639392557020?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/8400546639392557020/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=8400546639392557020' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8400546639392557020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8400546639392557020'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/10/kalimat-related-open-source-project.html' title='Kalimat-related open source project ideas'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-1547800400737240532</id><published>2011-10-24T06:27:00.000-07:00</published><updated>2011-10-24T07:11:26.647-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='memories'/><category scheme='http://www.blogger.com/atom/ns#' term='children'/><title type='text'>حكاية التلميذ الملول، والعملاق، والشراب المنوم</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;سنة 1991 كنت طالبا بالمرحلة الابتدائية في مدرسة قطر انترناشونال، وهي مدرسة على النظام البريطاني، المدرسون فيها اجانب، والتلامذة خليط من الأجانب والعرب.&lt;br /&gt;&lt;br /&gt;ووضع المدرّس أمامنا مجموعة من الصور كما يلي:&lt;br /&gt;1- عملاق اسطوري يحطم القرية&lt;br /&gt;2- شاب يحمل زجاجة شراب منوم&lt;br /&gt;3- العملاق يأكل عشاءه&lt;br /&gt;4- العملاق نائم&lt;br /&gt;5- سكان القرية يحتفلون&lt;br /&gt;&lt;br /&gt;وكان "الواجب" ذلك اليوم هو ان نكتب قصة مستوحاة من تلك الصور. لكني لم أرض أن أكتب تلك القصة..&lt;br /&gt;&lt;br /&gt;إنها مباشرة جداً ومملة..في الواقع لماذا ينبغي كتابتها أصلا؟ ان الصور وحدها تكفي لوصف الأحداث للقاريء، وأي إضافة عليها هي من باب التكرار بلا طائل. اضف إلى هذا ان المدرس السابق كان يحب الإبداع ويأتي كل يوم بجديد. كنت معتاداً على عمل أشياء أفضل. لكن هناك واجب ينبغي عمله. بدأت الكتابة...&lt;br /&gt;&lt;br /&gt;"كان هناك عالِم يعيش في المستقبل البعيد، وكان هناك مسابقة للأشياء الغريبة، وفكر العالم أن يعود إلى الماضي لكي يحضر شيئا من هناك يشارك به في المسابقة..."&lt;br /&gt;&lt;br /&gt;...وهكذا أكملت الحكاية عن العالم الذي ساعد أهل الماضي على التخلص من العملاق ومقابل ذلك أحضروا له شيئا غير موجود في المستقبل ليشارك به في مسابقته، طبعا كانت القصة صفحتين منها حوالى ثلاثة اسطر تصف الأحداث المطلوبة أصلاً في الواجب المدرسي :)&lt;br /&gt;&lt;br /&gt;وهذا ما اكتشفه المدرس طبعاً، لذلك وضع دائرة حول الثلاثة اسطر إياها وكتب بخط كبير: "The real story only begins here"&lt;br /&gt;&lt;br /&gt;وحين رأى أبي ذلك لم يعجبه الأمر. لم يكن أبي خبيراً باللغة الانجليزية، لذلك كان استنتاجه كالآتي: المعلم كتب بخط كبير، إذاً المعلم غير راض [في الواقع هذا الجزء صحيح].&lt;br /&gt;&lt;br /&gt;من الناحية "التقنية"، أنا فعلاً لم اقم بعمل الواجب كما ينبغي، لكن من اهتم بالطفل الذي شعر أن الواجب مستواه اقل مما يحب، وكتب بدلاً منه قصة للخيال العلمي؟&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-1547800400737240532?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/1547800400737240532/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=1547800400737240532' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1547800400737240532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1547800400737240532'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/10/blog-post_24.html' title='حكاية التلميذ الملول، والعملاق، والشراب المنوم'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2998932780397226158</id><published>2011-10-12T16:03:00.000-07:00</published><updated>2011-10-21T08:27:03.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><category scheme='http://www.blogger.com/atom/ns#' term='kick'/><title type='text'>A pony for Amina</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-PPfqc-THo3k/TqGO_znLp8I/AAAAAAAAATI/aFAto0WTBpQ/s1600/pony%2Bfor%2Bamina.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="http://2.bp.blogspot.com/-PPfqc-THo3k/TqGO_znLp8I/AAAAAAAAATI/aFAto0WTBpQ/s400/pony%2Bfor%2Bamina.png" alt="" id="BLOGGER_PHOTO_ID_5665967033046247362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-LgVpBXIA3ws/TqGO_vCJyVI/AAAAAAAAAS0/nQNkOBbfQFo/s1600/loop12.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 290px;" src="http://3.bp.blogspot.com/-LgVpBXIA3ws/TqGO_vCJyVI/AAAAAAAAAS0/nQNkOBbfQFo/s400/loop12.png" alt="" id="BLOGGER_PHOTO_ID_5665967031817193810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Sr4pPMfU5qQ/TqGO_e3CRnI/AAAAAAAAASs/T0plIZNQ_S0/s1600/confetti.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://3.bp.blogspot.com/-Sr4pPMfU5qQ/TqGO_e3CRnI/AAAAAAAAASs/T0plIZNQ_S0/s400/confetti.png" alt="" id="BLOGGER_PHOTO_ID_5665967027475596914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2998932780397226158?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2998932780397226158/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2998932780397226158' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2998932780397226158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2998932780397226158'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/10/pony-for-amina.html' title='A pony for Amina'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PPfqc-THo3k/TqGO_znLp8I/AAAAAAAAATI/aFAto0WTBpQ/s72-c/pony%2Bfor%2Bamina.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5899458975091510075</id><published>2011-10-12T15:26:00.000-07:00</published><updated>2011-10-24T08:27:33.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computational-thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='vision'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>يوم في حياة اعضاء بمركز التفكير الحوسبي</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;نحن في فترة ما في المستقبل القريب، وقد تم إقامة &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post.html"&gt;مركز التفكير الحوسبي&lt;/a&gt;. تهانينا؛ لقد اجتزت الinterview وتم قبولك للعمل فيه. اليوم ستأخذ جولة لترى شكله من الداخل.&lt;br /&gt;&lt;br /&gt;المركز في صورته الحالية مقسم إلى ثلاثة انشطة: &lt;span style="font-weight: bold;"&gt;التدريب، البحث العل&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;م&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ي، التواصل الاجتماعي&lt;/span&gt;. كل نشاط منهم يدعم النشاطين الآخرين في صورة متكاملة:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;تخيل ان البحث العلمي، بعد سنوات، وصل لنتائج هائلة: هل سنأخذ سنوات اخرى في إقناع المجتمع بها أم نقدمها في مجتمع مستعد للتفكير الحوسبي اصلاً؟ دور "التواصل الاجتماعي" هو الترويج لفكرة التفكير الحوسبي وأهميته من الآن.&lt;/li&gt;&lt;li&gt;البحث العلمي قسمان: تطبيق علوم الحاسب على كل العلوم الأخرى (هذا تعريف التفكير الحوسبي) وتطوير اساليب تعليم البرمجة وعلومها.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;لكي تقوم ببحث علمي تحتاج للقيام بتجارب، ولكي تقوم بتجارب تحتاج لأشخاص حقيقيين تعلمهم، هذا دور "التدريب".&lt;/li&gt;&lt;/ul&gt;توجد دورتان تدريبيان شغالتان حالياً، واحدة لتعليم البرمجة بلغة &lt;a href="http://iamsamy.blogspot.com/2010/06/blog-post.html"&gt;كلمات&lt;/a&gt;، والأخرى بلغة مطابقة لها ولكن &lt;a href="http://iamsamy.blogspot.com/2011/10/pony-for-amina.html"&gt;مترجمة&lt;/a&gt; للانجليزية. هذه إجابة تجريبية للسؤال الآتي: "ما مقدار الفرق بين تعليم البرمجة لأشخاص بلغتهم الأصلية وتعليمهم بلغة اجنبية عليهم؟" وهي إجابة تتبنى &lt;span style="font-weight: bold;"&gt;منهج البحث العلمي&lt;/span&gt; ولا تعتمد فقط على الآراء الشخصية.&lt;br /&gt;&lt;br /&gt;في الغرفة المجاورة يوجد فريق عمل صغير يطور كتاب للأطفال عن تجارب الفيزياء بالكمبيوتر. جدول محتوياته قريب من هذا:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;الحركة والسرعات&lt;/li&gt;&lt;li&gt;القوى، الجاذبية، التصادم&lt;/li&gt;&lt;li&gt;البصريات&lt;/li&gt;&lt;li&gt;الدوائر الكهربائية&lt;/li&gt;&lt;/ol&gt;الكتاب يجعلك تكوّد كل قانون فيزيائي في برنامج أو مكتبة، البرامج تتنوع بين تجارب، محاكاة لظواهر (مثل المجموعة الشمسية وكيف تتفاعل الجاذبية بين الشمس والكواكب) والعاب. برنامجي المفضل هو برنامج يجعلك ترص مجموعة من العدسات والمرايا ثم تدخل صورة ليريك البرنامج كيف تبدو من خلال الرصة التي وضعتها.&lt;br /&gt;&lt;br /&gt;ماذا عنك أنت؟ أول مهمة سنكلفك بها هي موقع برمجة على الانترنت، يسمح للطفل - أو أي شخص - أن يكتب الكود ويراها تنفّذ فوراً. سوف يكون مكتوبا بتكنولوجيا HTML5، ويحتاج لحيل كثيرة بالـ Ajax ليقوم بدوره. أيضاً يمكنك إن أردت أن تبدأ القراءة عن &lt;a href="http://mindstorms.lego.com/"&gt;MindStorms&lt;/a&gt; و &lt;a href="http://www.arduino.cc/"&gt;Adruino&lt;/a&gt;، لأن مهمتك التالية ستكون دراسة فكرة عمل لعب الكترونية صغيرة يمكن برمجتها.&lt;br /&gt;&lt;br /&gt;نشجعك على ان تكتب عن عملك في المدونة الخاصة بالمركز، فكل معلومة ننشرها للمجتمع لها دور. الاسبوع القادم سيكون هناك ندوة في إحدى كليات الحاسبات عن التفكير الحوسبي ودوره في المجتمع؛ نبدأ بالمبرمجين انفسهم ثم "نسرسب" الموضوع إلى المجتمع ككل.&lt;br /&gt;&lt;br /&gt;يحتاج العمل هنا إلى خبرة في مجالات كثيرة، ونحن نعلم أنك لست ملماً بها كلها..لذلك يوجد مجلس علم اسبوعي نتحدث فيه عن مواضيع متنوعة. احيانا عن الdistributed computing، احيانا عن النحو او الزخارف الإسلامية، احيانا عن علم النفس الإدراكي وعلاقته بتعليم الأطفال. من حين لآخر نأتي بضيوف من الخارج (من خارج المركز أو من خارج مصر) ليقدموا ندوات في مجالاتهم المختلفة.&lt;br /&gt;&lt;br /&gt;طبعاً هناك علوم متعمقة لا يكفي مجلس العلم لها، لذلك ندرس حاليا إمكانية لإرسال بعض اعضاء المركز ليحضروا ماجستير أو دكتوراه في جامعات خارجية في مواضيع متعلقة باهتمامات المركز. ما رأيك بالمناسبة &lt;a href="http://iamsamy.blogspot.com/2011/09/blog-post_15.html"&gt;بعلم لغات البرمجة&lt;/a&gt; كأحد مواضيع الدراسة؟&lt;br /&gt;&lt;br /&gt;(هذه الرؤية لم تتحقق بعد. تريد لها أن تتحقق؟ لماذا لا نفتح حواراً عن &lt;a href="http://goo.gl/T1zS0"&gt;تمويل المركز&lt;/a&gt;؟ لو لم تراها بعد، هذه رؤية للمركز من &lt;a href="http://iamsamy.blogspot.com/2011/09/blog-post.html"&gt;زاوية أخرى&lt;/a&gt;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5899458975091510075?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5899458975091510075/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5899458975091510075' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5899458975091510075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5899458975091510075'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/10/blog-post.html' title='يوم في حياة اعضاء بمركز التفكير الحوسبي'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-3197710358362107169</id><published>2011-09-15T11:11:00.000-07:00</published><updated>2011-09-15T12:05:53.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming-language-theory'/><category scheme='http://www.blogger.com/atom/ns#' term='computer-science'/><title type='text'>أهمية علم لغات البرمجة</title><content type='html'>&lt;div style="text-align: left;" dir="ltr"&gt;My area of interest is programming language theory (PLT). This is an area separate from compilers, but related.&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;It discusses things like programming paradigms (imperative, logic, functional, object oriented,...), language semantics, type systems, programming language features, and other things.&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;The problem is; most programmers think 'languages' are a solved problem. They think that the best possible languages are the familiar ones like C++ or Java, and that effort should now focus on e.g the libraries. &lt;b&gt;That is completely not true!&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;So, let's discuss some lesser-known languages and how they offer completely new ways to programming.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;There is a new language called &lt;a href="http://opalang.org/"&gt;OPA &lt;/a&gt;- derived from the ML family - that makes web application development significantly faster. Projects that take months to develop can be made in OPA in weeks.&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;A large part of the power of this language comes from its &lt;b&gt;type system&lt;/b&gt;, Which lets you describe only once the shape of your data and then generates client-side (running on the web browser) and server-side code from the same description, thus eliminating many causes for error.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;Or how about Google's &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt; language, which focuses on speed of compilation, safety, simplicity and concurrency?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;Then we have &lt;a href="http://subtextual.org/subtext2.html"&gt;Subtext&lt;/a&gt;, a language (part of a series) that attempts to simplify the reading and understanding of programs?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;Or Lisp, where you can define new syntax for the language, having components written with "mini-languages" inside a larger program?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;Or...we know that C is fast and powerful, but very unsafe and hard-to-debug. How about a language that has the same speed and low level capabilities, but much more safe and expressive? Enter &lt;a href="http://www.bitc-lang.org/"&gt;BitC&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;Speaking of low-level; Mozilla (the creators of Firefox) are working on a new language for systems programming called &lt;a href="https://github.com/graydon/rust/wiki/Language-FAQ"&gt;Rust&lt;/a&gt;. It should be useful for the same type of programs that are written in C++ but with features like this (from their site):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Memory safe. No null pointers, wild pointers, etc. Automatic storage management.&lt;/li&gt;&lt;li&gt;Dynamic execution safety: task failure / unwinding, trapping, logging.RAII / dtors.&lt;/li&gt;&lt;li&gt;Typestate system: ability to define complex invariants that hold over data structures.&lt;/li&gt;&lt;li&gt;Very lightweight tasks (coroutines). Cheap to spawn thousands-to-millions.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Finally, how about &lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/"&gt;F# &lt;/a&gt;from Microsoft, a functional programming language that is now part of Visual Studio, described on its site as &lt;i&gt;"...It is a simple and pragmatic language, and has particular strengths in data-oriented programming, parallel I/O programming, parallel CPU programming, scripting and algorithmic development"&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In summary, programming language theory is not simply about academic research: real companies like Google, Mozilla, and Microsoft are working on serious projects that help them in making money or beating their competition.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think this field is very worthy of study, even if so few people pay attention to it...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-3197710358362107169?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/3197710358362107169/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=3197710358362107169' title='5 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3197710358362107169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3197710358362107169'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/09/blog-post_15.html' title='أهمية علم لغات البرمجة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2997970384027648039</id><published>2011-09-09T00:00:00.000-07:00</published><updated>2011-09-09T01:00:21.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computational-thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='vision'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>يوم في حياة أطفال مبرمجين</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;نحن في عام 2018. محسن لديه ثلاثة أبناء: مروة (13 عاماً)، منى (8 سنوات) ومصطفى (5 سنوات).&lt;br /&gt;&lt;br /&gt;سوف تأخذ مروة اختها منى اليوم لأحد &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post.html"&gt;مراكز التفكير الحوسبي&lt;/a&gt;. منى جديدة على عالم البرمجة بينما مروة مبرمجة عتيدة. دخلا من بوابة المركز في إلى الحديقة المرتبطة به حيث يلعب بعض الأطفال. وصلت مروة إلى "المشروع" الذي كانت تعمل فيه منذ أيام: روبوت صغير موجه الكترونياً يسير في متاهة. هناك مشكلة في خوارزمية السير عبر المتاهات لأن الآلي احياناً كان يعود إلى نفس الممرات التي زارها من قبل، وأحياناً يدور في حلقة مفرغة بدون أن يستكشف طرقاً جديدة للخروج مما هو فيه..&lt;br /&gt;&lt;br /&gt;بينما كانت مروة منهمكة في حل المشكلة كانت أختها الصغرى تشعر بالملل، لذلك ذهبت بها مروة إلى أحد المرشدين في المركز ليقترح لها شيئا تفعله، وعادت هي إلى مشكلة الروبوت والمتاهة.&lt;br /&gt;&lt;br /&gt;أخذ المرشد منى إلى ساحة مثل ساحة العربات المتصادمة في الملاهي، لكن أمامها شاشة كمبيوتر. فتح لها برنامجاً مثل الpaintbrush لكن يحمل خريطة الساحة أمامها، وقال لها أن ترسم الطريق الذي تريد أن تسير فيه السيارة.&lt;br /&gt;&lt;br /&gt;رسمت شكلاً لولبياً ثم ضغطت زراً يدل على انهائها من الرسم، ثم ركبت السيارة الصغيرة لتتحرك بها كما في الرسمة بالضبط. بينما كانت السيارة تتحرك كانت يُرسم على الأرض مساراً ضوئياً من أثر حركتها؛ اثر هو بالضبط الرسمة على الشاشة. نزلت منى من السيارة وأعطاها المرشد صورة أُخذت من الأعلى للساحة وبها الرسم الضوئي.&lt;br /&gt;&lt;br /&gt;مع الوقت لن تكتفي منى بالرسم على الpaintbrush، بل سوف تكتب برامج لرسم مربعات ونجوم وزخارف كالزخارف الإسلامية، وفي كل مرة سوف تسير السيارة بها لتنفذ ما قد خُطّط لها.&lt;br /&gt;&lt;br /&gt;لكن اليوم سوف تلهو قليلاً، بينما أختها الكبرى تتقدم قليلاً في مشروع الروبوت ثم تذهب لأخذ محاضرة في خوارزمية Depth first search.&lt;br /&gt;&lt;br /&gt;أما في البيت، فإن مصطفى يحب أن يحكي الحكايات. أمسك بالقلم الإلكتروني في يده اليسرى ووضع جهاز &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post_14.html"&gt;أوراق&lt;/a&gt; على حجره: لابد أولاً أن يرسم شخصيات الحكاية ثم بعد ذلك ينفّذ الأحداث. رسم قطة  ورجلاً ثم ضغط على زر "تسجيل الأحداث".&lt;br /&gt;&lt;br /&gt;وضع يداً فوق صورة الرجل على شاشة اللمس، ووضع اليد الأخرى على القطة، وهو يعلم أن الكمبيوتر &lt;a href="http://www.youtube.com/watch?v=ISjq0487PIY"&gt;يسجل كل حركة يحركها &lt;/a&gt;للشخصيات، كما يعلم أيضاً أن الكمبيوتر يسجّل صوته.&lt;br /&gt;&lt;br /&gt;قال بصوت رفيع: آه! أنا تائهة! أريد أن أعود إلى أمي!&lt;br /&gt;&lt;br /&gt;ثم غير صوته لصوت أكثر غلظة (على الأقل بالنسبة لطفل في الخامسة) وحرك صورة الرجل قليلاً وقال: لا تخافي أيتها القطة الصغيرة! أنا أعرف أين هي أمك! تعالي معي!&lt;br /&gt;&lt;br /&gt;ثم بصوت القطة: أصحيح هذا؟؟ حسناً أيها الرجل الطيب! سوف آتي معك.&lt;br /&gt;&lt;br /&gt;ثم حرك صورتي الرجل والقطة معاً عبر المشهد الذي رسمه حتى خرجا من الشاشة. هنا غير مصطفى صوته إلى صوت ثالث أشبه بالمذيعين وقال: "ولكن القطة لا تعلم أن الرجل هو عضو في عصابة تخطف القطط! ماذا سيحدث بعد ذلك؟؟ أن أن أن....."&lt;br /&gt;&lt;br /&gt;قال محسن لابنه بعد أن رأى الحكاية: عظيم عظيم! أنا متشوق لرؤية الجزء الثاني! ثم ذهب ليسأل زوجته عن نوعية البرامج التي تدع الأطفال يشاهدوها في التلفزيون.&lt;br /&gt;&lt;br /&gt;ليس ما يفعله مصطفى بالضبط برمجة، لكن بينهما علاقة: إنه يعتاد من الآن أن يجعل الكمبيوتر يفعل ما يريده، فإن أدرك مدى قوة وتأثير هذا الأمر فهناك وسائل تعليمية أخرى بعد ذلك.&lt;br /&gt;&lt;br /&gt;كانت زوجة محسن تعمل معلّمة، وكانت مهمتها حالياً تحضير درس النحو الجديد، وقد تم تعديل منهج النحو ليستفيد من الطرق الحوسبية؛ مثلاً الإعراب يُكتب الآن في صورة شجرة إعرابية parse tree. بدايات صغيرة لكنها تنمو مع الوقت.&lt;br /&gt;&lt;br /&gt;لقد بدأ التفكير الحوسبي يؤثر على المجتمع. بدأ أحد الأساتذة في كلية التجارة في تجربة لتدريس بعض طرق المحاسبة بطريقة خوارزمية. هناك شركتان جديدتان في مجال الهندسة الطبية، لكن نصف نشاطهم في الواقع يبدو مثل شركة تطوير برامج. إن بعض من هذه الأجهزة بها كود أكثر من جهاز كمبيوتر من الأجهزة القديمة. هناك شاعر يكتب قصيدة، ويساعده برنامج يراجع من ورائه الأوزان، الجديد هنا أن الشاعر قد كتب ذلك البرنامج بنفسه. ثم بعد ذلك هناك حركة لترجمة كتب علوم الحاسب المختلفة وتعريب مصطلحاتها. هناك أيضاً حركة تأليف متزايدة في النموّ.&lt;br /&gt;&lt;br /&gt;كانت نهاية القصة سعيدة، إذ قبض الشرطي على لص القطط وأعاد القطة الصغيرة لأمها، بينما عادت مروة ومنى من المركز. قال الأب لمنى: هل كنت سعيدة اليوم؟&lt;br /&gt;&lt;br /&gt;قالت منى: نعم!&lt;br /&gt;&lt;br /&gt;قال لها: وهل تريدين الذهاب غداً؟&lt;br /&gt;&lt;br /&gt;قاطعته مروة: ولكنها سوف تعطلني عما أفعل يا أبي!&lt;br /&gt;&lt;br /&gt;قال محسن: لا تقلقي، سوف أذهب معها أنا.&lt;br /&gt;&lt;hr /&gt;الا تريد لهذا أن يصبح حقيقة؟ يمكننا أن نبدأ بحوار عن الفكرة (بريدي الاكتروني هو samy2004 على gmail.com )، ولديّ خطة أعمال مبدئية &lt;a href="http://goo.gl/T1zS0"&gt;هنا&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2997970384027648039?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2997970384027648039/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2997970384027648039' title='6 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2997970384027648039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2997970384027648039'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/09/blog-post.html' title='يوم في حياة أطفال مبرمجين'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8934640422635763213</id><published>2011-09-06T20:29:00.000-07:00</published><updated>2011-09-17T14:43:19.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='programming-languages'/><title type='text'>Concept: The Whisper programming language</title><content type='html'>&lt;div dir="ltr" style="text-align: left;"&gt;I'm thinking up of a new programming language, heavily derived from Smalltalk and called 'Whisper'. This is an outline of my current thoughts -- I don't know when or if I'd actually implement the language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Syntax&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Like Smalltalk, almost everything is a message send. There are two kinds of message send in Whisper: binary operators and keyword messages. Binary operators follow the usual Smalltalk tradition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;12 + 8 * 2 -- returns 40&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Keyword messages follow syntax like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;myWindow : drawCircleAt(100, 100) withRadius(50)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A colon after the object indicates the start of a message send&lt;/li&gt;&lt;li&gt;A keyword can have zero, one or more values acting as positional arguments&lt;/li&gt;&lt;li&gt;Normal C-like positional arguments are a special case of this syntax&lt;/li&gt;&lt;li&gt;The syntax is heavily inspired by the &lt;a href="http://www.gracelang.org/"&gt;Grace &lt;/a&gt;educational programming &lt;a href="http://research.microsoft.com/apps/video/default.aspx?id=150042"&gt;language&lt;/a&gt;, itself inspired - again- by Smalltalk&lt;/li&gt;&lt;/ul&gt;We have the traditional ST blocks:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;myFunc = { x, y | x + y }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When sending a keyword message, and a block is the only argument between parenthesis, the parens can be omitted like so&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(x &amp;gt; 5) ifTrue { out : print("yes") } else { out : print("no") }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IDE &amp;amp; Image&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As an experiment, the main IDE for Whisper would be completely browser-based with IDE logic running from a web server. Local applications can be written that access local files...etc but the application's UI would still be browser based.&lt;br /&gt;&lt;br /&gt;Another, for me much harder experiment is to make everything persistent all the time on an Sqlite database: All program state changes would be by writing to slots in objects, even function activation records or global variables (an idea taken from Self and others), and all slot writes would be trapped and written in the DB.&lt;br /&gt;&lt;br /&gt;This would have a very high performance cost, so a lot of design thought should be put into this; by thinking about how to use memory for cache, possibly marking special object as transient, or some other clever method. I'm sure the Lispers, Smalltalkers, Selfers...etc have probably already "killed this problem from research", as the Arabic saying goes, and that I could find an ideal solution in some paper published in 1989..we'll see!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gradual typing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Fields, method arguments and return values can have optional type declarations, this would allow the JIT compiler to better optimize things and (more importantly for me) allow autocomplete to work. It would also make refactoring safer, for example renaming a method would change the identifiers in all known calls to that method.&lt;br /&gt;&lt;br /&gt;This should not change the dynamic nature of the language: The IDE and program are still 'live' and programs are still assembled piecemeal without an edit/compile cycle. There will be situations when calling a method with wrong argument types throws a runtime exception instead of a compiler error, and that's fine for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other goodies&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since I'm now in the dreaming phase and not serious work phase, let's steal some ideas from Lisp, while we're at it:&lt;br /&gt;&lt;br /&gt;The first is multiple dispatch. I think this will be useful in certain types of applications like compilers, allow us to think about libraries in new ways (I can imagine a GUI library inspired by the 'lenses' concept from MIT's &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.974&amp;amp;rep=rep1&amp;amp;type=pdf"&gt;Haystack &lt;/a&gt;project) and allows niceties like the return of traditional syntax:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if(x &amp;gt; 5) do { out: print("yes") } else { out: print("no") }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can almost fool users into thinking it's Java or C#!&lt;br /&gt;&lt;br /&gt;Also, since the syntax is nicely minimal, we could think about adding some metaprogramming...&lt;br /&gt;&lt;br /&gt;Since Smalltalk tries to make as much of the program be represented as objects, we can do the same with the program syntax tree itself; and have the AST of each method be a public property of that method.&lt;br /&gt;&lt;br /&gt;This would allow us to write code in our own DSL inside a method, code which looks like gibberish to the interpreter but useful for us, since we can write procedures to read the tree from the method and process it in whatever way we like. Possibly layer Common Lisp-style macros on top of this feature.&lt;br /&gt;&lt;hr /&gt;Looks like a nice language, right? I wish it were already available so that I didn't have to develop it :(&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-8934640422635763213?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/8934640422635763213/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=8934640422635763213' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8934640422635763213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8934640422635763213'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/09/concept-whisper-programming-language.html' title='Concept: The Whisper programming language'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-918668642292465630</id><published>2011-08-31T14:37:00.000-07:00</published><updated>2011-08-31T14:47:07.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><category scheme='http://www.blogger.com/atom/ns#' term='graduation-projects'/><title type='text'>Graduation project themes and ideas - 2010</title><content type='html'>&lt;div dir="ltr" style="text-align: left;"&gt;In 2010 I suggested the idea of having multiple graduation projects with a common topic or 'theme'. My hope from this was to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Give students the feelings that their projects are part of a larger goal&lt;/li&gt;&lt;li&gt;Give opportunity for different teams to cooperate and share e.g research papers they found on the topic&lt;/li&gt;&lt;li&gt;Possibly plant the seed of 'research departments' in FCIS, where multiple MS.c or Ph.D researchers work on common topics instead of each doing an independent topic.&lt;/li&gt;&lt;/ul&gt;That year I gave a presentation outlining two themes: &lt;span style="font-weight: bold;"&gt;Arabic natural language processing&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Pen computing&lt;/span&gt; , and giving a lot of ideas for each theme (and some outside the themes).&lt;br /&gt;&lt;br /&gt;Here's the presentation slides, in case they might be useful: &lt;a href="http://www.slideshare.net/mohamedsamyali/themes-for-graduation-projects-2010"&gt;Themes for Graduation projects - 2010&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-918668642292465630?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/918668642292465630/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=918668642292465630' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/918668642292465630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/918668642292465630'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/graduation-project-themes-and-ideas_31.html' title='Graduation project themes and ideas - 2010'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-6534094588744753582</id><published>2011-08-21T08:00:00.000-07:00</published><updated>2011-08-21T09:49:04.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compilers'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>How Kalimat produces EXE files</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-8OvQRo9YJQs/TlEqdfGRcOI/AAAAAAAAARc/NCTe_CCDp3k/s1600/snake_exe2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/-8OvQRo9YJQs/TlEqdfGRcOI/AAAAAAAAARc/NCTe_CCDp3k/s400/snake_exe2.png" alt="" id="BLOGGER_PHOTO_ID_5643338494124323042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;"&gt;Everyone tells me &lt;a href="http://code.google.com/p/kalimat"&gt;Kalimat&lt;/a&gt; is a toy language since it doesn't produce .exe files.&lt;br /&gt;&lt;br /&gt;At first, I didn't pay attention since my main goal was teaching children programming. I mean, does &lt;a href="http://smallbasic.com/"&gt;Smallbasic&lt;/a&gt; produce exe's? Does Scratch?&lt;br /&gt;&lt;br /&gt;But gradually, I changed my mind&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Many children would feel patronized if they have a perception of being taught with a "kiddy" language, even if the language is actually powerful - if it &lt;span style="font-weight: bold;"&gt;seems&lt;/span&gt; kiddy, that's bad.&lt;/li&gt;&lt;li&gt;Being an Arabic-based language means it's under more scrutiny, since a lot of people will have the "Arabs can't make a real language" point of view, and will find any reason to say so&lt;/li&gt;&lt;li&gt;There is a real technical need for making .exe files from programs, so that users - kid or adult - can distribute their programs to others.&lt;/li&gt;&lt;/ul&gt;So started the journey of making executables. I began considering my options:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Generate assembly code or machine code from Kalimat, perhaps using something like &lt;a href="http://llvm.org/"&gt;LLVM&lt;/a&gt; or &lt;a href="http://www.cminusminus.org/"&gt;C--&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Generate code in another language like C++ or &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt;, and use e.g a C++ compiler to create the .exe&lt;/li&gt;&lt;li&gt;Cheat&lt;/li&gt;&lt;/ol&gt;Cheating sounds good, right? What does that mean exactly? Well, in early versions of Visual Basic (far before VB6 or .Net) the IDE could create exe files, but not exactly the way you know: The file contained a bytecode version of your program, and you had to include a DLL that came with VB and contained an interpreter for this bytecode. All your exe had to do was to load the DLL and tell it: "Here, take this program and run it for me, will you?".&lt;br /&gt;&lt;br /&gt;This is also how &lt;a href="http://www.py2exe.org/"&gt;py2exe&lt;/a&gt; works: It bundles your python program and a python interpreter into one package, and that is your executable.&lt;br /&gt;&lt;br /&gt;Kalimat has already taken a lot of ideas from Basic and Python, so I decided to go this route and quickly add that feature, and in the long term consider adding the capability of making real, 'respectful' .exe files.&lt;br /&gt;&lt;br /&gt;(I do mean 'quickly', it was done in ~ 3 days).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: Separate SmallVM into its own DLL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Kalimat IDE and SmallVM (the virtual machine that runs Kalimat programs) were very tightly coupled in the source code. I had to spend some times moving all runtime code from the IDE to the VM, making small changes as I go, and export some VM functions.&lt;br /&gt;&lt;br /&gt;Now I have an independent smallvm.dll which exports a function that your programs can send code to execute.&lt;br /&gt;&lt;br /&gt;Even better: smallvm.dll does not take Kalimat code, but takes code in the form of its own assembly. That means if you're creating your own programming language you can use it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: Generate the "driver" program&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now suppose the user typed this program and wants to create an .exe from it:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;اطبع&lt;/span&gt; 12&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;First the Kalimat IDE will generate this assembly:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: arial;"&gt;.method main&lt;br /&gt;pushv 12&lt;br /&gt;callex print&lt;br /&gt;ret&lt;br /&gt;.endmethod&lt;br /&gt;&lt;/div&gt;This is good. Now we need a program that does something like this:&lt;br /&gt;&lt;pre&gt;#include "smallvm.h"&lt;br /&gt;int main( )&lt;br /&gt;{&lt;br /&gt;char *program =".method main\npushv 12\n\callex print\nret\n.endmethod";&lt;br /&gt;SmallVMRunCode(program);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;If this program is then made to .exe, then we're done!&lt;br /&gt;&lt;br /&gt;Notice that I've simplified a lot of details here. For example the char *program is actually not a direct representation of the program but a base64 encoding of it. Also notice that I could've used a technique called 'binary blobs' to bypass the need for repeatedly compiling C++ code and just use a linker to combine object files.&lt;br /&gt;&lt;br /&gt;So far so good, but that means I need to include a C or C++ compiler (or a linker) with Kalimat. On the Linux version of Kalimat that's easy: Just add gcc or g++ as a dependency and the package manager would take care of the job.&lt;br /&gt;&lt;br /&gt;On Windows I'd have to manually bundle a compiler. The standard Open Source C++ compiler on Windows is MinGW. Its a little more than 120 megabytes...&lt;br /&gt;&lt;br /&gt;Ouch. Remember that Kalimat's download is currently about 5.4 megabytes.&lt;br /&gt;&lt;br /&gt;I tried to take only the necessary files in MinGW and include them, but failed. I don't know what little stuff depends on other little stuff.. It might be possible, even easy, but I don't want to keep trying out things aimlessly, and I don't want to study - right now- the structure of the GNU toolchain. Let's find another way.&lt;br /&gt;&lt;br /&gt;No problem, I thought: I'll use Google's Go language. The compiler and linker (8g.exe, 8l.exe) are 1.8 megabytes together, and they don't need anything else to work. Excellent! All I need to do is generate a small Go program that calls a function from a C dll.&lt;br /&gt;&lt;br /&gt;To do this, I think you use a tool called cgo that's bundled with Go. I tried for some time to use cgo but failed. I didn't spend a long time doing that; maybe I'm too lazy, maybe if I spent a little more time I'd have figured it out, but anyway...&lt;br /&gt;&lt;br /&gt;What other languages produce native .exe's these days? I know: Free Pascal.&lt;br /&gt;&lt;br /&gt;I'll spoil the surprise for you: this is the current solution. Yup! Good ole' Pascal :)&lt;br /&gt;&lt;br /&gt;At first, the generated .pas file looked something like this:&lt;br /&gt;&lt;pre&gt;program RunSmallVM;&lt;br /&gt;procedure RunSmallVMCodeBase64(A:PChar;B:PChar);&lt;br /&gt;           stdcall ;external 'smallvm.dll';&lt;br /&gt;begin&lt;br /&gt;RunSmallVMCodeBase64('','2e6d657468');&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;This is good as long as your encoded program is small. Once it gets a little large you find out that traditional Pascal string can't go more than 255 characters. What?&lt;br /&gt;&lt;br /&gt;Ok, you can add a compiler directive to make the language use another type of string (AnsiStrings), but string &lt;span style="font-style: italic;"&gt;literals&lt;/span&gt; maintain the 255 character limit. Sigh :(&lt;br /&gt;&lt;br /&gt;No problem: I made the code generator make a series of string concatenations to form the final program form. This would slow down the time from loading the .exe to running the program, but it now works. I can speed things up later, by embedding binary blobs in the .exe or something.&lt;br /&gt;&lt;br /&gt;Also I had trouble with base64 encoding of programs: Parts of the SmallVM assembly program are themselves encoded in base64. It seems the encoding in this case messes up. This is what happened with me:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;programHeader = encode64(stuff)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;program = programHeader + restOfCode&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;stringToSend = encode64(program)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;originalProgram = decode64(stringToSend)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To my surprise, the string &lt;span style="font-family:courier new;"&gt;originalProgram&lt;/span&gt; is not equal to &lt;span style="font-family:courier new;"&gt;programHeader+restOfCode&lt;/span&gt; as expectd, but instead it is equal to &lt;span style="font-family:courier new;"&gt;stuff+restOfCode&lt;/span&gt;. It seems the base64 decoder is too eager to decode anything that seems like base64 characters :(&lt;br /&gt;&lt;br /&gt;As a hack I used different functions in the .DLL to send different parts of the program. I'll figure out a proper solution later.&lt;br /&gt;&lt;br /&gt;There is a lesson to be learned here: It pays to diversify your knowledge! In order to create an actual useful product, I went through a journey of old and new technology: VB, py2exe, MinGW, Go, and even Pascal. You don't know what knowledge will finally solve the problem.&lt;br /&gt;&lt;br /&gt;So it's buggy, it's hacky, it's unstable, but it's there! Kalimat can now generate .exe files! And with a few iterations I hope it works well enough for day to day usage.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-6534094588744753582?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/6534094588744753582/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=6534094588744753582' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6534094588744753582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6534094588744753582'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/how-kalimat-produces-exe-files.html' title='How Kalimat produces EXE files'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8OvQRo9YJQs/TlEqdfGRcOI/AAAAAAAAARc/NCTe_CCDp3k/s72-c/snake_exe2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5256283550113042202</id><published>2011-08-19T20:15:00.001-07:00</published><updated>2011-08-24T23:53:43.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>Roadmap for Kalimat</title><content type='html'>&lt;div dir="ltr" style="text-align: left;"&gt;What's the whole plan, present and future, for the Kalimat programming language? Here's a rough outline.&lt;br /&gt;&lt;br /&gt;These goals are listed roughly from "Immediate future" to "long term", but they are not strictly in order: Some things are done in parallel, some of the 'long term' items have actually started now, the important part here is the ideas, not the order of their execution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More stable language&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make &lt;a href="http://iamsamy.blogspot.com/2011/08/blog-post_11.html"&gt;FFI&lt;/a&gt; work correctly, fix memory leaks, pointer issues...etc&lt;/li&gt;&lt;li&gt;Fix odds &amp;amp; ends in the language, like e.g missing graphics commands&lt;/li&gt;&lt;li&gt;Make it produce independent applications, either by separating the VM from the IDE or by compiling to .exe (note: work already &lt;a href="http://iamsamy.blogspot.com/2011/08/how-kalimat-produces-exe-files.html"&gt;started&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Children &amp;amp; Education&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A site "trykalimat.com" where users can type and run Kalimat programs directly in the web browser, to test the language without downloading.&lt;/li&gt;&lt;li&gt;A Youtube-like site where children can upload their programs for others to see (the idea comes from MIT Scratch) and a 'share' button in the IDE for automatic uploads&lt;/li&gt;&lt;li&gt;Integrated tutorials, labs and exercises in the IDE itself&lt;/li&gt;&lt;li&gt;&lt;a href="http://iamsamy.blogspot.com/2010/04/blog-post.html"&gt;Social ecosystem&lt;/a&gt; of books, online communities, training...etc&lt;/li&gt;&lt;li&gt;Programmable toys that have an interface to Kalimat...OOP with real physical objects!&lt;/li&gt;&lt;li&gt;Research and &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post.html"&gt;computational thinking&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;A professional language&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add more libraries, support for web applications, (perhaps also iPhone or Android applications)&lt;/li&gt;&lt;li&gt;Optional static type checking&lt;/li&gt;&lt;li&gt;A online repository for installing libraries and components from the IDE&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Faster VM, better garbage collection, running concurrent processes in parallel&lt;/li&gt;&lt;li&gt;'Sister' Compilers for the Java VM or .Net CLR&lt;/li&gt;&lt;li&gt;A book "Kalimat internals" to explain design &amp;amp; architecture behind Kalimat, to help contributors to the project, beginner compiler writers, and people who want to create their own Arabic PLs&lt;/li&gt;&lt;li&gt;Transform Kalimat from "Mohamed Samy's project" into "Kalimat team project"&lt;/li&gt;&lt;/ul&gt;Let's hope at least a significant portion of this is somehow accomplished, إن شاء الله.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5256283550113042202?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5256283550113042202/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5256283550113042202' title='1 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5256283550113042202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5256283550113042202'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/roadmap-for-kalimat.html' title='Roadmap for Kalimat'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-6950233965047364439</id><published>2011-08-12T16:31:00.000-07:00</published><updated>2011-08-13T07:04:58.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><category scheme='http://www.blogger.com/atom/ns#' term='computer-science'/><title type='text'>فيديو: مواد كلية الحاسبات وأهميتها - حاسبات عين شمس نموذجاً</title><content type='html'>&lt;iframe src="http://player.vimeo.com/video/27630864?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" frameborder="0" height="300"&gt;&lt;/iframe&gt;&lt;p&gt;لا يتعدى &lt;a href="http://vimeo.com/27630864"&gt;هذا الفيديو&lt;/a&gt; 35 دقيقة لكنه غني جداً بالمعلومات عن المواد وأهميتها علمياً وبرمجياً وفي سوق العمل. قدمته في الكلية منذ فترة قريبة والآن هو على الإنترنت للجميع. مشاهدة ممتعة!&lt;/p&gt;&lt;p&gt;الslides المقدمة في الفيديو &lt;a href="http://www.authorstream.com/Presentation/ManS_-967417-esd-mohamed-samy-subjects-in-fcis-and-why-they-matter/"&gt;تجدها هنا&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;(لو أعجبك هذا البوست فقد يعجبك أيضاً هذا: &lt;a href="http://iamsamy.blogspot.com/2011/07/blog-post_29.html"&gt;حاسبات للقرن الواحد والعشرين&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-6950233965047364439?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/6950233965047364439/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=6950233965047364439' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6950233965047364439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6950233965047364439'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/blog-post_925.html' title='فيديو: مواد كلية الحاسبات وأهميتها - حاسبات عين شمس نموذجاً'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-6832129621697485063</id><published>2011-08-12T06:49:00.000-07:00</published><updated>2011-08-12T07:37:34.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>مفاتيح للنهضة</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div style="border-radius: 15px;-moz-border-radius: 15px;background-color:rgb(200, 210, 220);"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:130%;" &gt;ولا نظن أن هناك شعباً ما يستطيع أن يقضي على الأمة العربية والإسلامية مهما كانت المحاولات والحروب التي تواجهها الأمة، ولكن تخاذل الأمة عن دورها، وتقاعسها عن الفعل الحضاري المسئول، هو ما يمكن أن يقضي عليها.&lt;br /&gt;&lt;br /&gt;فقوة الأمة من داخلها، كما أن ضعفها يأتي أساساً من داخلها، والعوامل الخارجية تمثل التحديات والعقبات كما تمثل الظروف والسياق العام الخارجي. ولكن هذه العوامل لا تهزم الأمة إن لم تكن في حالة ضعف، ولا تصد الأمة عن تحقيق النهوض الحضاري إذا تحقق للأمة إرادة النهوض الحقيقية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;[من مقدمة كتاب "حضارة الوسط: نحو أصولية جديدة" للدكتور رفيق حبيب]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-radius: 15px;-moz-border-radius: 15px;background-color:rgb(200, 210, 220);"&gt;&lt;span style="font-size:130%;"&gt;وذلك أنا لا نعلم شيئاً يبتغيه الناظم بنظمه غير أن ينظر في وجوه كل باب وفروقه‏.‏فينظر في الخبر إلى الوجوه التي تراها في قولك‏:‏ "زيد  منطلق" و "زيد ينطلق" و"ينطلق زيد" و"منطلق زيد" و"زيد المنطلق" و"المنطلق زيد" و"زيد  هو المنطلق" و"زيد هو منطلق‏".‏&lt;br /&gt;&lt;br /&gt;وفي الشرط والجزاء إلى الوجوه التي تراها في قولك‏:‏  "إن تخرج أخرج" و"إن خرجتَ خرجتُ" و"إن تخرج فأنا خارج" و"أنا خارج إن خرجت" و"أنا إن  خرجت خارج‏".‏&lt;br /&gt;&lt;br /&gt;وفي الحال إلى الوجوه التي تراها في قولك‏:‏ "جاءني  زيد مسرعاً" و"جاءني يسرع" و"جاءني وهو مسرع" (أو هو يسرع) و"جاءني قد أسرع" و"جاءني  وقد أسرع‏".‏&lt;br /&gt;&lt;br /&gt;فيعرف لكل من ذلك موضعه ويجيء به حيث ينبغي له‏.‏&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[من كتاب "&lt;a href="http://www.al-eman.com/library/book/book-display.htm?id=71&amp;amp;indexId=1200"&gt;دلائل الإعجاز&lt;/a&gt;"، للعالم عبد القاهر الجرجاني]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-radius: 15px;-moz-border-radius: 15px;background-color:rgb(200, 210, 220);" dir="ltr"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://en.wikipedia.org/wiki/J._Robert_Oppenheimer"&gt;Oppenheimer's&lt;/a&gt; way of working with his research students was also original. His group consisted of 8 or 10 graduate students and about half a dozen postdoctoral fellows. He met the group once a day in his office. A little before the appointed time, the members straggled in and and disposed themselves on the tables and about the walls.&lt;br /&gt;&lt;br /&gt;Oppenheimer came in and discussed with one after another the status of the student's research problem while the others listened and offered comments. &lt;span style="font-style: italic;"&gt;All were exposed to a broad range of topics&lt;/span&gt;. Oppenheimer was interested in everything; one subject after another was introduced and coexisted with all the others. In an afternoon they might discuss electrodynamics, cosmic rays, astrophysics and nuclear physics.&lt;br /&gt;&lt;br /&gt;[.....] For each problem that interested him, Oppenheimer would select a student or postdoc to work out the details.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;[from "Black holes and time warps" by Kip S. Thorne"]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-6832129621697485063?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/6832129621697485063/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=6832129621697485063' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6832129621697485063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/6832129621697485063'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/blog-post_12.html' title='مفاتيح للنهضة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5079013803803074316</id><published>2011-08-11T14:43:00.000-07:00</published><updated>2011-08-11T16:51:14.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ffi'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>كلمات: استدعاء إجراءات سي</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;إمكانات كثيرة يريدها المبرمج: رسومات ثلاثية الأبعاد، مؤثرات صوتية، اتصال بالإنترنت، تعامل مع نظام التشغيل... حين اضفت إمكانيات الGUI كان لابد أن أغير المفسر interpreter، لأن مفسر كلمات كان حلقة الاتصال الوحيدة بين اللغة وبين العالم الخارجي. هل سيحدث نفس الشيء مع كل الإمكانيات الأخرى؟&lt;br /&gt;&lt;br /&gt;لا ينبغي تغيير مفسر اللغة كل مرة يُحتاج فيها لإضافة إمكانية، لذلك كان لابد من تغيير هذا الوضع...&lt;br /&gt;&lt;br /&gt;[&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;ملاحظة هامة:&lt;/span&gt; لن تعمل هذه الأمثلة إلا على إصدار اغسطس 2011 أو أحدث. يمكنك تحميل أحدث إصدارة من &lt;a href="http://www.kalimat-lang.com/"&gt;هنا&lt;/a&gt; أو &lt;a href="http://code.google.com/p/kalimat/downloads"&gt;هنا&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;كل اللغات المعروفة تقريباً فيها إمكانية التعامل مع الدوال الخارجية (Foreign function interface) أو FFI، وهذا في أغلب الأحيان يساوي إمكانية للتعامل مع مكتبات الربط DLL المكتوبة بالسي. هذه الإمكانية الآن موجودة في كلمات أيضاً. مثال بسيط على هذا؛ دالة MessageBox:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre dir="rtl"&gt;&lt;span style="color:blue;"&gt;مكتبة&lt;/span&gt; &lt;span style="color:magenta;"&gt;"user32.dll"&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;دالة&lt;/span&gt; رسالة &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"MessageBoxW"&lt;/span&gt; ( مشير.سي،&lt;br /&gt;                             نص.سي،&lt;br /&gt;                             نص.سي،&lt;br /&gt;                             صحيح32.سي ) صحيح32.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;م = رسالة ( 0 ، &lt;span style="color:magenta;"&gt;"هذه العملية سوف تدمر كل شيء!!"&lt;/span&gt;،&lt;br /&gt;         &lt;span style="color:magenta;"&gt;"هل أنت متأكد؟"&lt;/span&gt; ، 3 )&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;هذه أول مرة نرى فيها Type declarations في كلمات! نحن لا نستخدمها إلا في حالة الـFFI لكن من يدري؟ قد نراها مستقبلاً في أدوار أخرى...&lt;br /&gt;&lt;br /&gt;لاحظ في المثال السابق أن نوع القيمة القيمة الراجعة من الدالة (وهو صحيح32.سي) مكتوب في آخر السطر المعرفة فيه الدالة نفسها. ماذا لو كنا نريد استدعاء void function؟ في تلك الحالة نعرف إجراء بدلا من دالة ولا نذكر القيمة الراجعة.&lt;br /&gt;&lt;br /&gt;قبل أن نكمل هذا مرجع سريع لأنواع البيانات المستخدمة في التعامل مع إجراءات السي:&lt;br /&gt;&lt;table style="text-align: left; margin-left: auto; margin-right: 0px;" border="1" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td dir="rtl"&gt;النوع في لغة سي&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl"&gt;النوع في كلمات&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl"&gt;int&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl"&gt;صحيح32.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;float&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;طفوي.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;long&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;طويل.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;double&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;مزدوج.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;char&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;حرفي.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;char *&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;نص.آسكي.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;wchar_t *&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;نص.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;void *&lt;br /&gt;&lt;/td&gt;&lt;td dir="rtl" style="vertical-align: top;"&gt;مشير.سي&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;لاحظ أن &lt;span dir="rtl" style="font-weight: bold;"&gt;نص.آسكي.سي&lt;/span&gt; يعمل مع الحروف الانجليزية، بينما &lt;span style="font-weight: bold;"&gt;نص.سي&lt;/span&gt; يقبل حروف اليونيكود - ومنها الحروف العربية، والموضوع يعتمد بالطبع على نوع البيانات الذي تقبله الدالة: مثلاً في ويندوز الدالة MessageBoxA تستخدم آسكي بينما MessageBoxW تستخدم يونيكود.&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;ها هنا مثال آخر، لكن هذه المرة على نسخة كلمات على لينكس، يوضح استخدام دالة getenv:&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;مكتبة&lt;/span&gt; &lt;span style="color:magenta;"&gt;"libc.so.6"&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;دالة&lt;/span&gt; بيئة &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"getenv"&lt;/span&gt; ( نص.آسكي.سي ) نص.آسكي.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;م = بيئة ( &lt;span style="color:magenta;"&gt;"PATH"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;اطبع&lt;/span&gt; م&lt;/pre&gt;&lt;/div&gt;يحاول مفسر كلمات التصرف "بعقل" قدر الإمكان، فمثلاً قام بتحويل النص المقدم للدالة من يونيكود (وهو الصيغة الداخلية لكل نصوص كلمات) إلى آسكي قبل استدعاء الدالة. نفس الشيء يحدث لو كانت الدالة تريد قيمة عدد حقيقي وأرسل لها مثلاً عدد صحيح.&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ماذا عن الدوال التي تأخد قيماً أعقد من integer أو نص؟ تعال نتخيل أن لدينا مكتبة DLL فيها دالة اسمها TestPoint تأخذ عاملاً بهذا الشكل:&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="text-align: left;"&gt;struct POINT&lt;br /&gt;{&lt;br /&gt;long x; long y;&lt;br /&gt;};&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;لا يمكن في تلك الحالة الاكتفاء بإرسال كائن بفصيلة مصنوعة بكلمات، لأن المفسر سيعجز عن معرفة طريقة نقل (أو تسيير، marshalling) كل بيان من كلمات إلى مكانه الصحيح في الذاكرة لتتمكن دالة السي من استخدامه.&lt;br /&gt;&lt;br /&gt;هذا بسبب أن معلومات POINT موجودة لدى مترجم السي وحده، ولو أردنا استخدامها من كلمات سيكون علينا إعادة تعريف هذه المعلومات:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; نقطة :&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; س &lt;span style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; ص &lt;span style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;مكتبة&lt;/span&gt; &lt;span style="color:magenta;"&gt;"simple_dll.dll"&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;دالة&lt;/span&gt; اختبر.نقطة &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"TestPoint"&lt;/span&gt; ( نقطة ) صحيح32.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ن = نقطة &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;س ن = 130&lt;br /&gt;ص ن = 180&lt;br /&gt;ذ = اختبر.نقطة ( ن )&lt;br /&gt;&lt;span style="color:blue;"&gt;اطبع&lt;/span&gt; ذ&lt;/pre&gt;&lt;/div&gt;هنا فصيلة &lt;span style="font-weight: bold;"&gt;نقطة&lt;/span&gt; هي فصيلة عادية جدا، فقط أضفنا معلومات عن كيفية استخدام قيم س، ص عند ارسال نقطة لدالة سي. يمكننا - إن أردنا - أن نضيف المزيد من الfields أو الmethods لفصيلتنا، ولكن عند تقديمها لدالة سي لن يتم التعامل إلا مع البيانات المعرف لها "تسيير".&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هيا نكتب الآن مثالاً أطول يستخدم Windows API. سوف نكتب برنامجاً يرسم مستطيلاً أسوداً في منتصف الشاشة - في منتصف الشاشة الحقيقية وليس نافذة كلمات.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;أولاً نكتب هذا البرنامج بلغة سي ثم "نترجمه" خطوة خطوة:&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="text-align: left;"&gt;HDC dc = GetDC(0); // Retrieve device context of whole screen&lt;br /&gt;HBRUSH brush = GetStockObject(BLACK_BRUSH);&lt;br /&gt;RECT r;&lt;br /&gt;r.left = 800;&lt;br /&gt;r.top = 600;&lt;br /&gt;r.right = 1000;&lt;br /&gt;r.bottom = 700;&lt;br /&gt;FillRect(dc, &amp;amp;r, brush);&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;يستخدم البرنامج هنا ثلاث دوال سي: GetDC، GetStockObject، FillRect&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ويستخدم أيضاً نوع بيانات جديد هو RECT. فلنعرفه أولاً:&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; مستطيل :&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; يسار &lt;span style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; قمة &lt;span dir="rtl"  style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; يمين &lt;span style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; قاع &lt;span style="color:blue;"&gt;تسييره&lt;/span&gt; طويل.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;الآن نعرف الدوال المطلوبة:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;مكتبة&lt;/span&gt; &lt;span style="color:magenta;"&gt;"user32.dll"&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    دالة&lt;/span&gt; مجال.رسم &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"GetDC"&lt;/span&gt; ( مشير.سي ) مشير.سي&lt;br /&gt;&lt;pre&gt;    &lt;span style="color:blue;"&gt;دالة&lt;/span&gt; املأ.مستطيل &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"FillRect"&lt;/span&gt; ( مشير.سي ، &lt;span style="font-weight: bold;color:blue;" &gt;مشير&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; ( مستطيل )&lt;/span&gt; ، مشير.سي ) صحيح32.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;مكتبة&lt;/span&gt; &lt;span style="color:magenta;"&gt;"gdi32.dll"&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    دالة&lt;/span&gt; عنصر.رسم.جاهز &lt;span style="color:blue;"&gt;برمز&lt;/span&gt; &lt;span style="color:magenta;"&gt;"GetStockObject"&lt;/span&gt; ( صحيح32.سي ) مشير.سي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لاحظ أننا في الدالة FillRect لا نرسل مستطيلاً، بل نرسل مشير pointer إلى مستطيل..وحين استدعينا الدالة في السي لم نرسل المستطيل r بل أرسلنا عنوانه في الذاكرة r&amp;amp;..سينعكس هذا على كود كلمات أيضاً.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لاحظ أيضاً أننا في الأنواع تحت صنف HANDLE مثل HDC أو HBRSUH نستخدم &lt;span style="font-weight: bold;"&gt;مشير.سي&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;(تسيير&lt;/span&gt;&lt;span&gt;..مشير..لقد صارت اللغة سياسية أكثر من اللازم. الإصدارة القادمة لابد من أمر اسمه أجندة لتكتمل الصورة)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;الآن نكتب برنامجنا:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;ط = مستطيل &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;يسار ط = 800&lt;br /&gt;قمة ط = 600&lt;br /&gt;يمين ط = 1000&lt;br /&gt;قاع ط = 700&lt;br /&gt;&lt;br /&gt;م = مجال.رسم ( 0 )&lt;br /&gt;الفرشاة = عنصر.رسم.جاهز ( 4 )&lt;br /&gt;املأ.مستطيل ( م ، &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;عنوان ( ط )&lt;/span&gt; ، الفرشاة )&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;عند تنفيذ البرنامج سوف يظهر مستطيل أسود على الشاشة. قد لا يظهر المستطيل كاملاً لو تقاطع مع نافذة البرنامج، لأن تلك النافذة ترسم نفسها باستمرار.&lt;br /&gt;&lt;br /&gt;ليس أكثر عرض شيق في العالم، كما أن إمكانية FFI في صورتها الحالية لم تكتمل، ومليئة بالأخطاء، وتسبب memory leaks مثل المصفاة...لكن الكود، حتى في تلك الصورة، تثبت أننا نسير في الطريق الصحيح: لقد بدأت لغة كلمات تقترب من اللغات الإحترافية. من يدري ماذا يمكن أن يُعمل بها الآن..ربما يضيف أحد مكتبة تستخدم OpenGL.&lt;br /&gt;&lt;br /&gt;أو ربما تتصل بقواعد بيانات. أو يصمم بها برامج شبكية. لا أدري - لقد صار الباب مفتوحاً لغيري الآن :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5079013803803074316?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5079013803803074316/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5079013803803074316' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5079013803803074316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5079013803803074316'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/blog-post_11.html' title='كلمات: استدعاء إجراءات سي'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2869045534044918741</id><published>2011-08-01T08:19:00.000-07:00</published><updated>2011-08-01T10:09:15.545-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><category scheme='http://www.blogger.com/atom/ns#' term='egypt'/><title type='text'>أنت والمغالطات المنطقية</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;صار الحوار السياسي مزعجا هذه الأيام؛ أشبه بصورة كاريكاتيرية عبارة عن وجهين يصرخان في بعضهما.&lt;br /&gt;&lt;br /&gt;هناك مغالطات منطقية يقع فيها العديد من الأطراف. في المجتمعات الغربية صارت المغالطات مصطلحات دارجة لها أسماء، وهناك كتالوجات بها. سأسرد في هذا المقال بعض هذه المغالطات الشهيرة ومحاولة لتعريب اسمائها وأمثلة لها.&lt;br /&gt;&lt;br /&gt;لماذا أفعل ذلك؟&lt;br /&gt;&lt;ul&gt;&lt;li&gt;أولا ليراجع كل منا نفسه قبل أن يتحاور، ويلغي من كلامه الخاص كل حجة فيها مغالطة (ذلك على افتراض أن الشخص نفسه يسعى للمصداقية بالطبع)&lt;/li&gt;&lt;li&gt;ثانيا لمساعدة القاريء على تقييم مصداقية الأخبار والمقالات والحوارات التي يقرأها كل يوم، ويرى إن كانت مبنية على حجج سليمة أم فاسدة&lt;/li&gt;&lt;li&gt;ثالثاً، لكي يستعين به المحاور إن كان الطرف الآخر استخدم - بقصد أو غير قصد - مغالطة في كلامه&lt;/li&gt;&lt;/ul&gt;شيء أخير: لقد تعمدت أن أوجد مصطلحاً عربياً لكل مغالطة ليس من أجل فكرة عامة على غرار تعريب العلوم وما شابه ولكن من أجل هدف مختلف: &lt;span style="font-weight: bold;"&gt;لأني أريد أن تكون الأسماء نفسها دارجة&lt;/span&gt;؛ بحيث يمكن لشخصان يتحاوران أن يقول أحدهما مثلاً "حجتك فيها مغالطة لا يتبع" فيفهمه الآخر والجمهور فوراً بلا حاجة لشرح المغالطات كلها من البداية.&lt;br /&gt;&lt;br /&gt;الآن نأتي للكتالوج...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة: &lt;/span&gt;Ad-hominem&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; هجوم تجاه الشخص لا الحجة&lt;br /&gt;&lt;br /&gt;هذه أشهر مغالطة موجودة في مجتمعنا حالياً، أن يأتي الخصم ويجد عيباً ما (يراه) في الطرف الآخر، وعليه يكون الاستنتاج أن الطرف الآخر على خطأ. المغالطة هنا واضحة: حتى لو كان خصمك شخصاً سيئاً في نظرك فهذا ليس رداً كافياً على حجته...وكل التخوين والاتهام والسخرية من الناس لا تجعلهم مخطئين في وجهة نظر ما بالذات ولو كانت الاتهامات صحيحة.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;كيف تتصرف:&lt;/span&gt; نبه الطرف الآخر أنه بهجومه الشخصي عليك يحاول أن يفلت من الرد على حجتك، واطلب منه رداً محدداً على كلامك&lt;br /&gt;&lt;hr style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة:&lt;/span&gt; Strawman argument&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; استبدال حجة أسهل&lt;br /&gt;&lt;br /&gt;هذه أيضاً ذائعة هذه الأيام؛ أن تفسر كلام خصمك تفسيراً ليس بالضبط ما قصده لكن شيئاً له علاقة ما بما قاله، ويكون شيء أسهل بكثير في الرد. مثلاً:&lt;br /&gt;&lt;br /&gt;يقول طرف من الأطراف "أنا مع الحكم الإسلامي"&lt;br /&gt;فيرد الطرف الآخر "هل تريد ولاية الفقيه مثل إيران؟؟؟؟"&lt;br /&gt;&lt;br /&gt;الطرف الأول لم يقل هذا مطلقاً، لكن الطرف الثاني أراد أن يرد على شيء يسهل الرد عليه، ففسر كلام الأول تفسيراً مخطئاً بهدف التيسير على نفسه.&lt;br /&gt;&lt;br /&gt;اسمها بالانجليزية "مغالطة رجل القش" تشبيها بشخص خاف من مواجهة رجل حقيقي فصنع رجلاً ضعيفا من القش وهزمه :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;كيف تتصرف:&lt;/span&gt; قل "كلامي لا يُستدلّ منه بالضرورة ما تقول، أنت فسرت كلامي بشكل خاطيء،  وغيرت الموضوع إلى نقطة كذا بدلاً من معنى كلامي الأصلي".&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة:&lt;/span&gt; Non-sequiter&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; لا يتبع&lt;br /&gt;&lt;br /&gt;هنا يقول المتحدث أنه هناك معلومة حقيقية (أ) ثم يستنتج منها نتيجة (ب)، مع أن ب ليست بالضرورة نتيجة منطقية تتبع أ&lt;br /&gt;&lt;br /&gt;مثلاً:&lt;br /&gt;- هناك تأخير في محاكمة مبارك، ومعنى ذلك أن المجلس العسكري متواطيء مع مبارك نفسه&lt;br /&gt;- فلان سافر إلى أمريكا ويعمل في شركة أمريكية، إذاً هو عميل أمريكي&lt;br /&gt;- تم تعيين فلان في لجنة كذا وهو من الإخوان المسلمين، إذاً المجلس العسكري متواطيء مع الإخوان&lt;br /&gt;&lt;br /&gt;...وهكذا&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة:&lt;/span&gt; False dilemma&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; الاختيارات المزيفة، الزنقة الإجبارية&lt;br /&gt;&lt;br /&gt;هنا يضع المتحدث أمامك بديلان أو أكثر ويجبرك أن تختار بينهما، بينما في الواقع هناك اختيارات أخرى لم يذكرها قد تخرج من "الزنقة" الي يحاول أن يضعك فيها.&lt;br /&gt;&lt;br /&gt;مثلاً:&lt;br /&gt;- "لماذا لم ترشح فلاناً؟ هل تريدها دولة علمانية؟"&lt;br /&gt;- "كيف تترك الإسلاميين يفعلون ما يريدون؟ هل تريدها دولة كهنوتية؟"&lt;br /&gt;- "لماذا تعارض إمساك أحمد شفيق بمنصب رئيس الوزراء؟ ألا تعلم أن البديل هو الفوضى؟"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;كيف تتصرف:&lt;/span&gt; وضح أن الطرف الآخر صاغ كلامه بحيث لا يكون أمامك سوى هذه الاختيارات، اقترح بدائل أخرى إن أمكن.&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة:&lt;/span&gt; Appeal to emotions&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; اللجوء للعاطفة، التماس عاطفي&lt;br /&gt;&lt;br /&gt;هنا يحاول الطرف الآخر أن يضع الموضوع في قالب عاطفي جداً لكي يطفيء أي ردود على كلامه، مثلاً:&lt;br /&gt;- كيف لا تريد الانضمام للمسيرة من التحرير للعباسية؟ ألا تذكر دماء الشهداء؟ ألا تدرك معاناة أهلهم الذين لم يروا القصاص لأبنائهم؟&lt;br /&gt;- لماذا تصر على محاكمة مبارك؟ انه رجل كبير في الثمانين وتعبان صحياً، كما أنه حارب وخدم الوطن..ارحموا الناس يا ناس!&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;اسم المغالطة:&lt;/span&gt; "Fallacy fallacy" (لا أعرف إن كان هذا اسماً رسمياً/دارجاً أم لا)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الاسم العربي:&lt;/span&gt; مغالطة "كلامك فيه مغالطة، إذن أنت على خطأ"&lt;br /&gt;&lt;br /&gt;حين تجد مغالطة في كلام الطرف الآخر فليس معنى هذا أن رأيه الأصلي خطأ بالضرورة، فقط معناه أن هذه الحجة بالذات ليست دليلاً منطقياً على كلامه. قد يكون هناك أو لا يكون دليل آخر حقيقيّ. تذكر أن هدفنا هو المحافظة على مصداقية الحوار وليس "سحق" الخصم بأي وسيلة كانت ولو غير عادلة!&lt;br /&gt;&lt;hr /&gt;تذكر أيضاً أن المنطق ليس كل شيء أحياناً. مثلاً لو رأيت رجلاً متشح بالسواد ويمسك سكيناً ويسير ورائي، فهذا ليس دليلاً كافياً أنه سيء النية، لكن قد يكون من الحكمة أن أبتعد عنه :)&lt;br /&gt;&lt;br /&gt;هذه كانت عينة من المغالطات المنطقية. ربما أستطيع أن أقدم المزيد من النماذج في مقال مستقبليّ.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2869045534044918741?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2869045534044918741/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2869045534044918741' title='1 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2869045534044918741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2869045534044918741'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/08/blog-post.html' title='أنت والمغالطات المنطقية'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-3247774705773507484</id><published>2011-07-29T23:15:00.000-07:00</published><updated>2011-08-13T06:37:05.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>حاسبات للقرن الواحد والعشرين</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;قد مر حوالى خمسة عشر عاماً على إنشاء كلية الحاسبات. حان الوقت للتفكير في كيفية تجديد شبابها وتجهيزها للمرحلة القادمة. لديّ بعض الأفكار الاستراتيجية من أجل هذا الهدف: تقليل العدد، صورة الكلية لدى المجتمع، العامل البشري.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;تقليل العدد&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;لابد أن نعترف الآن أن عدد طلبة الكلية حالياً أكثر من اللازم، وهذا يضر الطلبة أنفسهم إذ لا يأخذون الفرصة في التعليم المطلوب أو التقييم. ماذا عن سوق العمل؟ هناك نظرية أن الفرق في مستوى المبرمج يؤدي لفرق كبير جداً في إنتاجيته: أي أن مبرمجاً عبقرياً قد يقوم بعمل عشرة مبرمجين عاديين، ومبرمج مذهل قد يقوم بعمل مائة...&lt;br /&gt;&lt;br /&gt;لذلك فأنا أرى أن دفعة صغيرة من خمسين أو مائة مبرمج يتم انتقاؤهم بحرص ويتعلمون جيداً قد تقوم بدور في السوق مثل مئات المبرمجين في الصورة الحالية للكلية.&lt;br /&gt;&lt;br /&gt;- هؤلاء قد يرفعون مستوى الشركات التي سيعملون فيها ويطورون اسلوبها&lt;br /&gt;- هؤلاء قد يتعين منهم الأساتذة الذين يرفعون مستوى التعليم والبحث العلمي&lt;br /&gt;- هؤلاء قد يفتحون الشركات ويغيرون من شكل الاقتصاد&lt;br /&gt;&lt;br /&gt;في رأيي أنه على إدارة الكلية أن تفكر في هذه النقطة جيداً وتفعل كل ما تستطيع مع المجلس الأعلى للجامعات لتقلل العدد قدر المستطاع.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;صورة الكلية أمام المجتمع&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;مشكلة كلية الحاسبات أنه من الصعب تعريفها لدى الشخص العادي: الطبيب يعالج، المهندس يبني، ماذا يفعل المبرمج؟ لهذا يأتي كل شخص بنظريته الخاصة [المبرمج يستخدم فوتوشوب، المبرمج يبيع هارد ديسكات، المبرمج يجلس أمام الفيسبوك...الخ].&lt;br /&gt;&lt;br /&gt;المشكلة الثانية أن الكلية لا توجد لها قصص نجاح معلنة بما يكفي (أقصد أن لها قصص نجاح كثيرة لكن المعلن منها قليل) هذا يؤدي للحوار الآتي:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; فلان دخل هندسة بترول وتوظف في شركة باشو للبترول بمرتب 10،000 جنيه! لماذا لا تصبح مثله؟&lt;/li&gt;&lt;li&gt; فلانة دخلت طب وفتح لها أبوها عيادة، أنت لست أقل من ذلك وأنا أدخر لك ثمن العيادة من الآن!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;نريد أن نكون نحن أيضاً طرفاً في الحكاية، فكيف نفعل ذلك؟ الخبر الجيد أن &lt;span style="font-weight: bold;"&gt;95% من الحل موجود بالفعل بين أيدينا&lt;/span&gt; ولا يبقى سوى ال5% الباقية: إن كان الإعلام المصري لا يعرف الكثير عن البرمجة (وهذا طبيعي لأي إعلام) فهو يعرف ما هو الاختراع ويحب قصص المخترعين.&lt;br /&gt;&lt;br /&gt;انظر مثلاً &lt;a href="http://www.shorouknews.com/ContentData.aspx?id=495616"&gt;لهذا المقال في جريدة الشروق&lt;/a&gt; عن مشروع تخرج يسمح لمستخدم الكمبيوتر بالتحكم فيه عن طريق تحريك يده. الآن انظر إلى تعليقات القراء على المقال؛ وكيف يحتفون بالمشروع ويعتبرونه إنجازاً مصرياً كبيراً...الخ.&lt;br /&gt;&lt;br /&gt;نحن في حاسبات كل سنة تقريباً لدينا مشروع أو أكثر مثل هذا، التحكم في الكمبيوتر بتحريك اليد، والعين، والأذرع، وبالصوت، وبجهاز رسم المخ -- حتى أنني في سنة من السنين مللت هذه النوعية من المشاريع وصرت أقول للطلبة أن يفكروا في أفكار أخرى، لكن.......المجتمع لا يعرف ذلك!&lt;br /&gt;&lt;br /&gt;[لم أقصد انتقاد صاحب المشروع في هندسة أو شيء من هذا، المشروع محترم لكن كلامي هنا عن المستوى العلمي لكليتي أنا]&lt;br /&gt;&lt;br /&gt;لدينا مشاريع تتعامل مع اللغة العربية، لغات برمجة جديدة، مشاريع روبوت، مشاريع علمية، لكن المجتمع لا يعرف. ويظنون البلد متخلّفة :(&lt;br /&gt;&lt;br /&gt;ماذا يكلفنا أن نأتي بكاميرا فيديو ونصور كل هذه المشاريع التي تبدو كالخيال العلمي ونضع كتالوج بكل هذا على موقع Youtube؟ ماذا يضيرنا أن نكلم كل الصحف والمحطات التلفزيونية لتأتي أيام المشاريع وترى؟ لا أتوقع أن يكلف هذا مالاً في إعلانات، بل يكون الموضوع خبراً لا إعلاناً لأن الصحفيون أنفسهم يبحثون عن مثل هذه النوعية من الإنجازات. أتخيل الآن العناوين:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"مصر مازالت بخير، مشروعات تخرج في كلية الحاسبات تضاهي الاختراعات الأجنبية"&lt;/li&gt;&lt;li&gt;"المبدعون الشباب ينقلون المجتمع المصري إلى القرن الواحد والعشرين"&lt;/li&gt;&lt;li&gt;"الاختراعات تتوالى في الجامعات المصرية"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;أريد أن يصير &lt;span style="font-weight: bold;"&gt;اسم حاسبات مرتبطاً بالاختراع&lt;/span&gt;، هذا هو التعريف الذي أريده في ذهن المجتمع.&lt;br /&gt;&lt;br /&gt;وطالما نتحدث عن اليوتيوب، لماذا لا يكون هناك قناة على الإنترنت للطلبة والخريجين يتحدثون عن خبراتهم في حاسبات كنصائح لطلبة الثانوية العامة؛ عن مميزاتها وعيوبها وكيفية التفوق فيها لمن يدخلها؟ لا أريد إعلانات الجامعات الخاصة إياها عن المعامل والحدائق بل أريد شيئاً حقيقياً من طلبة حقيقيين عن العلم والتعلم والتخرج والتوظف. أليس هذا هو الهدف الأصلي؟&lt;br /&gt;&lt;br /&gt;ماذا عن قصص النجاح للخريجين؟ نحن لدينا معيدون يدرسون للدكتوراة في المانيا وكندا وأمريكا..لا يكاد يكون هناك قارة في العالم إلا وهناك خريج حاسبات ذهب إليها للحصول على الدكتوراة من إحدى جامعاتها، لماذا لا يعرف أحد شيئاً عنهم؟&lt;br /&gt;&lt;br /&gt;لدينا من الخريجين في شركة مايكروسوفت بالولايات المتحدة وكندا حتى لتظن انه هناك فرع من الكلية هناك، لمَ لا يعرف أحد شيئاً عنهم؟&lt;br /&gt;&lt;br /&gt;ماذا عن الخريجين الذين قد أسسوا شركات؟&lt;br /&gt;&lt;br /&gt;هناك ألف شيء آخر يمكن عمله، مثل FAQ عن الكلية تتداول الأسئلة الشائعة عن سوق العمل والنقابة والمعاهد...الخ. فكرت أصلاً في جعل هذه الوثيقة في صورة قصص مصورة comics لكي تغري الناس بقراءتها. من يبحث يجد ألف فكرة.&lt;br /&gt;&lt;br /&gt;[&lt;span style="color: rgb(255, 0, 0);"&gt;تعقيب&lt;/span&gt;: قد أتبعت كلامي بعمل وبدأت &lt;a href="http://iamsamy.blogspot.com/2011/08/blog-post_925.html"&gt;خطوة صغيرة&lt;/a&gt; في هذا الاتجاه.]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;العامل البشري&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الكفاءات هي التي تصنع أي مؤسسة، وغياب الكفاءات هو الذي يهدمها. لا يضاهي الكفاءات في الأهمية سوى الجانب الإداري. معادلة النجاح المؤسسي هي&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;كفاءات عالية + بيئة إدارية مشجعة = مؤسسة ناجحة.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;كان وكيل سابق في كليتنا (وأستاذ لي) يقوم بدور مهم جداً في منصبه: كان يفتش عن الكفاءات أينما كانت. في كليات الهندسة، كليات الحاسبات الأخرى، ربما الجامعة الأمريكية...في فترة من الفترات كنت لا تكاد تتحدث عن دكتور جيد في الكلية إلا ويحتمل أن يكون ذلك الوكيل هو الذي دعاه للتدريس لدينا.&lt;br /&gt;&lt;br /&gt;نحن نحتاج إلى هذا من جديد! لابد من البحث عن الأساتذة الممتازين في كل مكان داخل وخارج مصر، ودعوتهم لتقديم المواد في الكلية. لابد من توفير المغريات المناسبة التي تجعلهم يرضون بالمجيء، ليس فقط المال لكن بيئة علمية جيدة، فرصة لتغيير المجتمع، بحث علمي حقيقي...الخ&lt;br /&gt;&lt;br /&gt;ولابد أن تكون البيئة مهيئة لا فقط لجذبهم لكن للاحتفاظ بهم، فالشخص الكفء لديه مطلق الحرية أن يعمل في أية مكان يشاء، ولو رأى المكان لا يشجع فلا يوجد فتفوتة شيء يُكرهه على البقاء.&lt;br /&gt;&lt;br /&gt;البحث عن الكفاءات وجذبها، توفير البيئة التي تستثمر كفاءتهم، توفير ظروف الإبقاء عليهم. هذه يجب أن تكون &lt;span style="font-weight: bold;"&gt;الأولوية القصوى&lt;/span&gt; لأية مؤسسة لا فقط الكليات.&lt;br /&gt;&lt;hr /&gt;هناك جوانب أخرى للمناقشة في حوار تجديد شباب الكلية؛ مثل شكل المناهج، طريقة التدريس، علاقة المواد ببعضها...وهي كلها أشياء مهمة حقاً ولا ريب جديرة بالمناقشة، لكني أرى النقاط الثلاثة السابقة نقاطاً استراتيجية لابد من الانتباه إليها، بل وأن ضبط هذه النقاط يساعد بشدة في النقاط الأخرى من مناهج وخلافه.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-3247774705773507484?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/3247774705773507484/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=3247774705773507484' title='11 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3247774705773507484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/3247774705773507484'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/blog-post_29.html' title='حاسبات للقرن الواحد والعشرين'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2563913728512912122</id><published>2011-07-26T05:38:00.000-07:00</published><updated>2011-07-26T05:43:09.461-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>لغة كلمات: مرجع كامل أخيراً!</title><content type='html'>قدمت اليوم ندوة عن لغة كلمات في كلية الحاسبات والمعلومات/جامعة عين شمس، وكانت فرصة جيدة لكي أقدم عرضاً لإمكانات اللغة كلها، إذ أن الوثائق السابقة كانت قديمة نوعاً ما وكان ينقص اللغة مرجع شامل.&lt;br /&gt;&lt;br /&gt;الملف الذي استخدمته في العرض متاح للتحميل &lt;a href="http://www.kalimat-lang.com/w/files/f/f2/Kalimat_2011.pdf"&gt;بأن تضغط هنا&lt;/a&gt; وهو في صيغة PDF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2563913728512912122?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2563913728512912122/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2563913728512912122' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2563913728512912122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2563913728512912122'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/blog-post_26.html' title='لغة كلمات: مرجع كامل أخيراً!'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8342799679706420619</id><published>2011-07-20T21:20:00.000-07:00</published><updated>2011-07-20T21:26:46.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>بيب! بيب! بيب!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-bikBKzTthy4/TiepxBueojI/AAAAAAAAAPA/dp5i6LE1jgQ/s1600/messagebeep.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://4.bp.blogspot.com/-bikBKzTthy4/TiepxBueojI/AAAAAAAAAPA/dp5i6LE1jgQ/s400/messagebeep.png" alt="" id="BLOGGER_PHOTO_ID_5631656518792159794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;"&gt;Kalimat calling the Windows API! (This is work in progress)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-8342799679706420619?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/8342799679706420619/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=8342799679706420619' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8342799679706420619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8342799679706420619'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/blog-post_20.html' title='بيب! بيب! بيب!'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-bikBKzTthy4/TiepxBueojI/AAAAAAAAAPA/dp5i6LE1jgQ/s72-c/messagebeep.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2550052437910200705</id><published>2011-07-20T15:56:00.000-07:00</published><updated>2011-07-20T16:16:57.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fcis'/><category scheme='http://www.blogger.com/atom/ns#' term='graduation-projects'/><category scheme='http://www.blogger.com/atom/ns#' term='awraq'/><title type='text'>GP Ideas: 1- Sketchcode</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Concept&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let users write programs by sketching; either using paper+scanner or using a tablet computer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More info&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have an incomplete design of a sketch-based programming language that combines text and graphics elements. Data structures like linked lists or trees would be expressed by their familiar sketch notations, while functions would resemble their familiar text representation enriched by some additional notation gained from using a pen.&lt;br /&gt;&lt;br /&gt;I can show my designs to interested teams, but I won't post pictures here on my blog for obvious reasons :)&lt;br /&gt;&lt;br /&gt;The project will have two major subsystems and 3 major stages. The subsystems are&lt;br /&gt;(a) Sketch recognizer&lt;br /&gt;(b) Code generator [or interpreter].&lt;br /&gt;&lt;br /&gt;The stages are&lt;br /&gt;(a) Language design&lt;br /&gt;(b) Implementing sketch recognizer&lt;br /&gt;(c) Implementing code generation&lt;br /&gt;&lt;br /&gt;Stages (b) and (c) could probably be done in parallel assuming a complete language specification was made beforehand.&lt;br /&gt;&lt;br /&gt;I cannot officially supervises the project of course, but I am prepared to participate in the design of the full language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Challenges and risks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first challenge is in the design of a language that is usable for the sketch medium and expressive enough to represent complex programs without cluttering the area with complex, unclear sketches.&lt;br /&gt;&lt;br /&gt;The second is the usual risk of pattern-based projects: The accuracy of recognition, choice of training algorithms, and so on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Techniques needed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Patterns recognition, image processing, possibly compilers&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Notes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is related to my technology vision of &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post_14.html"&gt;Awraq&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2550052437910200705?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2550052437910200705/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2550052437910200705' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2550052437910200705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2550052437910200705'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/gp-ideas-1-sketchcode.html' title='GP Ideas: 1- Sketchcode'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-4145221001366665805</id><published>2011-07-10T14:57:00.001-07:00</published><updated>2011-07-10T14:59:11.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>We would like to welcome....dictionaries</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-0W1jz4BLbMk/ThoggiCSTzI/AAAAAAAAAO4/62NyaDru-2Q/s1600/kalimat_maps.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 357px;" src="http://1.bp.blogspot.com/-0W1jz4BLbMk/ThoggiCSTzI/AAAAAAAAAO4/62NyaDru-2Q/s400/kalimat_maps.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5627846427617152818" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-4145221001366665805?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/4145221001366665805/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=4145221001366665805' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4145221001366665805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4145221001366665805'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/we-would-like-to-welcomedictionaries.html' title='We would like to welcome....dictionaries'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-0W1jz4BLbMk/ThoggiCSTzI/AAAAAAAAAO4/62NyaDru-2Q/s72-c/kalimat_maps.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5197809494319416931</id><published>2011-07-07T23:21:00.000-07:00</published><updated>2011-07-08T11:38:08.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>قوائم متسلسلة في كلمات</title><content type='html'>&lt;div style="text-align: right;"&gt;تريد أن تحل مسألة ACM بكلمات؟ سوف تحتاج بضعة أشياء، منها القوائم المتسلسلة Linked lists. هيا نبدأ في عملها - أول ما نحتاجه هو فصيلة class يعبر عن حلقة في السلسلة. ما يكافيء node في لغات البرمجة الأجنبية :)&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255); text-align: right;"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; حلقة :&lt;br /&gt;&lt;span style="color:blue;"&gt;    له&lt;/span&gt; بيان&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; سابق، تالي&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;هنا لا نعرف methods في فصيلتنا، فقط نعرف مجالات للبيانات data fields.&lt;br /&gt;بالمرة هيا نعرف فصيلة القائمة:&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255); text-align: right;"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; قائمة :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; أول ، آخر&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;قبل أن نتابع علينا أن نعرف بعض المعلومات عن الكائنات في لغة كلمات:&lt;br /&gt;&lt;ul style="text-align: right;"&gt;&lt;li&gt;لإنشاء كائن object من فصيلة معينة نكتب اسم الفصيلة يليه كلمة &lt;span style="font-weight: bold;"&gt;جديد &lt;/span&gt;مثل&lt;span style="font-weight: bold;"&gt; م = موظف جديد&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;للوصول إلى field نكتب اسمه قبل الكائن، أي أن &lt;span style="font-weight: bold;"&gt;س مركز النقطة&lt;/span&gt; في كلمات يكافيء &lt;span style="font-weight: bold;"&gt;point.center.x&lt;/span&gt; في اللغات التقليدية&lt;/li&gt;&lt;li&gt;الثابت &lt;span style="font-weight: bold;"&gt;لاشيء&lt;/span&gt; يعادل null في اللغات المماثلة للJava أو #C.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;الآن نريد أن نضيف إمكانيات الإضافة والمسح من القائمة. هنا ستكون الفصيلة قائمة أكثر من مجرد حاوٍ للبيانات، سوف نضيف إليها methods. قبل أن نضيفها يجب أولاً أن نعرف كيف نستدعيها!&lt;br /&gt;&lt;br /&gt;تخيل أن فصيلة القائمة لديها method اسمها اضف(...)، سوف نستدعيها هكذا:&lt;br /&gt;&lt;br /&gt;ق : اضف(12)&lt;br /&gt;&lt;br /&gt;هذا يكافيء&lt;span style="font-weight: bold;"&gt; lst.add(12) //add to list &lt;/span&gt;في اللغات الأخرى. وهو في كلمات اسمه إرسال &lt;span style="font-weight: bold;"&gt;رسالة&lt;/span&gt; إلى الكائن، والكود التي ستتفذ ستكون استجابة لهذه الرسالة. مثل ال++C لابد أن نعرف الاستجابة على جزئين: نعلن عنها داخل الفصيلة ونكتب تفاصيلها خارج الفصيلة.&lt;br /&gt;&lt;br /&gt;أولاً الإعلان:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; قائمة :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; أول ، آخر&lt;br /&gt;&lt;span style="color:magenta;"&gt;    -- هنا أعلننا عن الاستجابة&lt;br /&gt;&lt;/span&gt;    &lt;span style="color:blue;"&gt;يستجيب&lt;/span&gt; &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( عنصر )&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;ثانياً التفصيل:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;استجابة&lt;/span&gt; قائمة ق &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( عنصر ) :&lt;br /&gt;&lt;span style="color:magenta;"&gt;    -- سوف نكتب التنفيذ هنا&lt;br /&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;هنا نعرف method جديدة عن طريق كلمة استجابة. لابد أن نعطي اسماً للكائن متلقي الرسالة هو هنا &lt;span style="font-weight: bold;"&gt;ق&lt;/span&gt; (في اللغات التقليدية يكون الاسم اوتوماتيكيا &lt;span style="font-weight: bold;"&gt;this&lt;/span&gt; ، لكن هنا لابد من إعطاء اسم).&lt;br /&gt;&lt;br /&gt;لاحظ كيف أن الكلام يبدو طبيعياً جداً... استجابة قائمة ق لـ"أضف عنصر" هو افعل كذا كذا..نهاية. هذا لأن كلمات لغة برمجة تستمد جمالها من جمال اللغة العربية™&lt;br /&gt;&lt;br /&gt;الآن يمككنا أن نكتب الكود أخيراً:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;استجابة&lt;/span&gt; قائمة ق &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( العنصر ) :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;ح = حلقة &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;بيان ح = العنصر&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; أول ق = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;أول ق = ح&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;آخر ق = ح&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;تالي آخر ق = ح&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;سابق ح = آخر ق&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;آخر ق = ح&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;أنظروا! استطيع كتابة كود الإضافة إلى قائمة!! سنترك كود المسح كتمرين للطالب :)&lt;br /&gt;&lt;br /&gt;كلمة &lt;span style="font-weight: bold;"&gt;استجابة&lt;/span&gt; في كلمات، مثل كلمة &lt;span style="font-weight: bold;"&gt;إجراء&lt;/span&gt;، تعبر عن void function, void method. ماذا لو أردنا عمل شيء يعود بقيمة؟ هنا بدلاً من استخدام كلمة &lt;span style="font-weight: bold;"&gt;استجابة&lt;/span&gt; سوف نستخدم كلمة &lt;span style="font-weight: bold;"&gt;رد&lt;/span&gt;.&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; قائمة :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; أول ، آخر&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;يستجيب&lt;/span&gt; &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( عنصر )&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:magenta;"&gt;-- هنا عرفنا رداً جديداً&lt;br /&gt;&lt;/span&gt;    &lt;span style="color:blue;"&gt;يرد&lt;/span&gt; &lt;span style="color:blue;"&gt;على&lt;/span&gt; عددهم ( )&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;ثم نكتب تنفيذ الرد:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;رد&lt;/span&gt; قائمة ق &lt;span style="color:blue;"&gt;على&lt;/span&gt; عددهم ( ) :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; أول ق = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;   &lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; 0&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; :&lt;br /&gt;  &lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;النتيجة = 0&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;   أ = أول ق&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;   &lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;ليس&lt;/span&gt; أ = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;   &lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;   النتيجة = النتيجة + 1&lt;/pre&gt;&lt;pre&gt;       &lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;أ = تالي أ&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;   &lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;  &lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; النتيجة&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;الآن..نستطيع اختبار البرنامج:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;الوجبات = قائمة &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"شاورمة"&lt;/span&gt; )&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"مجبوس"&lt;/span&gt; )&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"فول وطعمية"&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;اطبع&lt;/span&gt; الوجبات : عددهم ( )&lt;/pre&gt;&lt;/div&gt;قد يهم محبي النحو سبب تسميتنا للرد بإسم &lt;span style="font-weight: bold;"&gt;عددهم&lt;/span&gt; ؛ هذا يجعل التعبير كله يأخذ صورة بدل الجزء من الكل/بدل الاشتمال في اللغة العربية. هل تذكر في المدرسة "أعجبني الخروف صوفه"؟ نحن هنا نقول "اطبع الوجبات عددهم" :)&lt;br /&gt;&lt;br /&gt;القائمة طبعاً تنقصها إمكانات كثيرة مثل الإضافة في الأول، المسح من الأول والآخر، ....الخ، لكني لن استأثر بالمتعة كلها لنفسي. ها هي الكود المكتوبة حتى الآن كاملةً:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; حلقة :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; بيان&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; تالي ، سابق&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;فصيلة&lt;/span&gt; قائمة :&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;له&lt;/span&gt; أول ، آخر&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;يستجيب&lt;/span&gt; &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( عنصر )&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; "&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;يرد&lt;/span&gt; &lt;span style="color:blue;"&gt;على&lt;/span&gt; عددهم ( )&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;رد&lt;/span&gt; قائمة ق &lt;span style="color:blue;"&gt;على&lt;/span&gt; عددهم ( ) :&lt;br /&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; أول ق = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;    &lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; 0&lt;br /&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; :&lt;br /&gt;    النتيجة = 0&lt;br /&gt;    أ = أول ق&lt;br /&gt;    &lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;ليس&lt;/span&gt; أ = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;        النتيجة = النتيجة + 1&lt;br /&gt;        أ = تالي أ&lt;br /&gt;    &lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; النتيجة&lt;br /&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;استجابة&lt;/span&gt; قائمة ق &lt;span style="color:blue;"&gt;ل:&lt;/span&gt; اضف ( العنصر ) :&lt;br /&gt;ح = حلقة &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;بيان ح = العنصر&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; أول ق = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;    أول ق = ح&lt;br /&gt;    آخر ق = ح&lt;br /&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; :&lt;br /&gt;    تالي آخر ق = ح&lt;br /&gt;    سابق ح = آخر ق&lt;br /&gt;    آخر ق = ح&lt;br /&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الوجبات = قائمة &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"شاورمة"&lt;/span&gt; )&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"مجبوس"&lt;/span&gt; )&lt;br /&gt;الوجبات : اضف ( &lt;span style="color:magenta;"&gt;"فول وطعمية"&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;اطبع&lt;/span&gt; الوجبات : عددهم ( )&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5197809494319416931?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5197809494319416931/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5197809494319416931' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5197809494319416931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5197809494319416931'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/blog-post_07.html' title='قوائم متسلسلة في كلمات'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-4227656785004450411</id><published>2011-07-07T08:44:00.001-07:00</published><updated>2011-07-07T09:03:22.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='happiness'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><title type='text'>فلتكن أشياء حقيقية</title><content type='html'>من يريد ألا تصبح مملاً عليه ألا يجعل تفكيره يقتصر على الأشياء المجردة؛ بل يفكر في أشياء حقيقية.&lt;br /&gt;&lt;br /&gt;من الأشياء المجردة في الحياة: المال، فهو أرقام، والمنصب، فهو كلمة على ورقة. من الأشياء الحقيقية في الحياة: طعم الآيس كريم، يوم من المزاح مع أبنائك، سرير مريح.&lt;br /&gt;&lt;br /&gt;لكنك تقول أن المال والمنصب أشياء حقيقية وليست مجردة: المال يستطيع أن يبتاع سيارات وبيوت وكتب وآيس كريم...حتى السرير المريح يستطيع المال أن يشتريه، أليس هذا مذهلاً؟؟؟&lt;br /&gt;&lt;br /&gt;نفس الشيء بالنسبة للمنصب، إنه يعطينا قدرة أكبر على التأثير في الناس وإصلاح المجتمع، كيف هو غير حقيقيّ؟&lt;br /&gt;&lt;br /&gt;قصدي من هذا المقال ليس الحديث عن &lt;span style="font-weight: bold;"&gt;طبيعة&lt;/span&gt; الأشياء لكن عن &lt;span style="font-weight: bold;"&gt;نظرتي ونظرتك&lt;/span&gt; لها.&lt;br /&gt;&lt;br /&gt;هناك من يريد المال لكن حين يفكر فيه لا يفكر في رصيد كبير في البنك: يفكر في الأجهزة الإلكترونية المغرية التي يستطيع أن يشتريها، أو البيت الواسع الذي يريد السكن فيه، أو المصنع التي يريد أن يفتحه..&lt;br /&gt;&lt;br /&gt;في مقابل ذلك هناك أشخاص يحبون المال في حد ذاته: يعيشون حياتهم في عمل دؤوب لا هم لهم سوى جمعه، مع أنهم بالفعل قد جمعوا كل ما يحتاجونه وأكثر! لديهم ما يكفي لشراء كل ما يمكن أن يسعدهم وأضعاف ذلك لكنهم لم يكتفوا.&lt;br /&gt;&lt;br /&gt;هنا نجد أن الشخص لا يجد السعادة في ما يشتريه المال له بل في أرقام: العشرة ملايين أفضل من المليون، المليار أفضل. والأرقام - كما نعلم - هي أشياء مجردة لا حقيقية.&lt;br /&gt;&lt;br /&gt;نفس الشيء بالنسبة للمنصب: هناك من يفرح بمنصب وزير لأنه يجلس على مكتب الوزير، والكروت في محفظته مكتوب عليها وزير، والكل يكلمه باحترام ويفتتح الكلام بعبارة "السيد فلان، وزير كذا". يفكر هو في المجتمع كأنه خط يمتد من الأعلى للأسفل وكل منا نقطة على هذا الخط ، وهو بمنصبه هذا قد زحزح نقطته لمكان أعلى في خط المجتمع. والنقط والخطوط هي كما نعلم....أشياء مجردة.&lt;br /&gt;&lt;br /&gt;لكن هناك وزير آخر يحلم أحلاماً مختلفة: يحلم بالفقراء وهم يأكلون خبزاً كثيراً على موائدهم، أوشوارع واسعة غير مزدحمة، أو فدادين وفدادين من أشجار البرتقال تطرح الثمر اللذيذ بوفرة.&lt;br /&gt;&lt;br /&gt;هذه أشياء حقيقية&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-4227656785004450411?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/4227656785004450411/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=4227656785004450411' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4227656785004450411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4227656785004450411'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/07/blog-post.html' title='فلتكن أشياء حقيقية'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-1384349567408903672</id><published>2011-06-23T14:21:00.000-07:00</published><updated>2011-06-23T23:13:08.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>الكرات المتحركة - مثال بكلمات</title><content type='html'>نريد أن نبدأ بتحريك كرة واحدة، ثم بعد ذلك نتصرف في باقي الكرات.&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;إجراء&lt;/span&gt; حرك.الكرة ( طيف ، س ، ص ، السرعة ) :&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- سوف نكتب كود هنا&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;(اعتبر الإجراء مثل void function).&lt;br /&gt;هذا الإجراء يأخذ اربع عوامل:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;طيف&lt;/span&gt; هو الطيف الذي يعبر عن رسمة الكرة؛ الطيف شكل متحرك يرسم على الشاشة (sprite) وسنعرف الآن كيف نتعامل معه&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;س&lt;/span&gt;، &lt;span style="font-weight: bold;"&gt;ص&lt;/span&gt; هو المكان الذي نريد أن يبدأ فيه رسم الكرة&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;السرعة&lt;/span&gt; هو مصفوفة (array) من عنصرين يعبر عن متجه vector فيه سرعة الكرة في الاتجاهين السيني والصادي&lt;/li&gt;&lt;/ul&gt;نبدأ في تفاصيل الإجراء:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;إجراء&lt;/span&gt; حرك.الكرة ( طيف ، س ، ص ، السرعة ) :&lt;br /&gt;&lt;span style="color:blue;"&gt;    طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;ارسم.طيف&lt;/span&gt; طيف &lt;span style="color:blue;"&gt;في&lt;/span&gt; ( س ، ص )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = س + السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = ص + السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;انتظر(15)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;الأمر هنا بسيط: الأمر &lt;span style="font-weight: bold;"&gt;ارسم.طيف/في&lt;/span&gt;  يأخذ طيفاً ويرسمة في نقطة محددة هي هنا نقطة البداية، ثم نغير هذه النقطة كل مرة حسب متجه السرعة، بأن نضيف السرعة في الاتجاه السيني إلى &lt;span style="font-weight: bold;"&gt;س&lt;/span&gt; ونفس الشيء في &lt;span style="font-weight: bold;"&gt;ص&lt;/span&gt;. لاحظ أن المصفوفات في كلمات تبدأ من الواحد.&lt;br /&gt;&lt;br /&gt;نكرر هذه العملية باستمرار مع انتظار بسيط - 15 ميلليثانية - بين رسمة والأخرى&lt;br /&gt;&lt;br /&gt;المشكلة هنا هي أن الكرة ستخرج من الشاشة بعد قليل وتختفي، نحن نريدها أن "تصطدم" بالشاشة ومن ثم تغير اتجاهها. خطتنا بسيطة:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;إذا اصطدمت الكرة بقمة الشاشة أو قاعها، نقلب إشارة السرعة في الاتجاه الصادي فنحيلها من موجبة لسالبة أو بالعكس، وبذلك تنزل الكرة مثلاً إن كانت تصعد.&lt;/li&gt;&lt;li&gt;إذا اصطدمت بيمين الشاشة أو يسارها نغير إشارة المكون السيني للسرعة&lt;/li&gt;&lt;li&gt;في الحالتين إن كانت الكرة تكاد أن تُرسم خارج الشاشة نعيد مكانها لحافة الشاشة&lt;/li&gt;&lt;/ul&gt;كيف ينعكس ذلك على الكود؟ تعال نرى مثلاً ماذا يحدث لو تجاوزت الكرة الحافة اليمنى للشاشة.&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س &amp;lt; 0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 0&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;الحافة اليمنى هي النقطة س=صفر، فأن كانت س أقل من الصفر فمعنى هذا أن الكرة توشك أن تخرج، فنعيدها مرة أخرى إلى الحافة ونعكس إشارة المكون الأول للسرعة. لاحظ أن نظام الإحداثيات يساير الكتابة العربية (س تزداد من اليمين لليسار).&lt;br /&gt;&lt;br /&gt;ماذا يحدث لو تجاوزت الكرة يسار الشاشة؟ هذا:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س + عرض.الطيف ( طيف ) &amp;gt; 799 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 799 - عرض.الطيف ( طيف )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; شاشة الرسم في كلمات عرضها 800 نقطة وارتفاعها 600، لذلك النقطة في أقصى اليسار هي النقطة 799 لأن العد يبدأ من الصفر.&lt;br /&gt;&lt;br /&gt;إذا تجاوزت حافة الكرة اليسرى (المحددة بقيمة س + عرض الكرة) هذا الحد نعيد الحافة اليسرى للنقطة الأخيرة. لاحظ أن التخصيص&lt;pre&gt;س = 799 - عرض.الطيف ( طيف )&lt;/pre&gt;  معناه اجعل س + عرض الطيف = 799، أي اجعل الحافة اليسرى بهذه القيمة.&lt;br /&gt;سنفعل نفس الشيء مع قيم &lt;span style="font-weight: bold;"&gt;ص&lt;/span&gt; ليكون الإجراء الكامل كالآتي:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;إجراء&lt;/span&gt; حرك.الكرة ( طيف ، س ، ص ، السرعة ) :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;ارسم.طيف&lt;/span&gt; طيف &lt;span style="color:blue;"&gt;في&lt;/span&gt; ( س ، ص )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = س + السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = ص + السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س &amp;lt; 0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 0&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س + عرض.الطيف ( طيف ) &amp;gt; 799 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 799 - عرض.الطيف ( طيف )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; ص &amp;lt; 0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = 0&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 2 ] = - السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; ص + ارتفاع.الطيف ( طيف ) &amp;gt; 599 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = 599 - ارتفاع.الطيف ( طيف )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 2 ] = - السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;انتظر ( 15 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;عظيم!! لقد أنهينا الإجراء. لم يتبق سوى استدعاؤه:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;ط = حمل.طيف ( &lt;span style="color:magenta;"&gt;"ball1.bmp"&lt;/span&gt; )&lt;br /&gt;س = عشوائي ( 800 )&lt;br /&gt;ص = عشوائي ( 600 )&lt;br /&gt;السرعة.س = عشوائي ( 20 ) + 1&lt;br /&gt;السرعة.ص = عشوائي ( 20 ) + 1&lt;br /&gt;السرعة = [ السرعة.س ، السرعة.ص ]&lt;br /&gt;حرك.الكرة ( ط ، س ، ص ، السرعة )&lt;/pre&gt;&lt;/div&gt;هنا قمنا باستخدام الدالة الجاهزة حمل.طيف لنقوم بتحميل صورة للكرة وتكوين طيف منها، ثم ولدنا بعض القيمة العشوائية لمكان الكرة وسرعتها وقمنا بتمريرهم إلى الإجراء. لاحظ كيف يمكن عمل مصفوفة من عنصرين بالتعبير [ أ، ب] كما فعلنا للمتغير &lt;span style="font-weight: bold;"&gt;السرعة&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;يمكننا الآن أن ننفذ البرنامج:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1MB3Ug3QXfY/TgPFwNDlOuI/AAAAAAAAANU/661fZj4L0tw/s1600/ball1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://3.bp.blogspot.com/-1MB3Ug3QXfY/TgPFwNDlOuI/AAAAAAAAANU/661fZj4L0tw/s400/ball1.png" alt="" id="BLOGGER_PHOTO_ID_5621554191817587426" border="0" /&gt;&lt;/a&gt;للأسف لقطة الشاشة لا تبين روعة الكرة وهي تجري..كان ينبغي أن أضع فيديو لهذا المثال على اليوتيوب :]&lt;br /&gt;&lt;br /&gt;الآن نريد أن نجعل البرنامج يتحرك فيه كرات كثيرة...هذا في الواقع أسهل مما نتخيل بسبب &lt;a href="http://iamsamy.blogspot.com/2011/04/concurrency-in-kalimat.html"&gt;إمكانات البرمجة المتوازية&lt;/a&gt; في لغة كلمات. الأمر شغل يأخذ الصيغة التالية:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;شغل &amp;lt;استدعاء إجراء&amp;gt;&lt;/span&gt;&lt;br /&gt;ومعناه "استدع هذا الإجراء بحيث يعمل على التوازي مع باقي البرنامج وأي إجراءات أخرى". كل ما علينا الآن هو تشغيل عدة نسخ من الإجراء على التوازي ليكون لدينا كرات كثيرة!&lt;br /&gt;&lt;br /&gt;(ملاحظة: تنفيذ الإجراءات في الواقع لن يكون متوازياً، بل ستقوم الآلة الافتراضية virtual machine الخاصة بكلمات بالانتقال بسرعة بين إجراء والآخر ليبدو الأمر كأنه على التوازي. في المستقبل ننوي تغيير الآلة الافتراضية لتحقيق توازٍ حقيقي).&lt;br /&gt;&lt;br /&gt;سيبدو تنفيذ الإجراء الآن كالآتي، لنحرك عشر كرات عشوائياً:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;لكل&lt;/span&gt; أ &lt;span style="color:blue;"&gt;من&lt;/span&gt; 1 &lt;span style="color:blue;"&gt;إلى&lt;/span&gt; 10 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ط = حمل.طيف ( &lt;span style="color:magenta;"&gt;"ball1.bmp"&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = عشوائي ( 800 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = عشوائي ( 600 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة.س = عشوائي ( 20 ) + 1&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة.ص = عشوائي ( 20 ) + 1&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة = [ السرعة.س ، السرعة.ص ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;color:blue;" &gt;شغل&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; حرك.الكرة ( ط ، س ، ص ، السرعة ) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-vGezVXIFN84/TgPHuBGaS2I/AAAAAAAAANc/DB3ctGg_Wgg/s1600/ball2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://4.bp.blogspot.com/-vGezVXIFN84/TgPHuBGaS2I/AAAAAAAAANc/DB3ctGg_Wgg/s400/ball2.png" alt="" id="BLOGGER_PHOTO_ID_5621556353271745378" border="0" /&gt;&lt;/a&gt;جميل، لكن الكرات كلها من نفس اللون، نريد أن يكون الأمر متنوعاً قليلاً..نرى الآن البرنامج في صورته النهائية:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;ملفات.الأطياف=[&lt;span style="color:magenta;"&gt;"ball4.bmp"&lt;/span&gt;،&lt;span style="color:magenta;"&gt;"ball3.bmp"&lt;/span&gt;،&lt;span style="color:magenta;"&gt;"ball2.bmp"&lt;/span&gt;،&lt;span style="color:magenta;"&gt;"ball1.bmp"&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;لكل&lt;/span&gt; أ &lt;span style="color:blue;"&gt;من&lt;/span&gt; 1 &lt;span style="color:blue;"&gt;إلى&lt;/span&gt; 10 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ط = حمل.طيف ( ملفات.الأطياف [ عشوائي ( 4 ) + 1 ] )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = عشوائي ( 800 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = عشوائي ( 600 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة.س = عشوائي ( 20 ) + 1&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة.ص = عشوائي ( 20 ) + 1&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة = [ السرعة.س ، السرعة.ص ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;شغل&lt;/span&gt; حرك.الكرة ( ط ، س ، ص ، السرعة )&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;إجراء&lt;/span&gt; حرك.الكرة ( طيف ، س ، ص ، السرعة ) :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;ارسم.طيف&lt;/span&gt; طيف &lt;span style="color:blue;"&gt;في&lt;/span&gt; ( س ، ص )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = س + السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;ص = ص + السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س &amp;lt; 0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 0&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; س + عرض.الطيف ( طيف ) &amp;gt; 799 :&lt;br /&gt;    &lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;س = 799 - عرض.الطيف ( طيف )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 1 ] = - السرعة [ 1 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; ص &amp;lt; 0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = 0&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 2 ] = - السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; ص + ارتفاع.الطيف ( طيف ) &amp;gt; 599 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ص = 599 - ارتفاع.الطيف ( طيف )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;السرعة [ 2 ] = - السرعة [ 2 ]&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;انتظر ( 15 )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-LLDTBnPEQU0/TgPI9vS6OvI/AAAAAAAAANk/RQuheWZddyg/s1600/ball3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://2.bp.blogspot.com/-LLDTBnPEQU0/TgPI9vS6OvI/AAAAAAAAANk/RQuheWZddyg/s400/ball3.png" alt="" id="BLOGGER_PHOTO_ID_5621557722881866482" border="0" /&gt;&lt;/a&gt;لتحميل المثال كاملاً:&lt;br /&gt;&lt;a href="http://www.kalimat-lang.com/w/files/1/1c/Animated_ball.zip"&gt;اضغط هذا الرابط&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;لتحميل لغة كلمات:&lt;br /&gt;&lt;a href="http://code.google.com/p/kalimat/downloads"&gt;http://code.google.com/p/kalimat/downloads&lt;/a&gt;&lt;br /&gt; أو من الموقع الرسمي &lt;a href="http://www.kalimat-lang.com"&gt;http://www.kalimat-lang.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-1384349567408903672?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/1384349567408903672/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=1384349567408903672' title='5 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1384349567408903672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1384349567408903672'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/06/blog-post_23.html' title='الكرات المتحركة - مثال بكلمات'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1MB3Ug3QXfY/TgPFwNDlOuI/AAAAAAAAANU/661fZj4L0tw/s72-c/ball1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8153550808270583882</id><published>2011-06-17T16:18:00.000-07:00</published><updated>2011-06-17T22:28:00.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>آلة حاسبة بلغة كلمات</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;لا تحتاج خبرة سابقة بالبرمجة بلغة كلمات لتتابع هذا المثال (لكن تحتاج لأن تعرف البرمجة بشكل عام). إذا أردت أن تجربه عملياً فيمكنك تحميل أحدث نسخة من اللغة من &lt;a href="http://code.google.com/p/kalimat/downloads"&gt;http://code.google.com/p/kalimat/downloads&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;هام:&lt;/span&gt; هذا المثال يحتاج نسخة &lt;span style="color: rgb(255, 0, 0);"&gt;يونيو 2011&lt;/span&gt; أو أحدث ليعمل. لو كنت قد حملت نسخة قديمة من كلمات فستحتاج أن تحمل نسخة جديدة.&lt;br /&gt;&lt;br /&gt;الآن هيا نبدأ!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;رسم الأزرار على الشاشة&lt;/span&gt;&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;زر1 = زر &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;زر1 : حدد.المكان ( 10 ، 10 )&lt;br /&gt;زر1 : حدد.الحجم ( 30 ، 30 )&lt;br /&gt;زر1 : حدد.النص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;ن = النافذة.الحالية ( )&lt;br /&gt;ن : اضف ( زر1 )&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;ستؤدي الكود السابقة لعرض زر على الشاشة. لاحظ ان علامة النقطتين ' : ' معناها method call، مثل علامة النقطة في لغات البرمجة المعروفة. الأمر &lt;span style="font-weight: bold;"&gt;جديد&lt;/span&gt; هنا هو نفسه operator new في اللغات الأخرى.&lt;br /&gt;&lt;br /&gt;نحن سنرسم أزراراً كثيرة في البرنامج، لذلك هيا نكتب دالة (function) توفر علينا عناء الكتابة المتكررة:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;دالة &lt;/span&gt;صنع.زر(س ، ص ، العرض ، الارتفاع ، النص ، النافذة):&lt;br /&gt;   ز = زر &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;   ز : حدد.المكان ( س ، ص )&lt;br /&gt;   ز : حدد.الحجم ( العرض ، الارتفاع )&lt;br /&gt;   ز : حدد.النص ( النص )&lt;br /&gt;   النافذة : اضف ( ز )&lt;br /&gt;   &lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; ز&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;لاحظ هنا أن العوامل (parameters) لا تأخذ تعريف للأنواع، بل فقط تأخذ اسماً، وذلك لأن اللغة dynamically typed مثل لغات البايثون مثلاً أو الجافاسكريبت. أيضاً لاحظ أن النقطة هي جزء من اسم الدالة، أي ان اسمها &lt;span style="font-weight: bold;"&gt;صنع.زر&lt;/span&gt; هكذا كلمة واحدة، النقطة في كلمات هي جزء من رموز المعرفات (identifier characters) ولا دور لها في معنى البرنامج.&lt;br /&gt;&lt;br /&gt;الآن وقد صار لدينا دالة تسهل وضع الأزرار يمكننا أن نرسم شكل الآلة الحاسبة، نبدأ أولاً بالأزرار ثم نضيف لاحقاً 'شاشة العرض' التي ستظهر عليها النتيجة:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;ن = النافذة.الحالية ( )&lt;br /&gt;زر1 = صنع.زر (40 ، 130 ، 30 ، 30 ،&lt;span style="color:magenta;"&gt; "1"&lt;/span&gt; ، ن)&lt;br /&gt;زر2 = صنع.زر (70 ، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; ، ن)&lt;br /&gt;زر3 = صنع.زر (100، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"3"&lt;/span&gt; ، ن)&lt;br /&gt;زر4 = صنع.زر (40 ، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"4"&lt;/span&gt; ، ن)&lt;br /&gt;زر5 = صنع.زر (70 ، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"5"&lt;/span&gt; ، ن)&lt;br /&gt;زر6 = صنع.زر (100، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"6"&lt;/span&gt; ، ن)&lt;br /&gt;زر7 = صنع.زر (40 ، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"7"&lt;/span&gt; ، ن)&lt;br /&gt;زر8 = صنع.زر (70 ، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"8"&lt;/span&gt; ، ن)&lt;br /&gt;زر9 = صنع.زر (100 ، 70 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"9"&lt;/span&gt; ، ن)&lt;br /&gt;زر0 = صنع.زر (70 ، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"0"&lt;/span&gt; ، ن)&lt;br /&gt;&lt;br /&gt;زر.الجمع = صنع.زر (10 ، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; ، ن)&lt;br /&gt;زر.الطرح = صنع.زر (10 ، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"-"&lt;/span&gt; ، ن)&lt;br /&gt;زر.الضرب = صنع.زر (10 ، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"×"&lt;/span&gt; ، ن)&lt;br /&gt;زر.القسمة = صنع.زر(10 ، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"÷"&lt;/span&gt; ، ن )&lt;br /&gt;زر.يساوي = صنع.زر (40 ، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"="&lt;/span&gt; ، ن)&lt;br /&gt;زر.الفاصلة.العشرية = صنع.زر(100، 160، 30، 30، &lt;span style="color:magenta;"&gt;"."&lt;/span&gt;، ن)&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;والآن حان دور شاشة العرض:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;الشاشة = سطر.نصي &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;الشاشة : حدد.المكان ( 10 ، 30 )&lt;br /&gt;الشاشة : حدد.الحجم ( 120 ، 30 )&lt;br /&gt;الشاشة : حدد.النص ( &lt;span style="color:magenta;"&gt;""&lt;/span&gt; )&lt;br /&gt;ن : اضف ( الشاشة )&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;الفصيلة &lt;span style="font-weight: bold;"&gt;سطر.نصي&lt;/span&gt; معناها صندوق لتحرير النصوص من سطر واحد، إن أردت تحرير أكثر من سطر في برنامجك يمكنك استخدام الفصيلة &lt;span style="font-weight: bold;"&gt;صندوق.نصي&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الآن يمكننا تجربة البرنامج:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-zZc6xG5frHo/TfvuzwnaEnI/AAAAAAAAAM8/wgY8yYyIleo/s1600/calc1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://3.bp.blogspot.com/-zZc6xG5frHo/TfvuzwnaEnI/AAAAAAAAAM8/wgY8yYyIleo/s400/calc1.png" alt="" id="BLOGGER_PHOTO_ID_5619347533065753202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;شكله ظريف، لكن هناك مشكلتان: النافذة حجمها الافتراضي أكبر من اللازم، كما أن عنوانها "تنفيذ البرنامج" عام أكثر مما ينبغي...من السهل تغيير ذلك على أية حال. أضف هذه السطور لآخر البرنامج:&lt;br /&gt;&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;ن : حدد.الحجم ( 150 ، 210 )&lt;br /&gt;ن : حدد.العنوان ( &lt;span style="color:magenta;"&gt;"الحاسبة"&lt;/span&gt; )&lt;/pre&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-rdlfVv81_Ak/TfvvlFiwjBI/AAAAAAAAANE/0nbl9OjMuUQ/s1600/calc2.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-rdlfVv81_Ak/TfvvlFiwjBI/AAAAAAAAANE/0nbl9OjMuUQ/s1600/calc2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 158px; height: 237px;" src="http://2.bp.blogspot.com/-rdlfVv81_Ak/TfvvlFiwjBI/AAAAAAAAANE/0nbl9OjMuUQ/s400/calc2.png" alt="" id="BLOGGER_PHOTO_ID_5619348380496989202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;هذا أفضل بكثير!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ادخال المستخدم للأرقام&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الآن بعد عمل "شكل" البرنامج حان وقت اضافة "المضمون". أول شيء نريده هو عرض الأرقام حين يدخلها المستخدم. الأمر نلخصه في القواعد الآتية:&lt;br /&gt;1- إذا ضغط المستخدم زر رقمي [0..9]، اضف الرقم المناظر للزر إلى شاشة العرض&lt;br /&gt;2- إذا ضغط المستخدم زر الفاصلة العشرية اضفه لشاشة العرض إذا كانت هذه أول مرة يضغط فيها، وإلا لا تفعل شيئاً.&lt;br /&gt;&lt;br /&gt;قبل أن نبدأ بتنفيذ كل ذلك علينا أن نأخذ جانباً ونعرف كيف نتعامل مع الحوادث (events) مثل ضغط زر او اختيار شيء من قائمة أو ما شابه. يحدث ذلك في كلمات عن طريق مفهوم &lt;span style="font-weight: bold;"&gt;القنوات&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;اضف هذا الجزء لنهاية البرنامج:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;   &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط  زر1&lt;br /&gt;   الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;هناك قناة في فصيلة الأزرار اسمها &lt;span style="font-weight: bold;"&gt;ضغط&lt;/span&gt;. القناة هي كائن يمكن عن طريقه لجزء من البرنامج (مثل الزر) أن يرسل إشارة لجزء آخر (مثل السطور السابقة) عندما يريد ابلاغه بحدث معين.&lt;br /&gt;&lt;br /&gt;الأمر&lt;br /&gt;&lt;span style="font-weight: bold;color:blue;" &gt;     تسلم&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;color:blue;" &gt;إشارة&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;color:blue;" &gt;من&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; ضغط  زر1&lt;/span&gt;&lt;br /&gt;سوف يؤدي لأن ينتظر البرنامج حتى يرسل الزر الإشارة المطلوبة قبل المتابعة. سوف تأتي تلك الإشارة حين يضغط المستخدم زر ادخال الواحد1، في تلك الحالة سيضيف البرنامج الرمز "1" لشاشة العرض ويعود إلى حالة الانتظار في حلقة لا نهائية.&lt;br /&gt;&lt;br /&gt;لو قمت بتجربة البرنامج الآن ستجد أنه يضيف "1" إلى الشاشة كلما ضغطت الزر المطلوب.&lt;br /&gt;&lt;br /&gt;(دور القنوات أكثر بكثير مما قيل هنا، لكن لن نتوسع في الحديث عنها في هذا المثال المبدئي)&lt;br /&gt;&lt;br /&gt;كيف نجعله يضيف باقي الأرقام؟ المشكلة أن هذه الكود لن تنفع:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;   &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1&lt;br /&gt;   الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2&lt;br /&gt;   الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;لماذا لن تنفع؟ لأننا هنا نأمره أن يتسلم الإشارات بالترتيب، أي أننا نقول للبرنامج "تسلم اشارة من ضغط زر1، ثم تسلم إشارة من زر2". هذا سيعمل فقط لو أراد المستخدم أن يدخل شيئاً مثل "12" أو "1212"، "121212"...الخ :(&lt;br /&gt;&lt;br /&gt;ما الحل إذاً؟ لابد من طريقة نقول له أنه هناك أكثر من قناة وعليك استلام اشارة من أي واحدة منها حين تأتي. هذا هو دور الأمر &lt;span style="font-weight: bold;"&gt;تخير&lt;/span&gt;&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    تخير&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;هنا سوف ينتظر البرنامج أي من الإشارتين، ضغط زر1 أو ضغط زر2، فإن جاءت الإشارة سينفذ جزء الكود المرتبط بها (أي يضيف 1 أو 2 إلى الشاشة حسب الإشارة القادمة) ثم يتابع في حلقة لا تنتهي.&lt;br /&gt;&lt;br /&gt;من السهل تعميم ذلك لندخل الأرقام كلها:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    تخير&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر3 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"3"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر4 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"4"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر5 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"5"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر6 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"6"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر7 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"7"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر8 :&lt;br /&gt;       الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"8"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر9 :&lt;br /&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;   &lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"9"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر0 :&lt;br /&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;   &lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"0"&lt;/span&gt; )&lt;br /&gt;&lt;span style="color:blue;"&gt;    تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;الكود طويلة لكن كلها تشبه بعضها؛ لا تعقيد كبير فيها. هناك طرق لجعلها أكثر تنظيماً لكن صورتها الحالية بسيطة، ونحن نريده مثالاً بسيطاً في الوقت الحالي...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;الفاصلة العشرية&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;سوف نستخدم متغيراً منطقياً اسمه &lt;span style="font-weight: bold;"&gt;كتبنا.فاصلة.عشرية&lt;/span&gt;، في بداية البرنامج سوف تكون قيمته &lt;span style="font-weight: bold;"&gt;خطأ&lt;/span&gt;، ثم نجعل قيمته &lt;span style="font-weight: bold;"&gt;صحيح&lt;/span&gt; حين نضغط زر الفاصلة العشرية لأول مرة. لن يضف البرنامج الرمز "." إلى الشاشة إلا مرة واحدة فقط حين تكون قيمة هذا المتغير &lt;span style="font-weight: bold;"&gt;خطأ&lt;/span&gt; في بداية البرنامج.&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span style="color:blue;"&gt;    تخير&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الفاصلة.العشرية :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"."&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;........وهكذا وهكذا الخ الخ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;العمليات&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;هيا الآن ننفذ عملية الجمع وسيكون من السهل تعميم الطريقة بعد ذلك لتشمل جميع العمليات. سوف نحتاج هنا متغيران جديدان: متغير اسمه &lt;span style="font-weight: bold;"&gt;العملية&lt;/span&gt; والآخر اسمه &lt;span style="font-weight: bold;"&gt;العدد.الأول&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;المتغير المسمى &lt;span style="font-weight: bold;"&gt;العملية&lt;/span&gt; يدل على العملية الحسابية الحالية. في البداية ستكون قيمته نصاً فارغاً، فإذا ضغط المستخدم زر الجمع سنعطيه القيمة "+"، بحيث نعرف ما المطلوب من الحاسبة عند ضغط زر 'يساوي'.&lt;br /&gt;&lt;br /&gt;ستأخذ الكود الصورة التالية:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;العدد.الأول = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تخير&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الجمع :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( &lt;span style="color:magenta;"&gt;""&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.يساوي :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = كعدد ( العدد.الثاني )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول + العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = كنص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الفاصلة.العشرية :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;....وهكذا الكلام السابق الذي نعرفه....&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;تعال نأخذ كل جزء على حدىً.. أولاً زر الجمع نفسه:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الجمع :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( &lt;span style="color:magenta;"&gt;""&lt;/span&gt; )&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;هذا الجزء يقوم بالآتي عند ضغط زر الجمع:&lt;br /&gt;1- يحدد العملية بأنها "+"&lt;br /&gt;2- يأخذ النص المكتوب على الشاشة، يحوله لعدد، ويخزنه في المتغير &lt;span style="font-weight: bold;"&gt;العدد.الأول&lt;/span&gt; لأننا سنحتاجه بعد ذلك لإجراء عملية الجمع&lt;br /&gt;3- يفرغ الشاشة استعداداً لإدخال رقم جديد&lt;br /&gt;4- يسمح لنا بإدخال فاصلة عشرية (إن أردنا) أثناء إدخال الرقم الثاني وذلك بأن يجعل قيمة &lt;span style="font-weight: bold;"&gt;كتبنا.فاصلة.عشرية&lt;/span&gt; تساوي &lt;span style="font-weight: bold;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الجزء الآخر عند ضغط زر 'يساوي'&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.يساوي :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = كعدد ( العدد.الثاني )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول + العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = كنص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;....&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;هذا بدوره يقوم بالآتي:&lt;br /&gt;1- يأخذ العدد الموجود على الشاشة ويخزنه في المتغير &lt;span style="font-weight: bold;"&gt;العدد.الثاني&lt;/span&gt;&lt;br /&gt;2- يتأكد أن العملية عملية جمع (سيكون هذا مهماً حين نضيف باقي العمليات) ويحسب النتيجة المطلوبة&lt;br /&gt;3- يعرض النتيجة على الشاشة بعد تحويلها إلى صورة نصية&lt;br /&gt;4- يعيد العملية إلى القيمة غير المعرفة "" إلى أن نختار عملية جديدة&lt;br /&gt;&lt;br /&gt;هناك فقط مشكلة هي أن البرنامج سيعمل بطريقة صحيحة مرة واحدة فقط: لو أدخلت 12 ثم + ثم 13 ثم = فستجد النتيجة 25، لكن إن ضغطت بعدها 1 فستجد مكتوب على الشاشة 251&lt;br /&gt;&lt;br /&gt;هذا خطأ..كان المفروض أن يعتبر البرنامج اننا انتهينا من الحسبة القديمة ويفرّغ الشاشة قبل بدء الحسبة الجديدة، بحيث يظهر على الشاشة 1&lt;br /&gt;&lt;br /&gt;أيضاً تصرف آلتنا الحاسبة ليس مثل الآلة العادية. نحن حين نضغط 12 ثم + سوف نجد الشاشة قد مسحت، بينما في الحاسبة العادية سوف نضغط 12 ثم + ولا يتم مسح الشاشة إلا عند بدء إدخال العدد الثاني.&lt;br /&gt;&lt;br /&gt;نحن نحتاج طريقة نقول بها للبرنامج "نحن على وشك إدخال عدد جديد، لذلك قم بمسح الشاشة المرة القادمة لو ضغط المستخدم زر عددي، ثم اعرض ما ادخل".&lt;br /&gt;&lt;br /&gt;لكي نحل المشكلة نحتاج لمتغير جديد اسمه &lt;span style="font-weight: bold;"&gt;تفريغ&lt;/span&gt;، معناه "هل علينا أن نفرغ الشاشة حين يضغط المستخدم على زر عددي في المرة القادمة"؟&lt;br /&gt;&lt;br /&gt;سوف نحتاج أيضاً أن نعدّل البرنامج قليلاً (التعديلات بالخط الثقيل ولونها أحمر):&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;العدد.الأول = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;تفريغ = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;خطأ&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تخير&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الجمع :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;تفريغ = &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;color:blue;" &gt;صحيح&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.يساوي :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = كعدد ( العدد.الثاني )&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول + العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = كنص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;            تفريغ = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;صحيح&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الفاصلة.العشرية :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"."&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;إذا&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; تفريغ = صحيح :&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;الشاشة : حدد.النص ( &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;            تفريغ = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;خطأ&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص ( &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2 :&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       ...باقي الأرقام مثلها مثل 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;الموضوع بسيط جداً:&lt;br /&gt;1- في نهاية ضغط زر الجمع أو زر يساوي نقوم بتحديد قيمة &lt;span style="font-weight: bold;"&gt;تفريغ&lt;/span&gt; لتكون &lt;span style="font-weight: bold;"&gt;صحيح&lt;/span&gt;.&lt;br /&gt;2- في أزرار الأرقام نتأكد من قيمة ذلك المتغير، فإن كانت &lt;span style="font-weight: bold;"&gt;صحيح&lt;/span&gt; نقوم بمسح الشاشة قبل عرض الرقم المكافيء للزر&lt;br /&gt;&lt;br /&gt;يبقى شيء واحد هو تعميم العمليات لتشمل الطرح والقسمة والضرب. سوف نعرض هنا البرنامج كاملاً بعد إضافة هذا الجزء:&lt;br /&gt;&lt;div dir="rtl" style="background-color: rgb(240, 240, 255);"&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;دالة&lt;/span&gt; صنع.زر(س، ص، العرض، الارتفاع، النص، النافذة):&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ز = زر &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ز : حدد.المكان ( س ، ص )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ز : حدد.الحجم ( العرض ، الارتفاع )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;ز : حدد.النص ( النص )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النافذة : اضف ( ز )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;ارجع ب:&lt;/span&gt; ز&lt;br /&gt;&lt;span style="color:blue;"&gt;نهاية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ن = النافذة.الحالية ( )&lt;br /&gt;زر1 = صنع.زر (40 ، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"1"&lt;/span&gt; ، ن)&lt;br /&gt;زر2 = صنع.زر (70 ، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"2"&lt;/span&gt; ، ن)&lt;br /&gt;زر3 = صنع.زر (00 ، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"3"&lt;/span&gt; ، ن)&lt;br /&gt;زر4 = صنع.زر (40 ، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"4"&lt;/span&gt; ، ن)&lt;br /&gt;زر5 = صنع.زر (70 ، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"5"&lt;/span&gt; ، ن)&lt;br /&gt;زر6 = صنع.زر (100، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"6"&lt;/span&gt; ، ن)&lt;br /&gt;زر7 = صنع.زر (40 ، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"7"&lt;/span&gt; ، ن)&lt;br /&gt;زر8 = صنع.زر (70 ، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"8"&lt;/span&gt; ، ن)&lt;br /&gt;زر9 = صنع.زر (100، 70  ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"9"&lt;/span&gt; ، ن)&lt;br /&gt;زر0 = صنع.زر (70 ، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"0"&lt;/span&gt; ، ن)&lt;br /&gt;&lt;br /&gt;زر.الجمع = صنع.زر (10،  70 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; ، ن)&lt;br /&gt;زر.الطرح = صنع.زر (10، 100 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"-"&lt;/span&gt; ، ن)&lt;br /&gt;زر.الضرب = صنع.زر (10، 130 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"×"&lt;/span&gt; ، ن)&lt;br /&gt;زر.القسمة = صنع.زر(10، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"÷"&lt;/span&gt; ، ن)&lt;br /&gt;زر.يساوي = صنع.زر (40، 160 ، 30 ، 30 ، &lt;span style="color:magenta;"&gt;"="&lt;/span&gt; ، ن)&lt;br /&gt;&lt;br /&gt;زر.الفاصلة.العشرية = صنع.زر(100، 160، 30، 30، &lt;span style="color:magenta;"&gt;"."&lt;/span&gt;، ن)&lt;br /&gt;&lt;br /&gt;الشاشة = سطر.نصي &lt;span style="color:blue;"&gt;جديد&lt;/span&gt;&lt;br /&gt;الشاشة : حدد.المكان ( 10 ، 30 )&lt;br /&gt;الشاشة : حدد.الحجم ( 120 ، 30 )&lt;br /&gt;الشاشة : حدد.النص ( &lt;span style="color:magenta;"&gt;""&lt;/span&gt; )&lt;br /&gt;ن : اضف ( الشاشة )&lt;br /&gt;&lt;br /&gt;ن : حدد.الحجم ( 150 ، 210 )&lt;br /&gt;ن : حدد.العنوان ( &lt;span style="color:magenta;"&gt;"الحاسبة"&lt;/span&gt; )&lt;br /&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;العدد.الأول = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt;&lt;br /&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;طالما&lt;/span&gt; &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تخير&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الجمع :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الطرح :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"-"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الضرب :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"×"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.القسمة :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;"÷"&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الأول = كعدد ( العدد.الأول )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.يساوي :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = الشاشة : نصه ( )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العدد.الثاني = كعدد ( العدد.الثاني )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"+"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول + العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"-"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول - العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"×"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول × العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;وإلا&lt;/span&gt; &lt;span style="color:blue;"&gt;إذا&lt;/span&gt; العملية = &lt;span style="color:magenta;"&gt;"÷"&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = العدد.الأول ÷ العدد.الثاني&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; &lt;span style="color:blue;"&gt;ليس&lt;/span&gt; النتيجة = &lt;span style="color:blue;"&gt;لاشيء&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;النتيجة = كنص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص ( النتيجة )&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;العملية = &lt;span style="color:magenta;"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر.الفاصلة.العشرية :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"."&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;كتبنا.فاصلة.عشرية = &lt;span style="color:blue;"&gt;صحيح&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر1 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"1"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;    أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر2 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;    إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"2"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر3 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"3"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر4 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"4"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر5 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"5"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر6 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"6"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر7 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"7"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر8 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"8"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر9 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"9"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--------&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;أو&lt;/span&gt; &lt;span style="color:blue;"&gt;تسلم&lt;/span&gt; &lt;span style="color:blue;"&gt;إشارة&lt;/span&gt; &lt;span style="color:blue;"&gt;من&lt;/span&gt; ضغط زر0 :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;إذا&lt;/span&gt; تفريغ :&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : حدد.النص (&lt;span style="color:magenta;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;تفريغ = &lt;span style="color:blue;"&gt;خطأ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;الشاشة : الحق.نص (&lt;span style="color:magenta;"&gt;"0"&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;تم&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;تابع&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;يبدو البرنامج طويلاً، لكن تذكر أنه كله أجزاء متكررة: الكود الخاصة بالعمليات مكررة أربع مرات والجزء الخاص بالأرقام عشر مرات! هناك بالتأكيد طرق لاختصار هذه الكود كما قلت، لكن حاليا...إنها تعمل :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-PykhNz8THSc/TfwmMJBegeI/AAAAAAAAANM/GEo6fqYY1LQ/s1600/calc3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 158px; height: 237px;" src="http://1.bp.blogspot.com/-PykhNz8THSc/TfwmMJBegeI/AAAAAAAAANM/GEo6fqYY1LQ/s400/calc3.png" alt="" id="BLOGGER_PHOTO_ID_5619408425073934818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;مازال هناك بعض الإمكانات التي يمكن إضافتها:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;السماح بإدخال سلسلة مثل 12 / + /  13 / + / 15 بحيث تظهر نتيجة "12+13" عند ضغط علامة زائد الثانية قبل استمرار العمليات&lt;/li&gt;&lt;li&gt;إجراء العمليات بالترتيب الرياضي الصحيح، يعني لو أدخل المستخدم 7+5×2 تكون النتيجة 17 وليس 24&lt;/li&gt;&lt;li&gt;تدارك أخطاء المستخدم المحتملة&lt;/li&gt;&lt;/ul&gt;لكن هذه الإمكانيات خارج نطاق هذا المثال التوضيحي على أية حال. يمكنك أن تكتبها أنت إن أردت ^^&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-8153550808270583882?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/8153550808270583882/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=8153550808270583882' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8153550808270583882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8153550808270583882'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/06/blog-post.html' title='آلة حاسبة بلغة كلمات'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-zZc6xG5frHo/TfvuzwnaEnI/AAAAAAAAAM8/wgY8yYyIleo/s72-c/calc1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-1096086870060204252</id><published>2011-05-21T21:40:00.000-07:00</published><updated>2011-05-22T10:07:25.881-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>تحذير: ساحكي قصة حياتي!</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;جانب علمي&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ما تريد أن تكون عندما تكبر؟ رائد فضاء....لا! لا! أريد أن أكون مخترعاً!&lt;br /&gt;&lt;br /&gt;ماذا كان يعمل &lt;a href="http://iamsamy.blogspot.com/2011/05/blog-post.html"&gt;عبقرينو&lt;/a&gt; بالضبط؟ في القصص كان عمله أشبه بمخترع freelancer يأتيه الزبون ليخترع له حزام الطيران أو سائل نمو النباتات السريع ثم يأخذ أجره. ظننتها وظيفة حقيقية منتشرة. ربما ستكون كذلك يوماً.&lt;br /&gt;&lt;br /&gt;بعدها تعلمت البرمجة وصارت اهتمامي الأساسي. لم أكن أدري وقتها أن البرمجة هي اختراع لكن &lt;a href="http://iamsamy.blogspot.com/2009/04/blog-post.html"&gt;بطريقة أخرى&lt;/a&gt;. ثم دخلت الجامعة وصرت أتساءل: ما مجال البرمجة الذي أفضلة؟&lt;br /&gt;&lt;br /&gt;جربت برمجة الألعاب. قرأت في الرياضيات. نصحني أستاذ لي بالقراءة في الArtificial intelligence، قرأت فيه من كتاب، ثم مللته وقرأت من كتاب آخر. كان ذلك الكتاب الآخر فيه مقدمة للغة Lisp...شدتني اللغة ربما أكثر من الAI نفسه.&lt;br /&gt;&lt;br /&gt;بعدها قرأت عن لغة Haskell. وبدأت افهم أنه هناك عالم أكبر بكثير من الC والJava وما شابه. مجالي المفضل هو...لغات البرمجة!&lt;br /&gt;&lt;br /&gt;(من فضلكم: لا يقولن أحد أن مجالي هو الcompilers! هناك فرق بين compilers وبين programming language theory).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;جانب عملي&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;بعد التخرج صار السؤال: ماذا أريد أن أفعل؟ قبلت وظيفة المعيد. بعدها بسنين تركتها. قبل أن أدخل في وظيفة أخرى كان لابد أن أقف وقفة مع نفسي: ماذا أريد بالضبط؟ ما الذي جعلني اختار تلك الوظيفة؟ (لابد من سبب منطقي)، وما الذي جعلني أتركها؟ ما هدفي؟&lt;br /&gt;&lt;br /&gt;بعد التأمل خرجت بالاستنتاج الآتي: أنا أريد بيئة أخترع فيها. ظننت أن الماجستير وماشابه سيوفر تلك البيئة لكني فشلت في ذلك. إذاً فليكن سؤالي عند التقدم لأية وظيفة هو "هل ستقدم لي، عاجلاً أو آجلاً، بيئة للاختراع؟".&lt;br /&gt;&lt;br /&gt;في النهاية قررت أن أبني تلك البيئة لنفسي: شركة وظيفتها تحويل الcomputer science إلى أرباح، شركة ما هي إلا حجة للمخترعين كي يخترعوا.&lt;br /&gt;&lt;br /&gt;(مازال السعي لتلك الشركة مستمراً.)&lt;br /&gt;&lt;br /&gt;في تلك الأثناء صرت أقرأ كثيراً جداً. تاريخ، لغة، القليل من علم اجتماع...صارت هناك فكرة تتشكل في ذهني عن الأمة الإسلامية واوروبا والمستوى الفكري. صرت يوماً بعد يوم أفكر في &lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;النهضة&lt;/a&gt; وكيفية المشاركة في دفعها للأمام.&lt;br /&gt;&lt;br /&gt;شيء آخر: بعد تركي للكلية وجدت طالباً يقول لي أنه يريدني أن القي بعض &lt;a href="http://iamsamy.blogspot.com/2011/05/two-personal-stories-related-to-lisp.html"&gt;المحاضرات&lt;/a&gt; عن الLisp.&lt;br /&gt;&lt;br /&gt;قلت له: لكني لم أعد معيداً رسمياً.&lt;br /&gt;&lt;br /&gt;قال: لا بأس، سوف نأخذ إذناً من الكلية ونعطيك إطاراً تقدم فيه الندوات.&lt;br /&gt;&lt;br /&gt;هنا اكتشفت شيئاً جديداً؛ أنني لا أحتاج أن أكون عضو هيئة تدريس لأقدم علماً لمن يريده!&lt;br /&gt;&lt;br /&gt;منذ ذلك الحين قدمت ندوات عن ال&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lisp &lt;/li&gt;&lt;li&gt;Languages and interpreters&lt;/li&gt;&lt;li&gt;&lt;a href="http://cisclub.org/forum/showthread.php?t=4888"&gt;Ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cisclub.org/forum/showthread.php?t=14606"&gt;Erlang&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://cisclub.org/forum/forumdisplay.php?f=261"&gt;#C&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.authorstream.com/Presentation/ManS_-967417-esd-mohamed-samy-subjects-in-fcis-and-why-they-matter/"&gt;دور كلية الحاسبات العلمي&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cisclub.org/forum/showthread.php?t=19662"&gt;مجلسي علم&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;جانب شخصي&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;في 2010 حدث شيء جديد: بدأت أقابل أطفالاً في عائلتنا لم أكن قد رأيتهم من قبل (كنت منعزلاً نوعاً ما) وأطفال لمعارف.اكتشفت معلومة جديدة: إن الطفل لهو شيء مذهل.&lt;br /&gt;&lt;br /&gt;هل تظن أن اللعب مع الأطفال شيء سهل؟ هذه عينة مما كنت أفعله معهم:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;رسم قصص مصورة&lt;/li&gt;&lt;li&gt;تأليف شعر&lt;/li&gt;&lt;li&gt;كتابة رسائل بالشفرة وإعطائها له ليحلها&lt;/li&gt;&lt;li&gt;تجارب علمية&lt;/li&gt;&lt;li&gt;محاولات لتعليمهم البرمجة&lt;/li&gt;&lt;/ul&gt;أي باختصار، يجب أن تكون عبقرياً لتقدر على إعطاء الطفل ما يستحقه من الmental stimulation.&lt;br /&gt;&lt;br /&gt;وهنا كنت قد كونت فكرة لا بأس بها عما أريد لنفسي من الدنيا:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ورشة عمل أخترع فيها&lt;/li&gt;&lt;li&gt;اطفال لي ألعب معهم&lt;/li&gt;&lt;/ol&gt;وما كنت أريد أن أقدمه للمجتمع:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;خطة لدفع النهضة تركز على المستوى الفكري للمجتمع والعلم المستشري.&lt;/li&gt;&lt;/ol&gt;لكن كان هناك شيء ناقص.........لماذا كنت أحب تقديم الندوات في الكلية؟ لماذا ازورها بهذه الغزارة؟ ما علاقة ذلك بأهدافي في الحياة؟&lt;br /&gt;&lt;br /&gt;وفي يوم كنت أقرأ كتاباً عن الثقوب السوداء. كتاب ظريف جداً يجمع بين المعلومات نفسها وبين بيئة البحث العلمي التي أدت لاكتشاف هذه المعلومات. قرأت فيه عن Oppenheimer وكيف كان يجتمع بطلاب البحث في الجامعة التي كان يدرّس فيها، ويتناقشون "دردشة" علمية عن الفيزياء والكونيات، ثم إذا رأى اهتمام طالب معين بموضوع معين عرض عليه نقطة في ذلك المجال ليشرف عليه فيها.&lt;br /&gt;&lt;br /&gt;هذا هو الهدف الناقص!!&lt;br /&gt;&lt;br /&gt;لنعدّل الخطة إذاً:&lt;br /&gt;ما أريد لنفسي من الدنيا:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ورشة عمل أخترع فيها&lt;/li&gt;&lt;li&gt;طلبة علم اتعاون معهم&lt;br /&gt;&lt;/li&gt;&lt;li&gt;اطفال لي ألعب معهم&lt;/li&gt;&lt;/ol&gt; وما أريد أن أقدمه للمجتمع:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;خطة لدفع النهضة تركز على المستوى الفكري للمجتمع والعلم المستشري.&lt;/li&gt;&lt;/ol&gt;(في الواقع، ربما ينبغي أن أفكر مرة أخرى في موضوع الدراسات العليا من أجل الهدف الشخصي رقم 2).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;جانب فلسفي&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;حتى الآن الأمور مستقرة. قد عرفت أخيراً ماذا أريد بالضبط من الدنيا. لكن في الأيام الحالية هناك شيء أفكر فيه: هذه الأهداف "حقيقية" أكثر من اللازم. الجانب الفلسفي عندي يريد مجموعة من المباديء التي توحّد بين كل الأهداف. ما الذي يربط بين النهضة والأطفال والبرمجة و...و...؟&lt;br /&gt;&lt;br /&gt;شيئاً فشيئاً أحاول التوصل لإجابة هذا السؤال:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;لكي تخترع لابد (1) أن تفهم قوانين الطبيعة ثم (2) تفكر كيف تطوع تلك القوانين لتحقيق أهداف بطرق جديدة.&lt;/li&gt;&lt;li&gt;لكي تبرمج لابد أن تفهم الsyntax/semantics الخاصة بلغة البرمجة ثم تصنع بها شيئا جديدا.&lt;/li&gt;&lt;li&gt;لكي تلعب مع الطفل [بطريقتي] لابد (1) أن تكون مثقفا و (2) أن تفكر في طرق لشرح ما تعلم بطريقة تناسب سن الطفل.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;لكي تسعى للمشاركة في إحداث نهضة عليك أن تفهم كيف يتغير المجتمع وكيف تنتشر الأفكار، ثم تخطط لنشر الأفكار التي تراها صحيحة.&lt;/li&gt;&lt;li&gt;كل هذه الأشياء مرتبطة ببعضها: اهتمامي باللغة العربية ينعكس على البرمجة ينعكس على الأطفال ينعكس على النهضة.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;يمكن إذاَ تلخيص الدافع الذي يحركني كإنسان في كلمات ثلاث:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Explore. Understand. Invent&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;لو أردت عدداً أكبر من الكلمات:&lt;br /&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;div dir="ltr" style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Search, understand, create. Try to do things no one did before you.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Whether it's programming, a business, or society.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هذا يفسر أشياء كثيرة؛ أليس كذلك؟ هل تذكر &lt;a href="http://iamsamy.blogspot.com/2010/10/proposal-for-new-style-fcis-acm-chapter.html"&gt;اقتراحاتي&lt;/a&gt; لتطوير الACM؟ كنت أقول أننا نحتاج إلى "Creation, Diversity, Depth". الآن انظر:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Search / Understand / Create &amp;lt;==&amp;gt; Diversity/ Depth / Creation&lt;/span&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;ماذا عن فكرة مركز &lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post.html"&gt;التفكير الحوسبي&lt;/a&gt;؟ هدف إنشاء المركز جزئين: (1) البحث عن طريقة متطورة لتعليم البرمجة/علوم الحاسب (2) اقتراح هذه الطريقة للمدارس والمؤسسات التعليمية. أي نفس فكرة الفهم ثم التطبيق.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;إن استكشاف الإنسان لنفسه لشيء صعب حقاً...&lt;br /&gt;&lt;br /&gt;(هل تشعر أن هذه التدوينة علمية أكثر من اللازم؟ استرخ قليلاً &lt;a href="http://iamsamy.blogspot.com/2011/04/blog-post.html"&gt;هنا&lt;/a&gt;)&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-1096086870060204252?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/1096086870060204252/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=1096086870060204252' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1096086870060204252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/1096086870060204252'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/05/blog-post_1930.html' title='تحذير: ساحكي قصة حياتي!'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-5588237313177141074</id><published>2011-05-21T19:39:00.000-07:00</published><updated>2011-05-21T23:36:27.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='children'/><title type='text'>لك ولأطفالك :)</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;ماما جابت لي معزة&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ماما جابت لي معزة&lt;br /&gt;ماما جابت لي معزة&lt;br /&gt;المعزة مستفزة...&lt;br /&gt;بس أنا باحب المعزة،&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي سمنة&lt;br /&gt;ماما جابت لي سمنة&lt;br /&gt;انا واختي سلمى&lt;br /&gt;مش بنحب السمنة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي جزمة&lt;br /&gt;ماما جابت لي جزمة&lt;br /&gt;جزمة مالهاش لازمة...&lt;br /&gt;بس انا باحب الجزمة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي نملة&lt;br /&gt;ماما جابت لي نملة&lt;br /&gt;نملة متكاملة&lt;br /&gt;وانا باحب النملة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي فرخة&lt;br /&gt;ماما جابت لي فرخة&lt;br /&gt;فرخة لابسة طرحة&lt;br /&gt;وانا باحب الفرخة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي وزة&lt;br /&gt;ماما جابت لي وزة&lt;br /&gt;الوزة مشمئزة...&lt;br /&gt;بس انا باحب الوزة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;ماما جابت لي زبدة&lt;br /&gt;ماما جابت لي زبدة&lt;br /&gt;زبدة بطعم الكبدة&lt;br /&gt;وانا باحب الزبدة&lt;br /&gt;اللي جابتها ماما&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;يوم الجمعة&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;بابا راح يصلّي&lt;br /&gt;واخويا بيشد ودني&lt;br /&gt;وانا قلت يا أمي:&lt;br /&gt;اخويا شد ودني again.&lt;br /&gt;&lt;br /&gt;انا باحب السمك&lt;br /&gt;واخويا بيحب السمك&lt;br /&gt;بابا في عمل السمك انهمك&lt;br /&gt;وماما عملت آيس كريم.&lt;br /&gt;&lt;br /&gt;عايزة اروح النادي&lt;br /&gt;واخويا عايز النادي&lt;br /&gt;ومامي قالت لdaddy:&lt;br /&gt;ماتوديهم النادي يا حسين.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-5588237313177141074?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/5588237313177141074/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=5588237313177141074' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5588237313177141074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/5588237313177141074'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/05/blog-post_21.html' title='لك ولأطفالك :)'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7340547623970878691</id><published>2011-05-18T16:30:00.000-07:00</published><updated>2011-12-09T09:51:46.213-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social'/><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda-plan'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>خطة للنهضة(3): أفكار للضربات الجراحية</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;[المحتويات: &lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;الجزء الأول&lt;/a&gt;، &lt;a href="http://iamsamy.blogspot.com/2011/02/2.html"&gt;الجزء الثاني&lt;/a&gt;، الجزء الثالث(هذا المقال)،&lt;a href="http://iamsamy.blogspot.com/2011/12/4.html"&gt; الجزء الرابع&lt;/a&gt;]&lt;/span&gt;&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;ملخص المقالات السابقة:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;الخطة مبنية على رفع المستوى الفكري وتغيير القيم الاجتماعية&lt;/li&gt;&lt;li&gt;الخطة مصممة لتكون موزعة على أفراد وجماعات كثيرة في المجتمع، والارتباط بين تلك المجموعات فكري بدون إدارة مركزية&lt;/li&gt;&lt;li&gt;الخطة تعتمد على الضربات الجراحية، أي تحقيق أكبر إنجاز ممكن بأقل وقت وتكلفة ممكنة&lt;/li&gt;&lt;/ul&gt;الآن  في هذا الجزء سأقدّم 'كتالوج' من أفكار عديدة لضربات جراحية ممكنة. ليس لي  الفضل في الإتيان بأغلب هذه الأفكار، بل هي نتيجة ملاحظة لتجارب داخل  وخارج مجتمعنا.&lt;br /&gt;&lt;br /&gt;أيضاً هذه الأفكار لا تغطي سوى جوانب محدودة --  مثلاً جزء الطبقة الوسطى هنا يركّز على قضية إنشاء الشركات بينما لم يذكر  أشياء أخرى مهمة مثل إدارة الأموال الشخصية -- الفكرة هنا أن يقوم المجتمع،  كل بحسب خبرته وقدرته، في التفكير وتغطية سائر الجوانب بنفس نظام الضربات  الجراحية. هذا جزء من فكرة الخطة الموزعة!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;العمل بالإسلام&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;تركيزي  هنا على الاحتياج لفئة من العلماء الإسلاميين يجمعون بين التفوق في العلوم  الإسلامية من فقه وتفسير وحديث... وبين التفوق في العلوم البشرية مثل  القانون والاقتصاد والاجتماع ...الخ. إن أردنا أن نتقدم كأمّة إسلامية، وإن  أردنا أن نخرج مما نحن فيه، وإن أردنا أن نغير المجتمع كله، فسنحتاج إلى &lt;span style="font-weight: bold;"&gt;بيئة بحث علمي إسلامي نشطة غنية&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;ما معنى غنية؟&lt;br /&gt;&lt;ul&gt;&lt;li&gt;أن  تكون دراسة الفقه جذابة للعباقرة الذين يقدرون على التمكن من  العلم.  والحضارة الإسلامية كانت  قديما تلد الواحد من هؤلاء تلو الآخر، وما   احوجنا الآن لعدد غزير منهم. وجه الغنى هنا هو &lt;span style="font-weight: bold;"&gt;الغنى بالمواهب&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;إسقاط الحواجز التي تحول بين العبورمن فئة العوام لفئة المتفقهين، وأن تكون ابواب العلم مفتوحة واسعة  كثيرة. وجه الغنى هنا هو &lt;span style="font-weight: bold;"&gt;الغنى بالدارسين&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;غنية   يعني تستخدم طرق البحث العلمي الحديثة وتستمد قوة لها من التطورات في كل   العلوم: علوم اللغويات وعلوم الاجتماع وعلوم الرياضيات وعلوم الحاسب وعلوم   الطب وغيرها. &lt;span style="font-weight: bold;"&gt;الغنى الفكري&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;ما معنى نشطة؟&lt;br /&gt;&lt;br /&gt;نشطة   تعني مراكز ابحاث للحكم الإسلامي والدعوة الإسلامية والاقتصاد الإسلامي.   باحثون وعاملون ومكافحون في كل لحظة وفي كل مكان في العالم لا يتوقفون ليل   نهار [وكثير من هذا موجود بالفعل].&lt;br /&gt;&lt;br /&gt;ما هي الخطوات الأولى لتحقيق هذه البيئة؟ لديّ اقتراحات مبدئية:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;تحديث طريقة كتابة كتب العلوم الإسلامية&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;فلنبدأ   بالأشياء البسيطة: يمكن مثلا تعميم طرق تهيئة النص الحديثة في الكتب:   كاستخدام الbullet points في السرد فيما لا يناسبه الفقرات الطويلة، أو   استخدام تنسيق معين للاقتباس من كتب اخرى بدلا من الطريقة التقليدية (طريقة   قال فلان.....إنتهى) أو استخدام الجداول والرسومات البيانية والاصطلاحات   الرياضية لتوضيح المقاصد (مثلا رأيت كاتبا إسلاميا استخدم Venn diagram في  أحد كتبه).&lt;br /&gt;&lt;br /&gt;ولا ادعو لاستخدام طرق التنسيق الحديثة الأوروبية فقط:   فالعلماء المسلمون كانوا رواداً في تنظيم وعرض المعلومات في الكتب وكثيرٌ  مما عملوا جدير بإحيائه في الكتب الحديثة، مثل نظام التعليق  على الحواشي  أو نظام العنوان الطويل الذي يصف كل فقرة أو الفهارس الموضوعية  التي كانت  في آخر الكتب (والتي كانت أحيانا تأخذ مجلدا كاملا أو أكثر في  الكتاب)،  ومن استكشف كتبنا القديمة وجد الكثير مما يدهشه.&lt;br /&gt;&lt;br /&gt;كما أننا  الآن في  عصر وسائل التعليم المبتكرةـ والعالم كله -ونحن فيهم- يبحث عن  طرق تطوير  طرق التعليم كلها، وأعتقد انه هناك آلاف الفرص الخفية لتطوير  تعليم  الإسلام عن طريق الكمبيوتر أو الأنترنت أو الmobile devices، وهكذا.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;الجمع بين علوم الدين والدنيا والتكامل بينهما&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;وطالما   تكلمنا عن رسومات الVenn diagrams فهناك نقطة أخرى: الاستفادة مما وصلنا   إليه في العلوم الحديثة لفهم الكتاب والسنة فهما أكثر. وإن كثيرا من علم   الأئمة السابقين يمكن وضعه في صيغ علمية حديثة، وأحيانا تكون العلاقة بين   القديم والحديث مدهشة. إليكم مثلا:&lt;br /&gt;&lt;br /&gt;كنت أستمع لبرنامج عن علم الحديث   وكان الشيخ يشرح مصطلح "الإعلاء" [تخيل شخص سمع حديثا عن فلان عن   فلان...سبع مرات حتى يصل الإسناد للرسول صلى الله عليه وسلم، لو  استمع هذا  الشخص للحديث من راو آخر سلسلة إسناده طولها اربعة، فقد صار  اسناده هو  أعلى لأنه قلل عدد الرواة بينه وبين الرسول. هذا هو الإعلاء.]  ولاحظت على  الفور شيئا: ان هذا مرتبط جدا بفرع من الرياضيات هو الgraph  theory.  لقد  اخترع علماء الحديث قطعة من الgraph theory وهم لا يعلمون، وأني أرى   استفادة عظيمة لو اخذنا مثل هذا العلم وقد صار علما رسميا وطبقناه على   روايات الأحاديث.&lt;br /&gt;&lt;br /&gt;نفس النظام بالنسبة للعلوم الأخرى: النظر إلى   تطورات علوم اللغويات الحديثة لتعميق فهمنا للغة العربية (مع الحرص على عدم   الاتباع الأعمى للعلوم الغربية والاعتراف بالخصائص الفريدة للّغة   العربية)، النظر للعلوم الطبيعية لتعميق فهمنا للإعجاز العلمي في القرآن   والسنّة، النظر للعلوم الاقتصادية والاجتماعية لتعزيز الدعوة للإسلام (مثلا   بإظهار الأضرار الاقتصادية الهائلة للربا، وسائر صور إظهار ما كان يخفى  من  منافع اتباع الشريعة وضرر تركها، وذلك ليرى غير المسلمين ان تلك  الشريعة  حقا مُنَزّلة من السماء وانها سبقت وتفوق الشرائع الوضعية  الحديثة، ويكون  ذلك احد عوامل دعوتهم للدين). ومن يتفكر يجد فرصا كثيرة  للاستفادة من سائر  العلوم الأخرى.&lt;br /&gt;&lt;br /&gt;وكل هذا الذي أقول ليس بجديد، بل  هو سنّة علماء  المسلمين منذ قرون: العلوم الدينية والدنيوية تتطور جنبا  إلى جنب ويكمل كل منهما الآخر.&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;طبقة وسطى قوية&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;هناك  مجتمعات ثقافتها المخاطرة والطموح (انظر مثلا فكرة "الحلم الأمريكي")  ومجتمعات أخرى قيمها البحث عن الآمِن والمعروف..مشكلة السعي المطلق للأمان  أنه يعوّد على عدم الاستقلالية وأن يتبع المرء دوما مؤسسة كبرى -حكومية أو  خاصة- تكون له راعيا، لكن لو كان هذا هو الاختيار الوحيد أمام الناس ستجد  أن معظم ثروات المجتمع تتمركز في يد القلّه التي قد قبلوا المخاطرة وأسسوا  الشركات، وتجد أن القليل هم المستقلون والباقي تابعون لا يستطيعون الابتعاد  كثيرا عن مصالح المؤسسات التي يتبعوها.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ماذا نفعل لنشجع الناس على الاستقلال بأعمالهم وتكوين شركاتهم؟&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1- &lt;span style="font-weight: bold;"&gt;تقديم&lt;/span&gt;&lt;b&gt; أمثلة إيجابية كثيرة:&lt;/b&gt;  فالناس مثلا يخافون من إقامة شركات متعمقة في البحث التكنولوجي، لكن لو  ظهرت شركتان أو ثلاثة تقوم بهذا العلم وكسبت الملايين فستجد الناس يركضون  حتى يصطدم بعضهم في بعض من العجالة ليصنعوا شركات اكثر طموحا. لابد من  الإعلان والتسويق لفكرة فتح الشركات نفسها وتعريف الناس في كل مكان أن  النجاح ليس بعيداً.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2- &lt;span style="font-weight: bold;"&gt;تخفيف &lt;/span&gt;&lt;b&gt;المخاطرة في إنشاء الشركات&lt;/b&gt;:  وذلك بتجميع وتوفير وبحث كل العلوم المطلوبة من تخطيط وتسويق وقانونيات  وبيع وتعيين، وعلينا أن نجعل هذه المعلومات متاحة قدر الإمكان (يفضّل أن  تكون مجانية) وأن تُحدّث باستمرار، وأتمنى أن يكون هناك مؤتمرات تضم مؤسسي  الشركات الناجحين يتحدثون عن خبراتهم ويمدون يدهم للمؤسسين الأقل خبرة. وأن  يأتي كُتّاب يعملون حوارات مع هؤلاء المؤسسين ويجمعون خبراتهم في كتب  (مثلا كتاب لكل عشر شركات). لا اتحدث عن أمور التنمية البشرية وسائر  النصائح العامةـ بل اتحدث عن التفاصيل والخبرات المتخصصة...كيف عين فلان  هؤلاء الموظفين العباقرة؟ هل هي الinterviews؟ أم بيئة العمل الجذابة؟ وما  نوع اسئلة الinterviews؟ وكيف تأكد أن المتقدمين لم يغشوا في الإجابة؟  ولماذا كانت جذابة تلك البيئة؟ أكان سبب جاذبيتها المرتبات الكافية ام  اعطاء الناس الحرية في إدارة انفسهم ام امتيازات غير مادية؟ وكيف وازن بين  اعطاء الناس الحرية وبين تأسيس بيئة عمل منظمة مُتحَكّم فيها؟ وكيف باع  منتجاته؟ وكيف حافظ على مستوى خدمة العملاء؟ وكيف يقوم بترقية الموظفين؟&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;معلومات لا تقدر بمال، ووجودها سيُسقِط ألف حاجز أمام إنشاء شركات جديدة.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3- &lt;b&gt;تمويل الشركات الجديدة&lt;/b&gt;،  خاصة التمويل من نوع seed funding الذي يقدم مبالغ أقل من أنواع التمويل  الأخرى مقابل التزامات أقل من أصحاب الشركة. دفع مبالغ قليلة للتمويل له  فوائده: أنه يعطي الفرصة لتمويل شركات اكثر، أنه يسمح لأفراد اكثر من  المجتمع أن يمولوا بدلا من اقتصار الفرصة على الحكومات أو الأغنياء، وأن  كَوْن المبلغ قليل هو نوع من التصفية يدفع الممول للبحث عن الأذكياء  المكافحين الذين ينجزون الكثير بأقل ما يمكن. المبرمج المتمكّن مثلا سيعرف  كيف يستخدم برامج الopen source وكيف يجمّع اجهزته بنفسه وكيف يستخدم  الأنترنت الاستخدام الأمثل للتسويق بدلا من الاستعانة بشركه دعاية غالية،  وهكذا. فإن وجدت هؤلاء فهم فعلاً يستحقون التشجيع والدعم.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;الخبر  الجيد أن مؤسسات الseed funding تنتشر الآن بكثرة في العالم العربي  والإسلامي، لكن مازال أمامنا الكثير لنعرفه في ذلك المجال. كيف يمكن تمييز  من يستحق التمويل ممن لا يستحق؟ كم سنة ترعى الشركة قبل أن تتركها؟ وكيف  ترعاها بالضبط، ما الذي يحتاجه أصحابها منك؟ وماذا تطلب منهم في المقابل؟  يبدو انه كما احتجنا "فقه تأسيس الشركات" في النقطة السابقة فإننا نحتاج  "فقه تمويل الشركات" هنا.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4- &lt;b&gt;البحث في طرق جديدة لمزاولة العمل&lt;/b&gt;.  هناك اشخاص لا يريدون إنشاء شركات وفي نفس الوقت يريدون بعض الاستقلال  الشخصي وعدم الارتباط بمؤسسات كبيرة. نحن في القرن ال21 فلماذا نصرّ على  ممارسة أعمالنا بالطرق القديمة؟ الا يمكن مثلا عمل شركة برمجة بها فريق  إداري وقانوني ومحاسبي ثابت لكن كل مبرمجيها من الfreelancers؟ هكذا يكون  المبرمج قد احتفظ بحريته لكن لم يحتج لتولي مسؤوليات لا يريد توليها، وفي  نفس الوقت فإن الشركة الأم قد فازت بالمرونة (يمكنها تعيين المبرمجين  وتركهم في أي وقت) وبمزايا اقتصادية (لن تدفع مرتبا لمبرمج إلا لو كان يعمل  في مشروع) وهكذا.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;أو ماذا عن مبنى مستشفى لكن كل  طبيب فيه له عيادته الخاصة، والمبنى يوفر خدمات مشتركة مثل غرفة عمليات  مجهزة وغرفة أشعة وفريق نظافة، لكن مازال كل طبيب له استقلاليته؟&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;علم مستشري&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1- &lt;b&gt;علّموا الأطفال البرمجة.&lt;/b&gt; كما قلت في &lt;a href="http://iamsamy.blogspot.com/2008/04/blog-post.html"&gt;مقال سابق&lt;/a&gt;:  البرمجة تعطي نتائج فورية، لأن الطفل سيتشجع حين يكتب برنامجا و يري  نتيجته امامه بينما لن يقدر، مثلا، أن يخترع طائرة فورا اذا تعلم كيف تعمل  الطائرات، إنتهى. تحدثت كثيراً في هذا المجال،عن أهمية فكرة&lt;a href="http://iamsamy.blogspot.com/2010/12/blog-post_31.html"&gt; لغة برمجة عربية&lt;/a&gt; لتعليم الأطفال، وأهمية وجود &lt;a href="http://iamsamy.blogspot.com/2010/04/blog-post.html"&gt;بيئة اجتماعية كاملة&lt;/a&gt; من الكتب والمواد التعليمية والخبراء الذين يفهمون في هذا المجال. الموضوع يشغلني كما ترون.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2- &lt;b&gt;العلم بصورة جذابة:&lt;/b&gt;  في طفولتي كانت هناك الكثير من الكتب التي تحكي عن الجسم البشري والبصريات  والآلات والفيزياء والكيمياء كلها بصورة جذابة جدا ورسومات متميزة -ليست  فقط رسومات شكلها جميل ولكنها أيضا تجعل الصعب واضحا- بعض هذه الكتب كان  مترجما عن كتب أجنبية وبعضها كان عربيا. لا أعلم كيف حال كتب الأطفال هذه  الأيام لكني اتمنى فعلا وجود صورا حديثة لهذه الكتب التي رأيتها،  والاستفادة من الوسائل الحديثة (كمبيوتر، انترنت...الخ) في هذا الهدف قدر  المستطاع.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3- &lt;b&gt;كتب مفتوحة للجميع:&lt;/b&gt; هذا  الجزء من الخطة يتطلب شيء من التمويل لكنه مازال ممكناً، (هناك مؤسسات  خيرية مثلا لديها أموال بالمقدار اللازم). الخطة هي جمع عدد من أفضل  الأساتذة والخبراء العلميين وتمويل تأليفهم لكتب في مختلف المجالات، الطب  والهندسة والحاسوبيات والرياضيات والفيزياء...الخ وتكون هذه الكتب تصلح  ككتب جامعية، بشرط أن يتخلى مؤلف الكتاب عن حقوق الملكية الفكرية ويكون  الكتاب متاحا للجميع، إما كمِلْكٍ عامٍ أو تحت رخصة مفتوحة تسمع بالتداول  التجاري وغير التجاري. هذا سيؤدي إلى توافر الكتب في كل مكان: من على  الإنترنت أو يصوّرها الناس من معارفهم أو تأتي مطابع محلية وتطبعها رخيصة،  كل هذا بصورة قانونية تماما. أعتقد ان مثل هذا المشروع حاجز أمني ضروري  أمام قوانين الملكية الفكرية الدولية التي قد تؤدي لصعوبة الحصول على  المراجع بسبب غلاء هذه الكتب وهيمنة دور النشر الأجنبية على إنتاجها.  وعموما ليست تكاليف الخطة بالخيالية لأن الكتاب فيها يُؤلّف وُيدفَع ثمنه  مرة واحدة ثم يُطبع ويُوَزّع بلا حدود.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4- &lt;b&gt;مجالس العلم:&lt;/b&gt;  ذات مرة مررت بجانب مسجد وسمعت محاضرة تُلقَى بالداخل فدخلت وجلست أستمع.  كانت تجربة جميلة، أن استمع لعلم بدون سبب اكاديميّ أو وظيفي. اتمنى أن  تعود فكرة مجالس العلم، سواء في المساجد أو بصورة مستقلة، كنوع من "العلم  العرضي" أي بصورة عارضة بلا خطة مسبقةـ يمر المرء فيرى علما فيجلس يستمع.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5- &lt;b&gt;العلم باللّغة العربية:&lt;/b&gt;  انظر لمصطلح في علم الأحياء مثل ungulates، أيهما أسهل في التعلّم:  "أُنجُليت" أم "الحافريّات"؟ أيهم أدل على سبب التسمية؟ ماذا عن  platyhelminthes...هي أم "الديدان المسطّحة"؟ أو لننظر في علم الرياضيات،  أنقول dodecahedron أم "ذو الإثنا عشرة سطحا"؟ إن المصطلحات العلمية  لاتينية الأصل تبدو غريبة ليس لمتحدثي العربية فحسب بل لمتحدثي الانجليزية  أنفسهم الذين تجدهم يبحثون عن معناها كما نبحث نحن! مقابل ذلك فإن اللغة  العربية وعاء يستوعب ما تريد من العلوم.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;أكثر من  ذلك: دراسة وإنتاج العلم بالعربية معناها امتداد عبر المكان (أي أن كل  الدول الناطقة بالعربية تستطيع تبادل المعرفة بسهولة على عكس العالم  الأمريكي مثلا الذي يجب أن يتعلم لغة جديدة ليقرأ الأبحاث الألمانية...أو  ينتظر الترجمة) وامتداد عبر الزمان (أي أن الأجيال القادمة سيكون متاح لها  كل العلوم التي أنتجناها كما كان متاح لنا علوم الذين سبقونا، بينما  الأوروبيون علومهم السابقة بلغات اخرى أثرية تحتاج متخصصين لفهمها، مثلا  كتب نيوتن صدرت باللاتينية). دراسة العلم بالعربية معناها بالطبع أيضا  إسقاط عائق كبير من عوائق التعلم أمام أفراد أمتنا.&lt;br /&gt;&lt;br /&gt;6- &lt;span style="font-weight: bold;"&gt;الاستكشافية&lt;/span&gt;: هل سمعت عن ال&lt;a href="http://www.exploratorium.edu/"&gt;exploratorium&lt;/a&gt;؟  إنها مثل متحف علميّ يذهب إليه الجميع، خاصة الأطفال، ليروا العلم  ويشاهدوا التجارب. كيمياء، تشريح، المغناطيسية، المجموعة الشمسية.  بالمناسبة نحن لدينا &lt;a href="http://www.smsec.com/"&gt;تجربة مفيدة&lt;/a&gt; في  هذا المجال لكن يمكننا أن نطور فيها أكثر. أتخيل استكشافيات مبهرة تحت سطح  البحر أو منطاد في الجو أو يسير فيه الزائر كأنه بداخل الجسم البشري (هناك  مثلاً &lt;a href="http://www.youtube.com/watch?v=tUsDfUSZfAw"&gt;متحف هكذا&lt;/a&gt; في هولندا).&lt;br /&gt;&lt;br /&gt;7- &lt;span style="font-weight: bold;"&gt;الالعاب&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;!&lt;/span&gt;  أعتقد أنه يمكن الإبداع كثيراً في استخدام الألعاب لتحبيب الأطفال في  العلم. لا تخف من التعمق؛ هل تعلم مثلاً أنه هناك لعبة جماعية لتعليم  البرمجة اسمها&lt;a href="http://www.c-jump.com/"&gt; C-Jump&lt;/a&gt;؟ أو ألعاب ذات خلفية تاريخية/اقتصادية مثل &lt;a href="http://www.amazon.com/TaliCor-4100140-Made-for-Trade/dp/B00000IZCW%3FSubscriptionId%3D19BAZMZQFZJ6G2QYGCG2%26tag%3DSquid797618-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00000IZCW"&gt;"Made for trade"&lt;/a&gt;؟ بل أنه هناك من يحاول عمل &lt;a href="http://www.kickstarter.com/projects/meetpoint/startup-fever-the-board-game-0"&gt;لعبة&lt;/a&gt; عن فتح الشركات حيث تحاول الحصور على تمويل وتعين فيها مبرمجين وخبراء تسويق. هيا نحبب الناس في العلم!&lt;br /&gt;&lt;br /&gt;8- &lt;span style="font-weight: bold;"&gt;وسائل للاختراع&lt;/span&gt;:  من بعد الأطفال، ماذا عن المراهقين والشباب؟ أفكر في نشر "روح المهندس" أو  "روح المخترع" فيهم؛ ماذا لو نشرنا بسعر رخيص وبطريقة آمنة وسائل  الاختراع؟ نبدأ &lt;a href="http://www.arduino.cc/"&gt;بالمكونات الإلكترونية&lt;/a&gt;  من boards وmicrocontrollers ثم بعدها أشياء مثل المضخات، محركات صغيرة،  خراطيم وتروس وسيور...ثم ندع الباقي لخيالهم. دعهم يحولون كرسي بعجلات إلى  سيارة، ثم يتحكمون بها بالكمبيوتر عن بعد، ثم يصنعون سرباً من السيارات  ويلعبوا به العاب real time strategy في الحقيقة الواقعة :)&lt;br /&gt;&lt;br /&gt;هناك  الآن في مجتمعنا حركة شبابية في اتجاه تعديل شكل السيارة car modding،  وهؤلاء شباب يمسكون بجهاز اللحام ويتعلون مهارات تقنية من نفسهم بدون دافع  خارجي (بالضبط كما نريد). ربما لو استثمرنا في مثل هذا النشاط وزودناه  لحصلنا على سيارة انتاج  محلي أنشأها الهواة - تماما مثل عصور المخترعين في  أمريكا: ألم يصنع الأخوان رايت طائرة بأنفسهما في ورشتهما الخاصة؟&lt;br /&gt;&lt;br /&gt;سيارة عربية open source :)&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;تذكر  أن هذه كلها هي أمثلة توضيحية لفكرة الضربات الجراحة في محاور خطتنا  الثلاثة. أتمنى أن تعم هذه الفكرة المجتمع ويبدأ الجميع في وضع ضرباتهم  الجراحية الخاصة لتصير الخطة موزعة كما تكلمنا في الجزء السابق. كما قلت:  هذه الخطة ليست لقيادة مركزية لكن للمجتمع كله.&lt;br /&gt;&lt;br /&gt;هناك أشياء أتمنى أن  أقوم بما أستطيع منها (أرحب أن يقوم بها 'المجتمع' أيضا، فلا يوجد ما  يجعلني أظن أن تجربتي بالذات هي 'الصحيحة' أو هي التي ستنجح). هذه الأشياء  كنت أفكر فيها منذ مدة وتحدثت عن كثير منها على هذه المدونة. بعضها لم  أتحدث عنه بعد...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(البقية في الجزء القادم)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7340547623970878691?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7340547623970878691/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7340547623970878691' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7340547623970878691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7340547623970878691'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/05/3.html' title='خطة للنهضة(3): أفكار للضربات الجراحية'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-4658904338691755311</id><published>2011-05-08T06:55:00.000-07:00</published><updated>2011-05-08T07:40:37.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='inventions'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>بين عبقرينو وروبرت كوخ</title><content type='html'>&lt;span dir="rtl" id=":76"&gt;‫عبقرينو  مخترع: يمكنه أن يصنع لك طبق طائر أو إنسان آلي يغسل الأطباق أو جهاز  للنوم لمن لا ينام. وهو لا &lt;/span&gt;&lt;span dir="rtl" id=":76"&gt;يبدو أصلاً  مثل العلماء: إنه &lt;/span&gt;يعمل في ورشة لا في معمل، ويرتدي بنطلون  وصديري لا بالطو ابيض، وهو يقضي أغلب وقته يعمل بيديه في اختراعات جديدة وليس يحضر مؤتمرات مثلاً.&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;div class="km" role="chatMessage"&gt;&lt;div class="kk"&gt;&lt;span dir="rtl" id=":76"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="km" role="chatMessage"&gt;&lt;div class="kk"&gt;&lt;span class="kn" dir="ltr"  style="color:ko;"&gt;&lt;/span&gt; &lt;span dir="rtl" id=":77"&gt;‫روبرت  كوخ هو مكتشف الجراثيم في القرن التاسع عشر. كان أغلب عمله هو الربط بين  جرثومة كذا ومرض كذا. يبدو العمل رتيباً: حضر العينات، اصنع مزرعة  للبكتريا، افحص العينات. كان هدف روبرت كوخ هنا هو تطوير المعرفة البشرية  وليس تقديم منتجا جديدا‬. همه أن يقول "لقد أثبتنا كذا. لقد فهمنا كذا. لقد اكتشفنا كذا".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id=":3h" dir="rtl" class="kl"&gt;‫هناك نوعين إذًا أميّز بينهما: الباحث الذي يهدف أساسا لفهم شيء عن الكون الذي نعيش فيه، والمخترع الذي يستفيد من العلم‬.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=":3k" dir="rtl" class="kl"&gt;‫ربما يحتاج عبقرينو أن يكتشف نظرية علمية جديدة ليتمكن من تنفيذ اختراعه، لكن ليست وظيفته اكتشاف النظريات العلمية‬.‫وربما يحتاج روبرت كوخ لتطوير جهاز جديد ليتمكن من مواصلة أبحاثه، لكن ليست وظيفته تطوير الأجهزة‬. كل منهما يعتبر دور الآخر مكمل لدوره.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=":6i" dir="ltr" class="kl"&gt;‫كنت فيما مضى أظن أنني أريد أن أكون روبرت كوخ. أرى نفسي في نقطة مستقبلية كعالم computer science أكتشف نظريات جديدة،&lt;br /&gt;&lt;/div&gt;&lt;div id=":7e" dir="rtl" class="kl"&gt;‫لكني في الواقع أريد أن أكون عبقرينو‬.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;أريد أن أستخرج &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.3893"&gt;الكنوز المدفونة&lt;/a&gt; في الأبحاث العلمية وأصنع بها &lt;a href="http://www.kalimat-lang.com/wiki/%D9%85%D9%84%D9%81:Kalimat-calc.png"&gt;أشياء مبهرة&lt;/a&gt;. أريد - في مرحلة ما من عمري-  أن أصمم أشياء لم يكن يُتخيّل أنها تصنع. أريد أن أرى تصميماتي وهي تعمل على أرض الواقع.&lt;br /&gt;&lt;br /&gt;هل معنى ذلك أنني لا أريد أن أكتشف أية نظرية علمية؟ ربما يحدث أن أكتشف شيئا أو أطوّر شيئا (لو بلغت ذلك المستوى...لو!). المسألة ليست عِناداً!&lt;br /&gt;&lt;br /&gt;هناك علماء يرون العالم لغزا ويريدون الاقتراب قليلا من الحل. هناك علماء يرون  المعرفة البشرية "كتالوج" ناقص يريدون أن يكملوا منه ما يستطيعون. أما أنا فأرى العالم ورشة، أريد أن أركب تلك القطعة على تلك لأرى ماذا يصنع بها.&lt;br /&gt;&lt;br /&gt;هل سأبلغ ذلك المستوى؟ هل سيتحقق ما أرغب؟ لا أعلم!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-4658904338691755311?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/4658904338691755311/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=4658904338691755311' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4658904338691755311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4658904338691755311'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/05/blog-post.html' title='بين عبقرينو وروبرت كوخ'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7422247327470160275</id><published>2011-05-07T16:11:00.000-07:00</published><updated>2011-05-07T16:51:54.594-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Two personal stories related to Lisp</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span dir="ltr" style="font-weight: bold;font-size:130%;" &gt;Story #1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="ltr" style="text-align: left;"&gt;&lt;br /&gt;Autumn of 2007. I was giving a series of Lisp sessions for some second year students.&lt;br /&gt;&lt;br /&gt;The students were surprisingly good, and it got me thinking: the problem facing almost any software company is how to have good developers. They (i.e the good companies) usually solve it in two parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Set up an attractive environment for developers&lt;/li&gt;&lt;li&gt;Set up good interviews to differentiate good developers from bad&lt;/li&gt;&lt;/ol&gt;Now for this question: What if, instead of &lt;span style="font-style: italic;"&gt;searching&lt;/span&gt; for good developers, we began &lt;span style="font-style: italic;"&gt;making&lt;/span&gt; them?&lt;br /&gt;&lt;br /&gt;What if someone formed a company with two sides: a production side and an academic side. The employees in this company would have double duties: To produce and sell great software, and to transfer their knowledge and experience to a newer generation of smart students.&lt;br /&gt;&lt;br /&gt;And they would be sincere in it: They would not give sessions that are actually hidden advertisement for their products. They would not force students to join the company or to take training therein; no: their primary academic goal would be to foster an environment of learning and raise as many great programmers as possible.  Even if not all of those programmers join us, the end result would be a better market and an academic scene where science and skills are everyone's goal. In the end, we'd still benefit one way or another.&lt;br /&gt;&lt;br /&gt;Since 2007 this has been the company I'm trying to form.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Story #2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I created a Lisp-like language in 2008, called Ayka. (You thought Kalimat was the only language I made?).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-rhPnRH__J9c/TcXWhv2_e1I/AAAAAAAAAMw/ze24ZT9sJbg/s1600/hello%2Bayka.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 338px;" src="http://1.bp.blogspot.com/-rhPnRH__J9c/TcXWhv2_e1I/AAAAAAAAAMw/ze24ZT9sJbg/s400/hello%2Bayka.PNG" alt="" id="BLOGGER_PHOTO_ID_5604121186603596626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was intended to be a part of a larger project called "Mira", but that project has stopped. The language was written in C# and Ayka programs could use the .net libraries. It had its own simple IDE and wrappers for the Winforms GUI library:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dMWN-Gkuftw/TcXWEZOAzuI/AAAAAAAAAMo/dYNaB-VaWFw/s1600/ayka_screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://1.bp.blogspot.com/-dMWN-Gkuftw/TcXWEZOAzuI/AAAAAAAAAMo/dYNaB-VaWFw/s400/ayka_screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5604120682309930722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It also had those features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for "defmacro" style Lisp macros&lt;/li&gt;&lt;li&gt;Support for full &lt;a href="http://en.wikipedia.org/wiki/Continuation"&gt;continuations&lt;/a&gt; via &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.3734"&gt;trampolines&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The ability to create dynamic web pages&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I was an amateur language implementer at the time (actually, I still am), so the project wasn't really mature: The language was slow, the libraries were buggy, things were falling apart, so I stopped working on Ayka and moved on to other projects. I learned a lot from it though, and it influenced my work on Kalimat --mainly by telling me what mistakes to avoid.&lt;br /&gt;&lt;br /&gt;Still, from time to time, I wonder if the project could be revived. I also wonder if those sessions should be given again...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7422247327470160275?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7422247327470160275/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7422247327470160275' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7422247327470160275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7422247327470160275'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/05/two-personal-stories-related-to-lisp.html' title='Two personal stories related to Lisp'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-rhPnRH__J9c/TcXWhv2_e1I/AAAAAAAAAMw/ze24ZT9sJbg/s72-c/hello%2Bayka.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-4759164869931557208</id><published>2011-04-27T16:59:00.000-07:00</published><updated>2011-05-21T20:08:17.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='children'/><title type='text'>قراقيش</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;ما تخافيش من القراقيش، يا حبيبتي ما تخافيش&lt;br /&gt;دي مجرد قراقيش، ما بتعملش ما بتسوّيش&lt;/span&gt;&lt;a href="http://1.bp.blogspot.com/-x7s9H2CdNlA/TbivBp90LFI/AAAAAAAAAMI/_GEiL1hVMDQ/s1600/krakeesh1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 382px;" src="http://1.bp.blogspot.com/-x7s9H2CdNlA/TbivBp90LFI/AAAAAAAAAMI/_GEiL1hVMDQ/s400/krakeesh1.jpg" alt="" id="BLOGGER_PHOTO_ID_5600418579615067218" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;بكرة حاروح السوق، واجيب لك فرخة ووردة&lt;br /&gt;وقالب جبنة قريش&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span dir="rtl"  style="font-size:180%;"&gt;وكمان كتاب Serway، والأوتوماتا وبدلة جيش&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-w52ChM0dOAY/TbivB3-61SI/AAAAAAAAAMQ/be_oIQf28Do/s1600/krakeesh2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 258px;" src="http://4.bp.blogspot.com/-w52ChM0dOAY/TbivB3-61SI/AAAAAAAAAMQ/be_oIQf28Do/s400/krakeesh2.jpg" alt="" id="BLOGGER_PHOTO_ID_5600418583377794338" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;بس انتي نامي دلوقتي، وسيبك بقى من القراقيش&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;ولو هجموا ماما حتدافع عنك، وحادمرهم بشويش&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/-LBJ2C8wAmWU/TbivCIEQWjI/AAAAAAAAAMY/LwedmKvFlFU/s1600/krakeesh3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 238px;" src="http://3.bp.blogspot.com/-LBJ2C8wAmWU/TbivCIEQWjI/AAAAAAAAAMY/LwedmKvFlFU/s400/krakeesh3.jpg" alt="" id="BLOGGER_PHOTO_ID_5600418587695143474" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;بكرة حتبقي كبيرة، وأميرة&lt;br /&gt;ودكتورة وأستاذة جامعة ومليونيرة&lt;br /&gt;وشجاعة ومابتخافيش، حتى من الخفافيش&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;a href="http://3.bp.blogspot.com/-XWwYtgJwy5Q/TbivCc8jy7I/AAAAAAAAAMg/2uTmiZFBEog/s1600/krakeesh4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 187px;" src="http://3.bp.blogspot.com/-XWwYtgJwy5Q/TbivCc8jy7I/AAAAAAAAAMg/2uTmiZFBEog/s400/krakeesh4.jpg" alt="" id="BLOGGER_PHOTO_ID_5600418593300007858" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-4759164869931557208?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/4759164869931557208/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=4759164869931557208' title='7 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4759164869931557208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/4759164869931557208'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/04/blog-post.html' title='قراقيش'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-x7s9H2CdNlA/TbivBp90LFI/AAAAAAAAAMI/_GEiL1hVMDQ/s72-c/krakeesh1.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7126227911278398553</id><published>2011-04-19T19:57:00.000-07:00</published><updated>2011-05-06T17:24:58.961-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>Somethig else in Kalimat</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-hEjgd0xhMC8/Ta5ME94O74I/AAAAAAAAAMA/QT2AB7UA8QA/s1600/gui.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 276px;" src="http://2.bp.blogspot.com/-hEjgd0xhMC8/Ta5ME94O74I/AAAAAAAAAMA/QT2AB7UA8QA/s400/gui.png" alt="" id="BLOGGER_PHOTO_ID_5597495035081715586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7126227911278398553?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7126227911278398553/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7126227911278398553' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7126227911278398553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7126227911278398553'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/04/somethig-else-in-kalimat.html' title='Somethig else in Kalimat'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hEjgd0xhMC8/Ta5ME94O74I/AAAAAAAAAMA/QT2AB7UA8QA/s72-c/gui.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7057643324746944363</id><published>2011-04-18T16:49:00.001-07:00</published><updated>2011-05-06T17:24:51.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kalimat'/><title type='text'>Concurrency in Kalimat!</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-oXBfwg_2tks/TazOR1yYk7I/AAAAAAAAAL4/rlvCF9uzUtk/s1600/concurrency.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://2.bp.blogspot.com/-oXBfwg_2tks/TazOR1yYk7I/AAAAAAAAAL4/rlvCF9uzUtk/s400/concurrency.png" alt="" id="BLOGGER_PHOTO_ID_5597075242806186930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;"&gt;Yesss!!!!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7057643324746944363?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7057643324746944363/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7057643324746944363' title='2 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7057643324746944363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7057643324746944363'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/04/concurrency-in-kalimat.html' title='Concurrency in Kalimat!'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-oXBfwg_2tks/TazOR1yYk7I/AAAAAAAAAL4/rlvCF9uzUtk/s72-c/concurrency.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8641271490070563870</id><published>2011-03-18T13:56:00.000-07:00</published><updated>2011-03-18T14:07:47.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computational-thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching-children-programming'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>البدء في مشروع مركز التفكير الحوسبي</title><content type='html'>&lt;div dir="rtl" style="text-align: right;"&gt;&lt;a href="http://iamsamy.blogspot.com/2010/11/blog-post.html"&gt;تكلمت قبل ذلك&lt;/a&gt;  عن فكرة مركز لتعليم الأطفال البرمجة. أعتقد ان معظم قراء المدونة يعلمون هذه  الفكرة، لكني الآن اسعى لاتخاذ خطوات حقيقية فيها. هذه الرسالة جزءين: عرض  لهدفي من إنشاء المركز يليه فتح باب التعاون مع من يريد عرض المعاونة.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="font-weight: bold;"&gt;أولاً: عرض الهدف&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;الفكرة باختصار هي أنه هناك في مصر مركزين لتعليم الأطفال البرمجة (انظر &lt;a href="http://p4y.lvadonline.com/"&gt;هنا&lt;/a&gt; و &lt;a href="http://www.techplanet-egypt.com/"&gt;هنا&lt;/a&gt;). أنا أريد فتح مركز ثالث.&lt;br /&gt;&lt;br /&gt;لماذا؟ أولاً زيادةً في الخير والتنمية. ثانياً أريد تجربة شيء جديد هو تطوير وسائل تعليم البرمجة ذاتها. ما معنى ذلك؟&lt;br /&gt;&lt;br /&gt;معناه أنني أريد سلوك منهج البحث العلمي الذي يعتمد على الافتراضية ثم التجربة والملاحظة. على سبيل المثال:&lt;br /&gt;&lt;br /&gt;1- هناك اقتراح ان طريقة كذا افضل لتعليم طفل البرمجة&lt;br /&gt;2- يتم تغيير المنهج قليلا ليستخدم الطريقة الجديدة&lt;br /&gt;3- يتم تقسيم الطلبة إلى مجموعتين: مجموعة تجريبية تستخدم المنهج الجديد ومجموعة control group تستخدم المنهج التقليدي.&lt;br /&gt;4- يتم تقييم المجموعتين وتسجيل الملاحظات، مع تحليل النتائج تحليلاً علميّا.&lt;br /&gt;5- إما أن تكون الملاحظات كافية لعمل استنتاجات أو يتم تكرار التجربة&lt;br /&gt;6- نشر التجارب في صورة أبحاث كلما أمكن ليكررها سائر العلماء في مؤسسات أخرى ويراجعوها.&lt;br /&gt;&lt;br /&gt;هذا يتيح لنا الإجابة بطريقة علمية على أسئلة كثيرة مثل "هل التعليم باللغة  العربية أفضل في الوقت الحالي أم بالانجليزية"، "هل التعليم في صورة  مناقشات أفضل أم بالشرح التقليدي"، "هل التعليم بلغة رسومية افضل أم  بالكود"....وهكذا. أعتقد أن هذا يستحق بالفعل إنشاء مركز جديد غير تلك  الموجودة.&lt;br /&gt;&lt;br /&gt;هناك خطط أكبر بعد ذلك بإذن الله. لو ظهرت لنا نتائج علمية حقيقية يمكن بعد  ذلك التواصل مع المدارس ووزارات التعليم في العالم العربي ومحاولة عمل  دفعة قوية لفكرة تقديم البرمجة في مناهج التعليم الأساسي.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt; ثانياً: فتح باب التعاون&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;أ) الخطة الحالية هي التدريس بلغة &lt;a href="http://www.kalimat-lang.com/"&gt;كلمات&lt;/a&gt; للأعمار الصغيرة (8-12)، ودراسة فكرة تقديم لغة أخرى "كبيرة" للأعمار فوق ذلك.&lt;br /&gt;&lt;br /&gt;ب) الموضوع يحتاج مجموعات العمل الآتية:&lt;br /&gt;  - مجموعة لوضع &lt;b&gt;منهج دراسي&lt;/b&gt; عبارة عن كتاب + خطة دراسية [بمعنى كل درس له محتواه + تمارينه + ....]&lt;br /&gt;  - مجموعة &lt;b&gt;لشرح الكورسات&lt;/b&gt; نفسها&lt;br /&gt;  - مجموعة &lt;b&gt;لاختبار لغة كلمات &lt;/b&gt;لتكون جاهزة لمواجهة المجتمع :)&lt;br /&gt;  - على المدى الطويل هناك &lt;b&gt;مجموعة بحثية&lt;/b&gt; دورها تطوير المناهج، تطوير الأدوات التعليمية (برامج وخلافه)، البحث العلمي في سبل التعليم.&lt;br /&gt;&lt;br /&gt;ج) يفضل الانتهاء من تجهيز المنهج &lt;b&gt;قبل عطلة الصيف&lt;/b&gt; للمدارس، ليمكن وضع الإعلانات وخلافه في الوقت المناسب لتقديم الكورسات في الإجازة.&lt;br /&gt;&lt;br /&gt;د) &lt;b&gt;هل الموضوع تطوعي أم بمرتبات؟&lt;/b&gt; قل لي رغبتك وسأحاول تحقيقها بقدر الإمكان :)&lt;br /&gt;&lt;br /&gt;هـ) &lt;b&gt;ماذا عن المقر؟&lt;/b&gt; مازال التخطيط يجري للاستحواذ على مقر للمركز.  إما أن أؤجر مكانا رسميا وإما أن احاول أن اصنع مثلما حدث في حاسبات  القاهرة حين صنعوا اتفاقاً مع الكلية نفسها.&lt;br /&gt;&lt;br /&gt;و) &lt;b&gt;من سيشرف على تحضير المناهج؟&lt;/b&gt; غالبا أنا أو معيدين أحاول الإتيان بهم.&lt;br /&gt;&lt;br /&gt;ز) &lt;b&gt;هل المركز خيري أو يهدف الربحية؟&lt;/b&gt; أتمنى أن يستطيع المركز الإنفاق  على نفسه على المدى الطويل، لذلك أنوي أن يكون التعليم بأجر عاجلا أو  آجلا. ربما يمكن في البداية جعله خيريا لفترة إن دعى الأمر لذلك.&lt;br /&gt;&lt;br /&gt;ح) &lt;b&gt;من أين ستأتي بالتمويل؟&lt;/b&gt; مازال البحث مستمراً، لكن في وجود المنهج  والعامل البشري أعتقد أن التمويل مشكلة مقدور عليها، لأن المتطلبات  المتبقية ستكون فقط المقر + الأجهزة + مرتبات إن احتيج لها؛ وهذه ليست  مبالغ خيالية.&lt;br /&gt;&lt;br /&gt;ط) &lt;b&gt;كيف يمكن التقدم بالمساعدة؟&lt;/b&gt; حاليا احاول فتح حوار غير رسمي مع من يريد التقدم. يمكن مراسلتي بالبريد الالكتروني على &lt;a href="mailto:samy2004@gmail.com"&gt;samy2004@gmail.com&lt;/a&gt;  . لو رأيت العدد كبيراً ربما يمكن عمل اجتماع مع المساهمين كلهم. بعد ذلك  يمكن الحديث عن الأدوار الرسمية. لو أردت المحادثة أرجو إخباري بالمساهمة  المفضلة لديك [تحضير مناهج، اختبار اللغة، تقديم الكورس في الصيف، دور  بحثي].&lt;br /&gt;&lt;br /&gt;ي) &lt;b&gt;هل سيتطلب الأمر بذل وقت طويل من المساهمين؟&lt;/b&gt; كل شخص يقدر أن يقدم  ما يستطيع. إن كتبت لعبة snake بلغة كلمات بغرض اختبارها ستكون ساهمت  مساهمة قيمة. لو دخلت في مجموعة تأليف منهج ستكون ساهمت مساهمة قيمة كذلك.  لا تحتاج لأن تكون ملتزما التزاماً 'وظيفياً' لتساهم بشيء :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-8641271490070563870?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/8641271490070563870/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=8641271490070563870' title='3 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8641271490070563870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/8641271490070563870'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/03/blog-post.html' title='البدء في مشروع مركز التفكير الحوسبي'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-2826297809141913075</id><published>2011-02-26T15:37:00.000-08:00</published><updated>2011-02-27T15:13:20.555-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jan25'/><category scheme='http://www.blogger.com/atom/ns#' term='egypt'/><title type='text'>هل انتهى الداعي للثورة؟ أسئلة وأجوبة</title><content type='html'>&lt;div dir="rtl"&gt;&lt;b&gt;1- الثورة خلصت يا جدعان وانتصرتوا. بطلوا بارانويا بقى&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;هل تتوقع القضاء على فساد ثلاثين عاماً في ثمانية عشرة يوماً؟ استمرار الضغط الشعبي الآن الآن هو جزء طبيعي من عملية التصحيح ومقاومة الفساد. قد رحل رأس للفساد وبقى رؤوس عديدة. أم أنك تتوقع أن الضغط الشعبي كان ضروريا لرحيل مبارك، لكن باقي رموز الفساد الذين يحكمون سوف يقومون بتقويم أنفسهم؟&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2- كلها ست شهور وتجيلكم الحكومة النموذجية اللي انتوا عاوزينها&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;منذ اسبوعين كنا نسمع أن كلها شهور ستة ويقوم مبارك نفسه بنقل السلطة وتغيير الدستور وإقامة انتخابات نزيهة. هل تذكرون أوجه الاعتراض على ذلك وقتها؟&lt;br /&gt;&lt;ul&gt;&lt;li&gt;النظام القديم لم يقدم أية ضمانات لصدق ما يقول&lt;/li&gt;&lt;li&gt;لا يمكن الثقة بدون ضمانات في أفراد لهم تاريخ طويل من عدم المصداقية، ولديهم كثير ليخسروه لو التزموا بوعودهم&lt;/li&gt;&lt;li&gt;النظام القديم مازال يملك خيوط القوة في يديه. ما الذي يجعلنا نظر أنه  سيستخدم تلك القوة في تحقيق مطالب الشعب بدلاً من تثبيت سلطته؟&lt;/li&gt;&lt;li&gt;الرئيس كان يعد بوعوده في نفس الوقت الذي كان التلفزيون فيه يقوم بحملات دعاية للحكومة وأهدافها والبلطجية يضربون في الميدان&lt;/li&gt;&lt;/ul&gt;الآن، كلامنا هو نفس الكلام بالضبط، لكن بدون مبارك!&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;3- بس شفيق مش كدة! ده كان ايام مبارك بس مجبر على اللي بيعمله بس دلوقتي هو الوزير المثالي&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;من جديد: ما الدليل؟ ما الضمانات؟ من فضلك --لا تعد لموضوع المطار هذا.&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;4- بس الحال واقف والاقتصاد حيضيع&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;الحال سيقف أكثر لو عاد الحزب الوطني. لو ظلت قوى الفساد. لو ظل النظام القديم يحكم. هل نسيتم أم ماذا؟&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;5- نظام قديم ايه بس! مش احمد عز دخل السجن هو وحبيب العادلي؟&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;لابد من تقديم النظام لبعض الصور التلفزيونية حتى يقنع الناس أن الأمر تغير. إن كنت تريد إقناعنا أن المفسدين يحاسبون اخبرني ما خطب القوى السياسية الحقيقة: زكريا عزمي، عمر سليمان، صفوت الشريف، جمال مبارك، --احم-- الحزب الوطني بالكامل تقريبا...الخ ...الخ&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;6- طب مين اللي حيحكم غير شفيق؟&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;نعم، لأن البلد خاوية تماما من الشرفاء ذوي الكفاءة. ثم لو كان لديك طباخ يضع السم في الطعام، هل تتركه يفعل ذلك بسبب صعوبة العثور على آخر؟&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;7- ده تسيير أعمال! تسيييير أعمااااااااال!&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;أليس تسيير الأعمال معناه أن الداخلية، الخارجية، الأمن، الاقتصاد، الإعلام....الخ...الخ مازالوا في يديه؟ نحن نمر في أحرج مرحلة في حياة بلدنا، وأعتقد أن تسيير الأعمال حاليا سيكون له عواقب كبيرة جدا. أليس من حقنا أن نطلب شخصاً ذو مصداقية لذلك؟&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;8- حنبقى زي تونس! حنبقى زي ليبيا! حنبقى زي إيران!&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;إلى متى سيكون الخوف سببا لإيقاف إصلاح حال البلاد؟ اعطني أدلة على ما تقول. ملاحظة: الشائعات غير الأدلة.&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;b&gt;9- طيب ضمانات إيه اللي انتوا عاوزينها؟&lt;/b&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;أشياء كثيرة، منها:&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;ul&gt;&lt;li&gt;محاكمة عناصر الفساد الكبرى (لا اتكلم عن احمد عز، راجع السؤال رقم 5).&lt;/li&gt;&lt;li&gt;إنهاء حالة الطواريء&lt;/li&gt;&lt;li&gt;ان تتعامل وسائل الإعلام بمصداقية ولا تكون مجرد ابواق للحكومة&lt;/li&gt;&lt;li&gt;الشفافية في التعامل وتقديم جداول أعمال محددة وضمانات، وعدم الاكتفاء بكلمة "ثقوا بنا" (أو بمعنى اصح عدم الاكتفاء بكلمة "عاوزين ايه يعني؟؟ ترجعوا المظاهرات؟ طب ارجعوا!!" التي قالها شفيق في مؤتمر صحفي)&lt;/li&gt;&lt;li&gt;لا يمكن أن تتم انتخابات في ستة أشهر إلا انتخابات "مكروتة"، وفي نفس الوقت ابقاء المجلس العسكري مدة أطول ربما يقوي نفوذهم مع الوقت ويعرضنا لاستمرار الحكم العسكري. فكرة لجنة رئاسية مؤقتة مكونة من أشخاص مرموقين مشهود لهم حل يضع نفسه بقوة.&lt;/li&gt;&lt;li&gt;اطلاق سراح المعتقلين السياسيين، الذين قبض عليهم بعد الثورة أو قبلها. هؤلاء بشر حقيقيون فقدوا حريتهم أو يعذبون وليسوا شعارا سياسيا نتجادل حوله.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-2826297809141913075?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/2826297809141913075/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=2826297809141913075' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2826297809141913075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/2826297809141913075'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/02/blog-post_26.html' title='هل انتهى الداعي للثورة؟ أسئلة وأجوبة'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-7508387495968092867</id><published>2011-02-25T16:23:00.000-08:00</published><updated>2011-02-27T18:11:49.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jan25'/><category scheme='http://www.blogger.com/atom/ns#' term='egypt'/><title type='text'>هل المتظاهرون حقاً شباب أهوج عديم الصبر؟</title><content type='html'>غريبةٌ هي علاقة الناس بالمتظاهرين، لا يدرون أيحبونهم أم يكرهونهم. كل يوم بحال.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;أنا الآن أتابع قناة "الجزيرة مباشر" على الإنترنت، وهناك رجل يسكن في التحرير يتكلم عن ضرب الشرطة العسكرية للمعتصمين في الميدان الآن (2:25 فجراً). منهم فتيات يُضرَبن. هذه هي الحكومة العظيمة التي نعرفها. طبعاً تخطيطهم واضح: الثانية ليلا، المتظاهرون قليلون، الناس نائمون. مازال اللصوص يتصرفون كلصوص. (تعقيب: &lt;a href="http://www.youtube.com/watch?v=ixOP2F_hcRU"&gt;فيديو يصف ما حدث&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ليست هذه هي أول علامة: ألم تلاحظ التلفزيون المصري كيف يحاول أن يجعل الشعب يتعاطف مع الشرطة؟ هل رأيت مدير أمن دمنهور كيف يهدد الشعب ويقول ان "&lt;a href="http://www.youtube.com/watch?v=yxziuBBUA84"&gt;اللي يمد إيده على سيده تتقطع إيده&lt;/a&gt;"؟ (ملاحظة: لفظ بذيء جدا في الفيديو السابق).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;اعلم أنه هناك كلام وراء الكلام، وحينما تحدث هذه الأشياء فهي علامات لأشياء أكبر: لديّ فكرة أكوّنها حالياً عن خطتهم:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;في ثورة 25 يناير والايام التي تلتها لم يكن الأمن المركزي مستعداً لما حدث وأُخذ على غرة، وهذا أدى لحدوث مكاسب كثيرة للثورة. أعتقد أن الحكومة تنوي الآن عدم إعادة هذا الخطأ. خطتهم في نظري تبدو أنهم:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;يؤلبون الرأي العام ضد المتظاهرين وانهم يكرهون كل شيء وأن أحمد شفيق رجل نزيه...الخ...الخ&lt;/li&gt;&lt;li&gt;يستدرون تعاطف الشعب تجاه الشرطة استعدادا لإعادة نزولهم للشارع.&lt;/li&gt;&lt;li&gt;استخدام كل الطرق الممكنة، أمن مركزي أو غيره، لإعادة سيطرة النظام القديم على البلاد، بينما عامة الناس يحسبون أننا "خلاص انتصرنا".&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;قد مللنا الذين يبحثون عن أي شخص يثقون فيه. أحمد شفيق نزيه! الجيش حبيبنا! اصبروا يا جدعان على الحكومة حتى لو كلها النظام القديم! بعد ست شهور حتبقى تيجي حكومة جديدة حلوة! قشطة!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;الثقة شيء يُكتَسب لا شيء يمنح. لو أردنا الثقة في أحد فلابد أن يثبت مصداقيته بأفعاله. ثم لا، الإشراف على مطار مدني ليس دليلا كافيا على النزاهة ولا الكفاءة لإدارة دولة ولا تسيير أعمالها. احمد نظيف أدار وزارة الاتصالات بكفاءة، أنظر ماذا حدث بعد ذلك.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ألم يكن شفيق هو الذي يريد وقف المظاهرات منذ توليه رئاسة الوزراء بينما مبارك مازال يحكم؟ ألم يكن هو الذي رفض رحيل مبارك وقال "لقد قمتم بعمل تقويم المسار وحققتم أهدافكم، ولن نفعل لكم أكثر من ذلك"؟ هل هذا هو المسار القويم الذي يتحدث عنه؟ التلفزيون الذي مازال يكذب؟ الشرطة التي مازالت تهدد؟ المتظاهرين وهم مازالوا يُضرَبون؟ أحمد زكي بدر يتحدثون عن &lt;a href="http://dostor.org/politics/egypt/11/february/25/36982"&gt;تعيينه محافظاً للقاهرة&lt;/a&gt;؟ هل هذه نكتة؟&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;لم تنته الثورة بعد.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210170703988679829-7508387495968092867?l=iamsamy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamsamy.blogspot.com/feeds/7508387495968092867/comments/default' title='تعليقات الرسالة'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1210170703988679829&amp;postID=7508387495968092867' title='0 تعليقات'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7508387495968092867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210170703988679829/posts/default/7508387495968092867'/><link rel='alternate' type='text/html' href='http://iamsamy.blogspot.com/2011/02/blog-post_25.html' title='هل المتظاهرون حقاً شباب أهوج عديم الصبر؟'/><author><name>Mohamed Samy</name><uri>http://www.blogger.com/profile/11184190430016762265</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210170703988679829.post-8649991000301328146</id><published>2011-02-25T06:03:00.000-08:00</published><updated>2011-12-09T09:51:13.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social'/><category scheme='http://www.blogger.com/atom/ns#' term='arabic-posts'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda-plan'/><category scheme='http://www.blogger.com/atom/ns#' term='nahda'/><title type='text'>خطة للنهضة(2): إصلاح موزع، بيئة مفتوحة، ضربات جراحية</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;[المحتويات: &lt;a href="http://iamsamy.blogspot.com/2011/02/1.html"&gt;الجزء الأول&lt;/a&gt;، الجزء الثاني (هذا المقال)، &lt;a href="http://iamsamy.blogspot.com/2011/05/3.html"&gt;الجزء الثالث&lt;/a&gt;، &lt;a href="http://iamsamy.blogspot.com/2011/12/4.html"&gt;الجزء الرابع&lt;/a&gt;]&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;span style="font-weight: bold;"&gt;إصلاح اجتماعي موزّع&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;الخطة التي اقترحها ليست "خطة" بالمعنى التقليدي. ليس فيها توزيع لأدوار ولا مراحل أو deadlines أو كل هذا، بل إنه حتى الخطة نفسها لن تكون مكتملة تماما: ستكون بها أجزاء موجودة وأخرى سأترك الناس ليكملوها هم. والأجزاء التي سأقدمها ستكون لها مكونات أنضج من الأخرى.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لن يكون هناك قيادة مركزية تتولى تنسيق كل الأدوار في الخطة، بل سيكون الموضوع في صورة معلومات وأفكار متاحة للجميع، ويساهم فيها الجميع، والكل ينفذها بطريقته سواء وحده أو في فريق يكونه أو ينضم له (يمكن لذلك الفريق أن يصغر أو يكبر لأي حجم). لو أرادت مؤسسة أو جهة حكومية أن تشارك في الخطة فمرحباً بها، لكن يجب عدم الاعتماد على تلك المؤسسة بالذات ولا تحويل الخطة لخطة حكومية لأن هذا سيكون له ثمن سندفعه من صلابة الخطة ومتانتها كما وصفت في المقال السابق.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;لماذا هذه الطريقة الجديدة؟ الم يكن الأفضل عمل خطة تقليدية فيها توزيع للأدوار والمراحل وتثبيت للإدارة؟ أليس الأفضل تقديم خطة مكتملة من البداية؟ ما الهدف من كون الخطة "متوزعة" بدلا من "ممركزة"؟&lt;br /&gt;&lt;br /&gt;لديّ أربعة أسباب قوية لما أفكر فيه. الخطة الموزعة (1) أسهل انتشارا وأكثر كفاءة. (2) تبقينا صادقين. (3) تشجع بيئة من التجريب والحرية. (4) أليَن مع الأخطاء.&lt;br /&gt;&lt;br /&gt;1- &lt;span style="font-weight: bold;"&gt;أسهل انتشارا وأكثر كفاءة&lt;/span&gt;: أنا لا أريد أن انتظر حتى يجتمع فريق من الناس ثم يختارون قيادة  ثم يضعوا جدول أعمال ثم...ثم... هذا معناه تقريباً أن الخطة ستتوقف قبل أن تبدأ. أنا أريد أن أبدأ &lt;b&gt;الآن&lt;/b&gt;.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;أيضاً إن ألزمنا أنفسنا بخطة مركزية فذلك سيساهم في جعل نشر تلك الخطة أصعب لأن كل شخص يود المساعدة سيجب البحث له عن دور في "الفريق الرسمي"، ولو كان موجوداً بالفعل من يقوم بهذا الدور فسنجد أنفسنا نرفض الوافد الجديد لأن دوره متكرر. ولو حدث خلاف بين "القيادات" فسيتعطل التقدّم.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;لكن في حالة الخطة الموزعة من أراد أن يساهم فما عليه سوى أن يأخذ فكرة وينفذها بدون الحاجة لإذنٍ ولا تفاوض، ولو اختلف اثنان على طريقة التنفيذ فالحل بسيط جدا: فلنجعل الأمرَ علميّاً وليس بالآراء، وكل منهما له حرية تطبيق طريقته الخاصة كما يشاء، فالطريقة الناجحة يثبت نجاحها تجريبياً والطريقة غير الناجحة نستفيد من دروسها.&lt;br /&gt;&lt;br /&gt;ثم أن الخطة الموزعة تعني انه لا حد أقصى لفريق العمل، وتحل مشكلة تكرار المواهب (أي لو وجدنا شخصين يقدران على نفس الدور فيمكن لكل منهما أن يعمل في فريق مستقل ولا داع لاختيار أحد منهما في الفريق "الرسميّ").&lt;br /&gt;&lt;br /&gt;وأخيرا، فإن بعض أجزاء الخطة يحتاج أبحاثاً لشهورٍ أو سنينٍ قبل أن يكتمل. والسماح بأن تكون الخطة غير كاملة يعني أنه يمكن البدء في الأجزاء الموجودة بغير تأجيل، ويعني إعطاء الفرصة للآخرين أن يكملوا الناقص هم، ربما بأفضل من صاحب الخطة الأصلي.&lt;br /&gt;&lt;br /&gt;2- &lt;span style="font-weight: bold;"&gt;تبقينا صادقين&lt;/span&gt;: في المؤسسات التقليدية كل مدير له سلطة رسمية وسلطة فعالة. أما السلطة الرسمية فتتبع من مركزه ودوره الإداري. وأما السلطة الفعالة فتتبع من كونه على حق وقدرته على إظهار ذلك الحق للناس وقدرته على التنسيق بين أهدافهم وأهدافه. السلطة الفعالة غالبا ما تكون أقوى، وغالبا ما تكون هي السلطة الحقيقية.&lt;br /&gt;&lt;br /&gt;تحويل الخطة لخطة موزعة معناه التنازل عن كثير من السلطة الرسمية. من الآن ستكون انت وأفكارك أمام الناس: لا يوجد مركز تختبيء وراءه ولا سبب رسمي يجعل احد يتبعك. لا تعود عبارة "نفذ كلامي لأني القائد"  كافية.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;هنا تكون الطريقة الوحيدة أمامك للتأثير على الناس هي أفكارك وكلمتك. عليك إذاً أن تسعى لأن تظل على حق طوال الوقت، وتظل طوال الوقت مقنعا. وهذا هو المطلوب.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;3- &lt;span style="font-weight: bold;"&gt;بيئة للتجربة الحرة&lt;/span&gt;: التقدّم في أي مجتمع أو مؤسسة يعتمد على توازن بين حسن الإدارة (منعا للفوضى) وبين حرية التجربة والمخاطرة (منعا للجمود). ونحن الآن في عصر جديد والمجتمع يتغير من حولنا والتجربة الآن لها أهمية قصوى بأن القواعد التقليدية لم تعد تكفي. الخطة الموزعة تعني أن كل شخص متأثر بالخطة يمكنه أن ينفذها بأسلوبه الخاص ونمطه. ولعلها مع الوقت تتحور وتتشكل حتى تأتي في صورة لم يتوقعها حتى أصحاب الأفكار الأصلية!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;أتمنى أن اجد سبعة فِرَق ينفّذون نفس الفكرة بسبعة طرق مختلفة. أتمنى أن يحدث "تفريخ" للأفكار بحيث تلد كل فكرة أفكاراً أخرى. أتمنى أن يجرّب كل شخص ما يريد بشجاعة وبدون انتظار إذنٍ من "المدير".&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;b&gt;4- أليَن مع الأخطاء: &lt;/b&gt;ماذا لو كانت الخطة مخطئة؟ ماذا لو كانت صحيحة ونُفّذت بالطريقة الخطأ أو حتى نُفّذت جيداً لكن لم يكن الحظ مواتياً؟ لو تحقق ما أرجو فلن تكون تلك مشكلة كبيرة لأنه سيكون هناك -إن شاء الله- عشرات الفرق ومئات أو آلاف الأفراد كلٌ يجرب بطريقته الخاصة ومجاله الخاص، وهكذا تجد الخطة تدخل في اتجاهات جديدة وتمر من حول الأخطاء كتيار الماء يمر من حول الصخرة.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;(وحين نقرأ عن مزايا الdistributed computing، ألا نجد من أهمها الfault tolerance؟)&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;ولو فشل فريق من الفرق فلديهم وقت إن أرادوا يستعيدون فيه أنفاسهم، ويتعلّمون من أخطائهم، ويعاودون المحاولة بدون أن يؤثر ذلك على باقي الخطة.&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;بيئة مفتوحة&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;لما سبق أتمنى أن يكون نشاط النهضة في مجتمعنا في بيئة فكرية حية. فكر في الموضوع مثل مشاريع الOpen source: الخطط معلنة ومفتوحة. من حق أي شخص أن يستفيد منها أو أن يعدل عليها أو يفرّع منها مشاريعا جديدة، والتعديلات الأفضل تعود لصاحب المشروع الأصلي ليضمها إلى جذورها الأولى. الكل يتبادل الخبرات والمعارف، والخطط الأفضل هي التي تزدهر.&lt;br /&gt;&lt;br /&gt;إن مشاريع الopen source تعلمنا أن حرية التجربة -على المدى الطويل- كثيرا ما تفوق التصميم المركزي، وإن مشروعا مثل Linux صار يتقدم ويزداد ابتكارا لأن كل مبرمج مبدع يمكنه أن "يلعب" فيه بغير إذنٍ ولا تكلفة. ولم يؤد هذا لتطور Linux فحسب بل صار له أيضا "أولاد" مثل Android. فلنجرب التخطيط بمثل هذه الطريقة إذاً.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir="rtl" style="text-align: right;"&gt;وأخيراً: نحن قد جربنا ثورة شعبية بلا قائد. فلماذا لا تكون النهضة -هي أيضا- نهضة مجتمع لا نهض
