*

*

ما هي لغة R؟

كانت بداية R أكثر من عادية عندما حاول “Ross Ihaka” (من جامعة أوكلاند بنيوزيلاندا) إعادة كتابة بعض الدوال الإحصائية بلغة S بواسطة اسكيم “Scheme ” . ولغة S هذه هي أولى اللغات المختصة بالحوسبة الإحصائية التي وقع تطويرها في مختبرات “AT&T” في سبعينات القرن الماضي كبديل لفورتران. و في البداية كانت مختبرات “AT&T” تقوم بتوزيع مصدر لغة S (كما كانت تفعل مع النسخ الأولى لنظام يونكس)، قبل أن تغير رخصته إلى تجاري ومغلق سنة 1984. وعندما عرض “Ross Ihaka” على زميله “Robert Gentleman” نتائج محاولاته، قرر الاثنان إعادة كتابة “Implementation” مصدر S بالكامل بواسطة فرتران وسي. ونشرت أول نسخة حاملة الحرف الأول من اسميهما (R) تحت بنود رخصة غنو الحرّة سنة1997. وبوتيرة تطوير متسارعة صار المشروع ناضجا منذ سنة 2000، وهو الآن من الشهرة في الأوساط الأكاديمية، بحيث أنه تجاوز بمراحل إمكانيات لغة S ولغات أخرى مختصة بهذا المجال.

*

“GNU R” أو المعروفة اختصارًا ب R هي لغة وبيئة تطوير (Language and development environment) متخصصة في تحليل وتمثيل البيانات والحوسبة الإحصائية. وتتكون R من حزمة رئيسية “core” يمكن توسيعها بواسطة حزم أخرى موجودة بمستودعات المشروع الرئيسي “CRAN”. يبلغ عدد هذه الحزم لحد الآن 2456. وهي تقدم مكتبات للطرق الإحصائية الأساسية والمقدمة كالإحصاء الوصفي، والاختبارات الإحصائية، وتخطيط التجارب، وتحليل الارتباطات الخطية، واللاخطية، وتحليل المتتاليات الزمنية، والتحليل متعدد المتغيرات، وتحليل الإشارات، … وبقية القائمة المفصّلة ستجدها هنا.
*
في السنوات العشر الأخيرة، تجاوزت R الدوائر الأكاديمية إلى قطاعات تكنولوجية متعددة حيث تقوم باستعمالها شركات كبرى بما في ذلك غوغل ومايكروسوفت وموقع فايسبوك (لتحليل البيانات الشخصية). ثم إن شركات أدوية عالمية (AstraZeneca ،Pfizer،Johnson & Johnson ، …) تعتمده لتحليل البيانات السريرية.

*
للمزيد من المعلومات تفضل بزيارة موقع مشروع R.

*

ما هي مميزات R؟

  •   مجانية، مفتوحة المصدر، ومتاحة للجميع.
  •   متعددة المنصات يعمل على أنظمة لينوكس ويونكس وماك وويندوز.
  •   مختصة في التحليل الإحصائي وبنائها “syntax ” سهل ملائم جدا لهذه الغاية، مثلا لحساب المجموع والمعدل والتباين. أستعمل أوامر بديهية مثل:mean, sum, var
  • تعتمد فلسفة البساطة والحد الأدنى، أي أنها تعطيك المخرجات التي تحتاجها فقط وتتفادى تكديس النتائج كما تفعل برمجيات إحصائية أخرى ( كتقارير SPSS).
  • لغة مفسرة ولغة لكتابة السكربتات مثل بايثون.
  •   ذات أداء عال وقابلة للموازاة (Parallel computing) وهو أمر هام لعمليات حوسبة معقدة مثل نمذجة ومحاكاة المناخ والنظم الأحيائية، … لتمثيل بياني ذو جودة عالية مع إمكانية إنتاج مخططات ثلاثية الأبعاد باستعمال مكتبة “OpenGL”.
  • نظام وثائق ودعم محكم ومتنوع.

*

ماهي حدود R؟

طبعا لنكون واقعيين لكل لغة برمجة حدود، فمن الواضح أنك لن تستطيع مثلا عمل لعبة ثلاثية الأبعاد بواسطة R كما أنك لن تستطيع حل كل المشاكل الرياضية وتحليل جميع أنواع البيانات.

*
- لتحليل الأطياف والإشارات (Signal processing) ومحاكاة النظم الإلكترونية سيكون من الأفضل استعمال لغات الحوسبة العددية مثل متلاب (التجارية) أو بديل مفتوح المصدر مثل أوكتاف “Octave ” أو سيلاب “Scilab  “.

.
-بما أنها لغة مفسرة، ستكون R أبطأ في بعض البرامج الضخمة وذات البنية معقدة. في هذه الحالة، إذا كانت السّرعة أمرا حيويًا، يتجه الكثيرون نحو لغات مصرّفة “Compiled” مثل “SAS” أو فورتران.

.
- قد تكون ذاكرة R غير مهيأة لتعامل مع بيانات ذات سعة فائقة لأنها تقوم بتحميل كافة البيانات والمكتبات في الذاكرة الحيّة (وإن كان هناك تحسينات منذ الإصدار. 2). الحلّ المتوفر هو إنشاء قاعدة بيانات خارجية وربطها ب R (باستعمال MySQL، أو PostgreSQL، أو غيرها).

*

تثبيت واستعمال R على لينكس

هناك إصداران من R كل سنة، في أبريل وأكتوبر. سنستخدم الإصدار الأحدث في هذا الشرح وهو 2.11. الحزم التنفيذية “Binaries” متاحة للتحميل من الموقع الرئيسي، وكذلك تثبيتها من مدير حزم مباشرة متاح لأغلب التوزيعات.

*

نسخة R للينكس تتفوق على نفس النسخة لويندوز في استخدام الموارد، خاصة في استهلاك الذاكرة الحيّة. كما يمكن تثبيت R من المصدر على لينوكس لجعلها أعلى في الأداء.

*

افتح الطرفية، وتأكد من أنك تحمل صلاحيات الجذر، ثم أكتب أوامر التثبيت:
- على دبيان وأوبنتو وسبيلي ومينت:

كود:
apt-get install r-base r-base-dev

.
- على فيدورا وأعجوبة لينكس:

كود:
yum install R R-devel

.
- على مندريفا:

كود:
urpmi R-base R-devel

.
- على أوبن سيوز:

كود:
zypper install R-base R-base-devel
.

*

للتعليمات الخاصة بالتثبيت من المصدر أنظر هنا.

 تستطيع العمل على بيئة R بشكل أساسي بواسطة سطر الأوامر كما أن هناك واجهات رسومية عديدة (سنرى بعضها لاحقا). من الممكن أيضا دمجها مع تطبيقات أخرى كالمتصفحات (بواسطة “rapache”) والجداول الممتدة “spreadsheets” أو جعلها تعمل كخادم (بواسطة “Rserve”).

 لفتح جلسة R جديدة، أكتب في الطرفية:

كود:
~$ R
 إذا كان كل شيء على ما يرام سترى رسالة ترحيب كالتالي
*

                    فتح R على الطرفية (الواجهة النصيّة).
.
 والعلامة التنصيص ">" هي استدعاء لنا لبداية إدخال الأوامر، مثلا لندخل عملية بسيطة:
كود PHP:
>7+28
 .
والمخرجة ستكون:
كود PHP:
[1] 35
 .
للخروج من الجلسة أكتب
كود PHP:
q()
 .
سيطلب منك إن كنت تريد حفظ بيانات الجلسة الحالية أم لا (y/n) فاختر ما تراه مناسباً. 
. 
 هذه الطريقة، التي لا تعتبر غريبة على من يتعامل مع "بيثون" و"روبي" ، تسمى " Console mode ".
 يمكنك أيضا عمل سكربتات بلغة R وتنفيذها عن طريق " Batch mode " وكتجربة افتح محرر النصوص لديك ثم أنقل وألصق التالي:
.
كود PHP:
#!/usr/bin/env R
cat("Hello World!\n")
 .

 إحفظ الملف بامتداد " .R" ثم لرؤية النتيجة أكتب في الطرفية:
.
كود PHP:
~$ cat hello.R | R --slave
Hello World!
 *

 لنبدأ !  Getting Started  

 في البداية ستستعمل R كآلة حاسبة. جرب أشياء كالتالي: 
.
كود PHP:
> 3+7-3#  addition and subtraction
[1] 7
 .
 لاحظ هنا أمرين:
 أولاً، أجريت العملية الحسابية ولكن وقع تجاهل كل ماهو مكتوب بعد العلامة "#" لأنه يعتبر تعليقا. كتابة التعليقات مهمة جداً في أي لغة برمجة لأنك قد تكون أول من سينسى طريقة عمل الكود بعد أشهر من كتابته. 
 ثانيًا، طبعت قبل النتيجة العلامة "[1]" وهذا لأن R يعتبر افتراضيا كل شيء بمثابة جدول "vector" والرقم واحد هو مؤشر عن العنصر الأول في الجدول.
.
كود PHP:
> 6-3+2
[1] 5
> 6-(3+2) # operation order
[1] 1
> 12*6+4# multiplication first
[1] 76
> 72/5 # division
[1] 14.4
> 6^2 # squaring
[1] 36
> 8^13 # to the power of
[1] 549755813888
> 8**13 # same thing
[1] 549755813888
> ((5*13)-(1+4)^2)/62 # more complicated
[1] 0.6451613
 .
 تستطيع أيضا استعمال بعض الدوال الرياضية، مثلا:
.
كود PHP:
> sqrt(2) # square root
[1] 76
> cos(pi) # cosine of pi, pi is the ‘π’ constant
[1] -1
> sin(20)^2+cos(20)^2
[1] 1
> log(1) # natural log
[1] 0
> log10(10) # decimal log
[1] 1
> exp(0) # exponential
[1] 1
 .
 يمكن تخزين المتغيرات باسم معين:
.
كود PHP:
> x<-5 # assigns 5 to x
>x=5 # equivalent but not recommended for scripts
.
كما ترى R ليس كثير الكلام ، لو أردت أن تطبع قيمة المتغير (ما تحتويه x هنا) :
.
كود PHP:
> x # print x’s value
[1] 5
> 2 -> y # same thing, assigns 2 to y
> y
[1] 2
> z<- x*y-x+y
[1] 7
 .
 لإنشاء الجداول:
كود PHP:
> v<-c(1,2,3,4) # create a vector with combine function “c()”
> v
[1] 1  2  3  4
> w<-c("Age","Gender","Length") # create a vector of strings
> w
[1] "Age"  "Gender"  "Length"
> v<-1:10 # create a vector with a sequence from 1 to 10
> v
[1] 1  2  3  4  5  6  7  8  9 10
> v<-seq(1,10) # same thing with “seq()” function
> v
[1] 1  2  3  4  5  6  7  8  9 10
> u<-sin(v) #calculate sin of v elements and assign them to a new vector u
> u # display u
[1]  0.8414710  0.9092974  0.1411200 -0.7568025 -0.9589243 -0.2794155
[7]  0.6569866  0.9893582  0.4121185 -0.5440211
 .
 كمثال بسيط سنقوم برسم منحنى دالة الجيب كالآتي:
.
كود PHP:
> v<-seq(-6,6,.2) # create a sequence from -6,6 with an increment of 0.2
> u<-sin(v)
> plot(v,u,type='l',col='red')# plot u=sin(v) with a red line ‘l’
.
 والنتيجة ستكون:

.
الرسم البياني لدالة الجيب.
 كما ترى من المثال السابق، الدوال"functions"فيR تأتي على الشكل التالي:
.
كود PHP:
function(arg1=…,arg2=…,…) # function with some arguments
 .
 هناك العديد من الملقمات "arguments " في الدالة ()plot، بعضها أساسي والآخر اختياري. قمنا هنا بتحديد أربعة منها فقط.
 في الأول والثاني قمنا بتحديد البيانات v و u التي سنقوم بتمثيلها في المنحنى (أساسي).
 في الثالث والرابع قمنا اختياريا بتحديد نوع المنحنى"type=" ولونه "col="، وإن كان من الممكن تركهما دون تحديد. 

 .
يمكنك أن تطلب المساعدة لمعرفة طريقة استعمال أي دالة كالتالي:
.
كود PHP:
> help(plot)# display help of plot function in console mode
> ?plot # same thing
 .
 لتصفح المساعدة بشكل أفضل على متصفح الويب (على Firefox مثلا)، قم فقط بتغيير الخيارات كالآتي:
.
كود PHP:
> options(help_type = "html", browser = "firefox")
> help(plot)
.


.
وثائق المساعدة على المتصفح موزيلا فايرفوكس.
 .
ويمكن أيضا استعراض كل الملقمات المتوفرة لدالة معينة بواسطة المفتاح "tab"، تماما كما تعمل خاصية الإتمام الذاتي على الطرفية. على سبيل المثال:
.
كود PHP:
> plot()
topic=            package=          lib.loc=          verbose=
try.all.packages= help_type=
...

 

 

هي لغة استعلام تمكننا من عرض و استرجاع البيانات من الجداول المختلفة في قواعد البيانات و لكل من قواعد البيانات المختلفة أوامر مشتركة و أوامر أخرى خاصة بها لا تعمل على قواعد البيانات الأخرى.
*

نقلاً عن الموسوعه العربية

تبدأ قصة SQL مع بداية النموذج العلائقي لقواعد البيانات من خلال ورقة بحثية أعدّها E.F.Codd سنة 1970 حين اشتغاله في مختبر أبحاث IBM في سان خوزيه .

.

وفي سنة 1974 قام D. Chamberlin من نفس المختبر بتوصيف لغة سمّيت ‘Structured English Query Language’ ، أو SEQUEL . ثم أعدّت نسخة منقحة سنة 1976 عرفت باسم SEQUEL/2 ، ولكن سرعان ما تمّ تغيير الاسم الى SQL لأسباب قانونية (ذلك لأنه وجد ان نفس الاسم قد سبق تخصيصه واستخدامه من قبل آخرين) .

.

وبالرغم من أن العديد من الأفراد لا يزالوا ينطقون SQL بـ ‘see-quel’ ، إلا أن النطق الرسمي لها هو ‘s-q-l’ .
بعد ذلك قامت IBM بإنتاج مجسّم لنظام إدارة قواعد بيانات DBMS أسمته System R ، أسس على لغة SEQUEL/2 ، وكان الغرض من هذا المجسّم هو اختبار مدى فعالية وجدوى النموذج العلائقي. فكان بجانب النجاحات التي تحقّقت فإن إحدى أهم النتائج التي رافقت هذا المشروع هو تطوير SQL .

.
عموما فإن جذور SQL تنبثق من لغة SQUARE أي (Specifying Queries as Relational Expression ) ، والتي سبقت مشروع System R . حيث تمّ تصميم SQUARE لتكون لغة بحث تقوم بتنفيذ عمليات جبر علائقية بواسطة جمل إنكليزية.

.
في أواخر السبعينات قامت المؤسسة التي تعرف الآن باوراكل ORACLE Corporation بإنتاج نظام قاعدة بيانات ORACLE ، وكانت تقريبا أول منتج تجاري لنظام إدارة قواعد بيانات علائقي مبني على SQL . تبعه بعد ذلك بقليل INGRES مع لغة استفسار تسمى QUEL والتي برغم إنها كانت اكثر هيكلية من SQL إلا أنها اقل شبها بالإنكليزية. إلا أنه عندما ترسّخت لغة SQL كلغة معتمدة لقواعد البيانات تم تحويل INGRES إلى نظام إدارة قواعد بياناتDBMS مبني على SQL .

.
أما IBM فقد قامت بإنتاج أول نظام إدارة قواعد بيانات علائقي لها RDBMS أسمته SQL/DS لبيئة تشغيل DOS/VSE ، و لبيئة تشغيل VM/CMS وذلك في سنتي 1981 و 1982 على التوالي ، ثم فيما بعد لبيئة تشغيل MVS في 1983 وعرف باسم DB2 .
في عام 1982 بدأ المعهد القومي الأمريكي للمواصفات (ANSI) بالعمل على لغة قواعد بيانات علائقية (RDL) بالاعتماد على ورقة تصوّر قدّمتها IBM . ثم التحقت منظمة ISO لهذا العمل وقاما سويّا بتحديد مواصفة SQL . ( تم إسقاط اسم RDL في 1984 ، و أعيد صياغة مسودة المواصفة بشكل يشبه التي عليه SQL الآن).
و قد جوبهت المواصفة المبدئية من أيزو ISO التي نشرت سنة 1987 ، بالعديد من الانتقادات ؛ فقد صرّح “ديت” Date – وهو باحث له تأثيره في هذا المجال – بأن خصائصا مهمة مثل قواعد التكامل المرجعي وعمليات علائقية معينة قد تم شطبها من المواصفة، كما أشار إلى أن اللغة كانت تضج بالمرادفات ، أي وجود أكثر من طريقة لكتابة نفس الاستفسار .

و قد كانت معظم الانتقادات صحيحة ، و تم أخذها في الاعتبار من قبل الجهات المختصة بالمواصفات قبل إصدار المواصفة . و قد تقرر إن الأمر الأكثر ضرورة هو إصدار مواصفة بأسرع وقت ممكن و ذلك لإرساء قاعدة عامة تكون أساسا لتطوير اللغة ، بدلا من الانتظار حتى ذلك اليوم الذي يُمكن فيه الإجماع على كل الخصائص التي يشعر الناس بضرورة وجودها .

.
في 1992 أصدرت ايزو أول مراجعة مهمة لمواصفة SQL ويشار إليها عادة باسم SQL2 أو SQL-92 ، وبرغم من إن بعض الخصائص قد تم تحديدها لأول مرة في هذه المواصفة ؛ إلا أن معظمها قد سبق تنفيذها بشكل أو آخر في العديد من المنتجات.
و تبقى هناك بعض الخصائص والمزايا التي يضيفها مصنعو نظم SQL والتي تسمى ملحقات extensions ، هذه الملحقات تشكل لهجات dialect مختلفة تبتعد بمرور الوقت عن لغة المواصفة الأصلية. وبرغم ذلك يوجد الآن اتجاه قوي للعمل على توحيد مواصفات لغة SQL .

.
و الآن وبرغم إن SQL هو تصوّر أبدعته أصلا IBM ؛ فان أهمية هذه اللغة حثّت العديد من المصنعين الآخرين كي يقوموا بصنع إنتاجاتهم الخاصة ، فاصبح عدد المنتجات المتوفرة اليوم بالمئات *

*
ما الفرق بين MYSQL و SQL SERVER ؟

MySQL هي قواعد بيانات، تشبه برنامج MS-Access لكن بدون واجهة استخدام، وفوق ذلك مجانية ولا تكلفك شيئاً، وعادة ما تذكر لغة PHP مع قواعد البيانات MySQL على الرغم من أن لها استخدانات أخرى.

.

أما MS SQL SERVER فهو برنامج لعمل قواعد البيانات من شركة مايكروسوفت و شديد التفاعل مع لغات البرمجة المصممة من قبل هذه الشركة أكثر من غيره من البرامج الأخرى مثل ال Access .

.
.
سي شارب (C#) أحد لغات بيئة الدوت نت لتطوير البرامج من إنتاج شركة ميكروسوفت يرمز إليها بالرمز c# وتنطق “سي شارب”، وهي إحدى اللغات التي أتجتها شركة مايكروسوفت وذلك خروجاً من ورطة الجافا والقضية الشهيرة التي رفعتها عليها شركة صن ، تم الإعلان عنها في أواسط العام 2000 تزامناً مع الإعلان عن بيئة الدوت نت. تتميز سي شارب بأنها أحد لغات البرمجة الكائنية وتجمع صفات بالسي والبيزك المرئي حيث أنها تستخدم القواعد الخاصة بالسي وسرعة التطوير كما في البيزك المرئي , لغة السي شارب موجهة إلى مبرمجي الفيجول سي ومبرمجي السي على أنها امتداد لهذه اللغات.
.مميزات السى شارب

استفادت لغة السي شارب إلى حد كبير من جهود مطوري الجافا وتشاركها في كل مزاياها ومبادئ التصميم وتفوقها في بعض الأجزاء . لغة السي شارب كباقي لغات الدوت نت والجافا تنتج برامج لاتعتمد على بيئة معينة مثل برامج موجهة للينكس أو ويندوز أو موبيل . هي لغة كائنية بالمعنى الحقيقي للكلمة حيث كل شيء في تركيب اللغة هو عبارة عن كائن تم تعريفة مسبقاً ، لذلك لا تسمح هذة اللغة بالكتابة الحرة، أي أن أبسط التراكيب البرمجية يجيب أن تكون داخل إحدى الكائنات. منذ الوهلة الأولى لظهور السي شارب كان من الواضح أنها أتت لتعزز موقف شركة مايكروسوفت في منتجها الدوت نت.

.وذلك لأنها أفضل لغة تتعامل مع الدوت نت و تستفيد من قدراتها كاملة. و قد أصدر في أواخر العام 2005 الإصدار الثاني من اللغة C#2 .. تتنوع التطبيقات التي يمكن إنتاجها بلغة السي شارب للعمل على منصات متتعدة , ثم تلاه فى أواخر عام 2007 الإصدار الثالث في فيجوال ستوديو 2008.

.عيوب السى شارب

لا نستطيع القول أن للسي شارب عيوب , حيث أنها تجمع بين قوة لغى السى ++ وسهولة الفيجوال بيسيك , فهي تعتبر لغة متكاملة وكذلك تتعامل مع الآلة بشكل مباشر. وتم عمل نظام تشغيل من لغة السى شارب، وهذا يتعارض مع بعض الأقوال الأخرى مع بعض المبرمجين الذين يدعون أنها لن تستطيع عمل نظام تشغيل تم بالفعل عمل نظام تشغيل ويسمى cosmos

.
وهذا هو الموقع الرئيسى للنظام
http://www.gocosmos.org/index.en.aspx
.مجالات استخدام السى شارب

* تطبيقات منصة التشغيل ويندوز .
* تطبيقات الانترنت (الويب والواب) ذلك باستخدام منصة ال ASP.NET .
* تطبيقات الموبايل وتعتمد علي منصة التشغيل وينوز سي اي WINDOWS CE .
* تطبيقات العمل على لينكيس وذلك بالاعتماد علي مكتبيات تمت كتابتها خصيصا لمنصة التشغيل لينيكس وذلك من خلال مشروع مونو (مستقل عن ميكروسوفت) .
.
ونظراً لتنوع إمكانية عمل تطبيقات باستخدام السي شارب فانة يمكن عمل تطبيقات قوية مثل :
.
* تطبيقات تعامل مع قواعد البيانات باستخدام مكتبة ADO.NET.
* تطبيقات الجرافيكس والوسائط المتعددة .
* تطبيقات إدارة المحتوى.
* الألعاب والترفية.خلاصة القول فى سى شارب دوت نت

.
لغة السي شارب لغة قوية ومتميزة فى الكثير من المجالات ويتم تطويرها بشكل مستمر , وتعتبر ضمن عائلة لغات السي , ولكنها تتميز عن السي بأنها أسهل في التعلم كالفيجوال بيسيك.

 

.

هي لغة برمجة للاستخدامات العامة، تعتبر لغة السي++ لغة برمجة كائنية. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة الكبيرة و للتعامل مع البنية الصلبة للحاسب. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوى وفي نفس الوقت قريبة من لغة التجميع ذات المستوي المحدود كما أنها تعد لغة برمجة إجرائية(يمكن كتابة برنامج يحتوي على إجراءات و توابع فقط) كما تعد لغة غرضية التوجه(البرنامج المكتوب عبارة عن صفوف و تستخدم الخواص المتاحة من كبسلة و تعددية الأشكال و الوراثة و التركيب…). وهي لغة ناشئة من لغة C الذي قام بتطويرها بيارت ستروستروب إلي ++C.

.
تاريخ السي ++

.

طور بيارت ستروستروب (Bjarne Stroustrup)، والذي كان يعمل في مختبرات بيل، لغة السي++ في الثمانينات كتحسين للغةالسي (لغة برمجة) سي، تشمل السي++ جميع مزايا السي بالأضافة إلى مزايا البركجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
.

ومثلها مثل لغة السي، فان السي++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام السي++ ومنها نظام جنو\لينكس .
و يتجنب الكثير من المبرمجين لغة السي++ والسي نظرا لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجول بيسك والدلفى ثم جافا وسي شارب والأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السي++ وبدا في وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السي++ مع هجرة عدد كبير من مبرمجى السي++ إلى جافا وسي شارب ، الا أنه سرعان ما أدرك المبرمجون أن السي++ هى السبيل الوحيد لإنتاج برامج تجارية قوية وسريعة وتؤدى المطلوب منها بكفاءة وبأقل عدد من الأخطاء.

.
بين السي والسي++

- تدعم السي++ السي بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة للمترجمات) وعمليا يمكن لمعظم برامج السي أن تترجم بواسطة مترجمات سي++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. – الا أن الأمر لا يخلو من بعض المشاكل غير المتوقعه، مثلا قد يحدث أن تسمى متغيرا باسم new وهى كلمة محجوزه في سي++ وليست محجوزة في سي.

.
الجديد في سي++

الإضافة الأهم التي أتت بها السي++ عن السي هى بالطبع البرمجه عن طريق الكائنات. حيث تعتمد السي على البرمجة الاجرائية والتي كانت كافية في وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين إلى البرمجة بالكائنات . الا أن السي مازالت تستخدم في برمجة الويندوز.

.
و هذا بالإضافة إلى بضعة إضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الإدخال والإخراج تعتمد على الكائنات.
- كلمة inline التي تتيح كتابة جسم البرنامج عند سطر التعريف(prototype)وبذلك نخفف من إعادة تعريفه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد و التي يتم تجاهلها من قبل المترجم عند القيام بعملية الترجمة.
.
سبب صعوبتها

ربما تعود أسباب صعوبة لغتي السي والسي++ لأسباب تاريخية أكثر منها واقعية وهو ما يردده المبرمجين المعتادين على استخدام السي++ وهذا يعود بنا إلى أصل لغة السي وهي لغة السي بي ال CPL والتي اشتهرت بشدة تعقيدها مما تسبب في ابتعاد المبرمجين عنها فتم تطويرها وتبسيطها إلى لغة سميت BCPL ولم تلقى الكثير من النجاح ولكنها تطورت إلى لغة البى B وعندما أرادو تطويرها سموها سي ( وهذا هو أصل تسمية السي) ، وبالطبع ورثت السي++ خصائص لغة سي. إلا أنه لا يمكن إنكار أن مفاهيم مثل المؤشرات pointers ، والإشارات هى مفاهيم مربكة للمبرمج المبتدىء ، بالإضافة إلى مفاهيم الثوارث Inheritance وتعدد الشكلpolymorphism والقوالبTemplates التي تربك حتى المبرمجين المحترفين. وكذلك لا تقدم سي++ الحماية الكافية للمبرمج كي لا يقع في أخطاء التشغيل التي قد تتسبب في توقف الحاسوب عن العمل. كيف؟

.
في لغة الفيجول بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كالأتي :
.
Dim A(20) As Integer
.
ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ ويتوقف برنامجك. أما في السي++ فاذا عرفت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 و عندما تحاول الوصول إلى العنصر رقم عشرين مثلا تكون قد تعديت حدود المصفوفة إلى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل وهذا يؤدي إلى إعطائك قيم خاطئة. و المشكلة الأخرى التي تربك الكثيرين أن أول عنصر بالمصفوفة هو 0 وليس 1 وحجمها 20 أى أن العنصر الأخير هو 19 وليس 20 مثل البيسك.

 

 

سي هي لغة برمجة، مقننة وعالمية، صممها وطوّرها في أوائل السبعينيات كن تومسون،برايان كرنيغان ، و دينيس ريتشي . و قد صممت في الأصل لتستعمل في التطوير و العمل على نظام التشغيل يونكس، ثم لقيت انتشاراً واسعاً منذ ذلك الحين و حتى اليوم ويظهر ذلك من خلال شعبيتها لدى أغلب مبرمجي الحاسوب ومن خلال استعمالاتها العديدة والمتنوعة. و لغة السي هي لغة بني عليها العديد من لغات البرمجة الحديثة مثل السي++ والتي تعتبر توسيعا و إضافة مكملة للسي و الجافا.

 

 

تم تصميم السي في مختبرات بل ما بين عامي 1969 و 1972، وقد تم تسميتها بالسي لأن جزءاً كبيراً منها تم اقتباسه من لغة البي (B) و قد تطورت هذه اللغة إلى درجة أصبحت فيها بالقوة الكافية لتحويل نواة يونكس من لغة الآلة (الأسمبلي) إلى السي.

 

 

وفي عام 1978 قام برايان كرنيغان (Brian Kernighan) و دينيس رتشي (Dennis Ritchie) بنشر الكتاب المشهور The C Programming Language وذلك لتحديد خصائص اللغة, ويعرف هذا الكتاب في الأوساط المختصة ب K&R. إلا أن تقنين اللغة وتبنيها بصفة رسمية من طرف الـ ANSI  والـ ISO تم في الثمانينات وكنتيجة لذلك ظهرت الطبعة الثانية للكتاب بعنوان The C Programming Language, Second Edition, أو K&R2 وهو المرجع الرئيسي للغة إلى الآن ISBN 0-13-110362-8. و بتقنين اللغة تمت إضافة أجزاء وتنقيح أجزاء أخرى لتفادي السلبيات التي ظهرت في السابق ولتهيئة أداة أفضل وأقوى بالنسبة للمبرمج.

 

 

و لولا ظهور لغة السي وتجربتها التي فاقت الثلاثين عاماً لما كان ممكنا ظهور اللغات الحديثة و الشيئية مثل  السي++ أو على الأقل لما أصبحت كما تعرف عليه اليوم. ساهم في تطوير اللغة كل من شركة مايكروسوفت وشركة آي بي ام معاً ولذلك فإن الأساسيات العامة لأسلوب كتابتها تستخدم إلى الاَن و في العديد من اللغات المتطورة و المنشأة من خلالها حتى اَخر لغات السي وهي لغة السي شارب والتي تعتبر احدث التطويرات للغة السي ويوجد اصدارات عديده منها بدءاً من سنة 2001 حتى اصدار2010.

 

 
 
لغة البرمجة هي لغة يتم كتابة البرامج بها ليقوم جهاز الحاسوب بتنفيذها. تقسم لغات البرمجة للحاسوب لعدة اجيال أو أنواع، بناء على قربها من اللغات الإنسانية. وتقسم أحيانا بناء على الأغراض لهذه اللغة.
 
تعريف البرمجة
 
من الممكن تعريف البرمجة بأنها عملية كتابة تعليمات وأوامر لجهاز الحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات. و تكون عملية البرمجة متبعة لقواعد محددة باللغة التي اختارها المبرمج. و كل لغة لها خصائصها التي تميزها عن الأخرى و تجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج. كما أن للغات البرمجة أيضا خصائص مشتركة و حدود مشتركة بحكم أن كل هذه اللغات مجعولة للتعامل مع الحاسوب.
 
خصائص لغات البرمجة
 
لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كيفية اعطاء أوامر للحاسوب لكي يقوم بالعمل المطلوب منه. و للقيام باعطاء الأوامر توفر لغة البرمجة المختارة مجموعة من اللبنات الأساسية للأستناد عليها خلال عملية بناء البرنامج و مجموعة من القواعد التي تمكن من التعامل مع معلومات و تنظيم هذه الأسس التي توفرها اللغة لتتكامل و تقوم بعمل مفيد. تتمثل هذه الأسس و القواعد بصفة عامة من:
- المعلومات و تخزينها
- الأوامر و تنظيم سيرها
- التصميم الخاص
- عنصر أ
- عنصر ب
- عنصر ج=== المعلومات و تخزينها ===
 
إن المعلومات في الأجهزة الرقمية الحالية يتم تخزينها على أرقام على نظام العد الثنائي و بصفة عامة فان المعالجات الحديثة لا تقوم بالتعامل مع البت الواحد بل مع مجموعات من البتات يمكن أن تضم :
8 بت = بايت وهي أصغر وحدة تخزين معلومات في الحواسيب الحديثة
16, 32, 64, أو 128 بت
و باستعمال 8 بت مثلا, يمكن تشكيل 256 قيمة مختلفة, و يمكن أن تكون هذه القيمة بين 0 و 255 و تمثل وظيفة لغة البرمجة استغلال وحدة أو مجموعة من الوحدات لتخزين معلومات من الحياة الواقعية مثل الأسماء أو القياسات أو أرقام الحسابات البنكية.
 

الأوامر و تنظيم سيرها
 
يقوم المبرمج بإجراء عمليات على وحدات المعلومات مثل تخزينها و قراءتها و مقارنتها و اجراء عمليات حسابية عليها أيضاً, وتتبع العمليات القواعد المحددة للغة. و للغة البرمجة دور آخر و هو التحكم في تنظيم إجراء العمليات, حيث تحرص على إجرائها بنفس تنظيم كتابتها من طرف المبرمج و تمكن اللغة أيضاً من إجراء عملية اختيار و تفرع, فلنفترض أن البرنامج الذي يريد المبرمج صنعه يقوم بقسمة عددين يختارهما المستعمل, و إظهار النتيجة على الشاشة, و من المعروف أن القسمة على صفر لا تجوز, و هنا يقوم البرنامج بالاختيار : فاذا كان القاسم مخالفا لصفر فان البرنامج يقوم بإجراء العملية و يعطي النتيجة, أما اذا كان القاسم صفراً فان البرنامج لا يقوم بإجراء العملية و إنما ينبه إلى أن المستعمل حاول القسمة على صفر. و يمكن تنظيم الأوامر بصفة أخرى, حيث يقع تنفيذ أمر أو مجموعة من الأوامر بصفة متكررة (Loop) و يمكن تقسيم الأوامر أيضاً إلى وحدات فرعية تقوم كل وحدة بانجاز عمل محدد, و الهدف هو تقسيم العمل إلى أجزاء يسهل العمل عليها كل على حدة (Loops)

 
التصميم الخاص
 
تتمتع كل لغة بتصميم خاص يختلف عن طريقة كل لغة في التعامل مع المعطيات, و عن طبيعة الطرق و التسهيلات التي توفرها اللغة للتعامل مع مشكلة معينة.
يمكن تصنيف لغات البرمجة من حيث طريقة بناء البرامج إلى لغات إجرائية (Basic, Fortran) وهي لغات تسلسلية، أساس بناؤها هو الإجراءات المطلوب تطبيقها على الأشياء والمتحولات. ولغات شيئية (C, Java, Delphi) وهي لاتسلسلية، وتقوم على أساس العناصر والمتحولات المستخدمة ضمن البرنامج المطلوب تحويرها، من خلال تطبيق مجموعة معينة من الإجراءات عليها.
 
أمثلة لبعض لغات البرمجة للحاسوب:
Assembly
C
++C
Java
Lisp
Logo
Prolog
بايثون
#C
Fortran
Ruby
Ada
Delphi
Basic
Visual Basic
Cobol
Pascal
E
SQL
Smalltalk
Eiffel
Tcl
Oz

Global computer network. Hi-res digitally generated image.
 
مع تطور وكبر حجم المؤسسات والمنظمات والشركات ، مما أدى إلى كثرة الاجراءات اليومية ، والمعاملات ، والتقارير الصادرة والواردة ، وزيادة عدد الأيدي العاملة ، فكان لزاماً ان يُبحث عن حلول ، لإيجاد نظام متكامل يستطيع إدارة هذه الموارد ، بشكل يساعد على سهولة اتخاذ القرار في أقل وقت ممكن .
 
لذلك ظهر فيما يعرف باسم ” نظم المعلومات ” ، وتتكون دورة حياة نظم المعلومات من :
المدخلات ( بيانات أو مواد خام ):
فتكون المدخلات عبارة عن بيانات مثل أرقام الموظفين ، اسماء الموظفين ، أرقام الهواتف ، عناوين السكن ، الأرقام الوظيفية ، كل شيء يتعلق بالبيانات التي يمكن إدخالها داخل النظام ، وأيضاً المواد الخام تعتبر نوع من أنواع المدخلات ، وذلك عندما نتحدث عن نظم المعلومات داخل المصانع وماشابه ذلك .
 
عملية المعالجة :
يقصد بعملية المعالجة : اتخاذ الإجراءات المناسبة للبيانات وذلك حسب التعليمات ، ويتم اتخاذ الإجراءات المناسبة إما عن طريق نظام إلكتروني ، أو نظام يدوي ، كلاً حسب النظام الذي يعمل به .
 
المخرجات ( معلومات أو منتجات ) :
بعد عملية المدخلات والمعالجة ، تأتي عملية المخرجات ، حيث يتم إخراج المنتج أو التقارير من أجل اتخاذ القرار كما يجب وكما يتطلبه العمل ، وأيضا المعايير المتفق عليها داخل النظام .
التغذية العكسية( feedback) :
يقصد بالتغذية العكسية هي الملاحظات على المخرجات ، والمُرجعات أيضا في حالة عدم تطابق الشروط حسب المتفق عليها ، فتعود لكي يتم إدخالها من جديد وإجراء عملية المعالجه ثم إخراجها بالشكل المطلوب ، والهدف الأساسي من هذه العملية هو تحسين المنتج بما يتناسب مع رغبات العملاء ، أو هو تحسين أداء عمل المؤسسة الإداري والدقة في إنتاج التقارير وإدارة البيانات بالشكل المطلوب .
 
لذلك نستطيع هنا تعريف نظم المعلومات بأنها :
نظام متكامل يتم به توظيف الأيدي العاملة والتقنيات الحديثة لإدخال البيانات والمواد الخام لمعالجتها بدقة وإخراجها بالشكل المطلوب ، لاتخاذ القرارات المناسبة .
عندما أصبحت تقنيات تكنولوجيا المعلومات تتطور بشكل مستمر ، وأصبحت قادرة على معالجة العمليات الإداريه ، واتخاذ القرار المناسب ، فلذلك تركزت البحوث من أجل تطوير عمل المنظمات والمؤسسات حول هذا الأمر ، لسان حالها يقول ” لماذا لا نوظف هذه التقنيات بما يخدم عمل المنظمات والمؤسسات ؟ ” .
لذلك تصنف نظم المعلومات على النحو الآتي:
 
نظم معلومات مكتبية
 
هو نظام المعلومات الذي يستخدم الأجهزة والبرمجيات والشبكات لتعزيز تدفق العمل وتسهيل الاتصالات بين الموظفين. او نستطيع القول بأنه ” هو التشغيل الآلي للمكاتب ” .
 

نظم معلومات معالجة المعاملات
 
هو النظام الذي يستقبل المعاملات ليتم معالجتها ، مثل نظام القبول والتسجيل لدى الجامعات على سبيل المثال .
 
نظم المعلومات الإدارية
 
نظم المعلومات الإدارية في كثير من الأحيان تتكامل مع أنظمة معالجة المعاملات. لمعالجة أمر المبيعات، على سبيل المثال، فنظام معالجة المعاملات يسجل بيع، بتحديث رصيد حساب العميل، ويجعل الخصم من المخزون. باستخدام هذه المعلومات، يمكن لنظام إدارة المعلومات أن ينتج تقارير خلاصة أنشطة المبيعات اليومية؛ قائمة عملاء مع أرصدة الحسابات ؛ وإنشاء الرسم البياني لتقدم بيع المنتجات؛ وتسليط الضوء على بنود المخزون التي تحتاج إلى إعادة ترتيب. ويركز نظام إدارة المعلومات على توليد المعلومات للإدارة العليا ويشعرهم بأن مثلا هناك تقصير في اداء عمل الموظفين .
 

نظم دعم اتخاذ القرار
 

يعتبر هذا النوع من النظم ، من أهم النظم الذي يتوافر داخل المنظمة ، حيث أنه مسؤول عن دعم الحلول استناداً للتقارير الإدارية ، حلول مناسبة حسب نظام المعلومات المتبع داخل المنظمة .
 
الأنظمة الخبيرة
 
هي إحدى أنواع نظم المعلومات ، فهذه الأنظمة تعتبر أنظمة معلومات ذكية ، حيث يتم توظيفها في الآلات ، والروبوتات بما يخدم مصلحة المنظمة .
لذلك مقياس نجاح وفشل المنظمات ، هو نظام المعلومات التي تعمل عليه ،لأنه يشكل منظومة ناجحة هدفها الأساسي هو نجاح عمل المنظمة وزيادة ارباحها في سوق العمل.