الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل تعمل البرامج المصممة بالسى++ على كل الانظمة؟

مغلق
بدأه Petro في 23 أغسطس 2004 · 9 رد · 964 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا بصراحة لسة مبتدىء فى هذة اللغة

و قد كنت اعمل على الفيجوال بيسك 6

لكنى هجرتة بعد ان سمعت من الكثيرين انها لغة سوف

تنتهى بعد مرور بضع سنوات و انها ليس لها مستقبل

و الحل هو الانتقال للاصدارة .net

و التى تشترك مع الفيجوال بيسك 6 فى الاسم و لكنها

مختلفة فى كل شىء اخر (هكذا سمعت!!)

يعنى من الاخر هاتتعلم لغة برمجة جديدة

لذلك قلت ما دمت سأتعلم لغة جديدة فلانتقل للــــ C

لكنى سؤالى هو :

هل البرنامج الذى سأصممة بالسى سيعمل على كل انظمة التشغيل؟

يعنى سيعمل على windows , linux

و هل من الممكن ان يعمل على اجهزة الماكنتوش apple mac

واذا كان من ينفع ان يعمل على هذة الانظمة

كيف اجعل البرنامج الذى صممتة يعمل على هذة الانظمة؟

ثم اننى سمعت ان فى الjava تبرمج برنامجك

ثم تدعة يعمل على اى نظام كان ... مادام يحتوى على الـــ Java Virtual Machine

هل هناك مثل هذا فى السى؟

معلش تعبتكم معايا :-)

#2
اقتباس
هل البرنامج الذى سأصممة بالسى سيعمل على كل انظمة التشغيل؟

يعنى سيعمل على windows , linux

هذا الموضوع كبير

لغة السي هي اللغة التي أثبتت أنها أفضل لغة في العالم

ولأنها الأفضل من بين اللغات ( تجد أن أنضمة التشغيل مهتمة بها )

لتصميم البرامج لأنظمتها

وهذا الإهتمام دفع كل نظام لتصميم مترجم سي خاص بة

بمعنى أن لغة السي القياسية تعمل في كل الأنظمة بشرط (أن يترجم البرنامج بمترجم النظام )

مثلا كتبت كود قياسي

تريدة أن يعمل في وندوز ( تكتب الكود وتترجمة في نظام وندوز وبمترجم سي للوندوز)

تريد البرنامج يعمل في لينكس ( تترجم الكود داخل بيئة لينكس وبمترجم خاص بلينكس )

وهكذا مع كل الأنظمة

ولكن السؤال الذي يطرح نفسة ماهي اللغة القياسية للسي

قبل ظهور أنظمة 32 بت كانت أغلب برامج السي تكتب بلغة قياسية

لأن المنصة كانت في تلك الأيام ( تعمل في النمط الحقيقي ) بمعنى أن البرامج كانت

تتصل بالمقاطعات والأجهزة بشكل مباشر - والمقاطعات وعناوين الأجهزة كانت لها قوانين

متشابهة في كل الأنظمة

ولكن ظهر منصة 32 بت ( النمط المحمي ) وتغير كل شيء

وصارت كل البرامج ممنوعة من الإتصال بالمقاطعات والأجهزة (إلى من خلال نظام التشغيل)

وهنا ظهر الفرق وظهر الجواب لهذا السؤال ( لماذا يستخدم كل نظام مترجم خاص بة )

لكي يكتب البرنامج بطريقتة الخاصة ويفهم مايريد منة البرنامج القيام بة

ولهذا السبب ستجد مع كل مترجم سي في أي نظام

ملفات الترويسة التي تقدم للبرنامج طرق للإتصال وللتحكم في المميزات التي يقدمها هذا النظام وهو يقوم بدورة بالإتصال بالأجهزة

هذا والله أعلم

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

السلام عليكم

هل يمكن التوضيح اكثر ماذا تعني بقولك كود قياسي

وشكرا على المعلومات القيمه والله يزيدك

#4

عفواً أخي رماس والله يزيد الجميع

الكود القياسي معناة كتابة كود لا يطلب أي خدمة من نظام التشغيل وهي دوال API

بمعنى أنة الدورات + الجمل الشرطية + التحكم في سير البرنامج + المتغيرات

ولهذا لاحظ الأمثلة

إظهار النافذة في

نظام وندوز

int main(..,.)
{

// خدمات النظام
RegisterClassEx();
InitInstance();

	while (GetMessage()) 
	{
  if (!TranslateAccelerator()) 
  {
 	 TranslateMessage();
 	 DispatchMessage();
  }
	}

return 0;
}

------------------------------------

في النظام لينكس

واجهة GNOME

#include <gnome.h>

int main(int argc, char *argv[ ])
{


GtkWidget *ghosh;
gnome_init("sample", "0.1", argc, argv);
ghosh = gnome_app_new("sample", "My Window");
gtk_widget_show(ghosh);

gtk_main();
return 0;

}

لاحظ التغير الكبير في الكود ( وهذا ما دفعني لأن أقول أن زمن الكود القياسي إنتهى)

وهكذا مع بقية الأنظمة

مثلا

ماكنتوش ( لعرض نافذة من ملف مصادر )

open( resid) 
do_itemhit

ونظام سولريس وبقية الأنظمة ( لها دوال وخدمات مختلفة )

وباقي الكود وطريقة كتابتة متشابهة

وإذا تريدو نتعمق في هذا النوع من البرمجة ( بحاول ابحث وأضع دروس )

ولكن أعتقد أن الوقت ما زال مبكر جــــــــــــــــــــــدا

خلونا نفهم وندوز بشكل كامل وبعدين الموضوع بيصير سهل

هذا والله أعلم

وبالتوفيق..

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#5

بصراحة الموضوع أعجبني (:

المسج بكس في وندوز

MessageBox (NULL,"Hello",NULL,MB_OK);

المسج في لينكس

gnome_message_box_new ("Hello",GNOME_STOCK_BUTTON_OK,NULL);

إنشاء قائمة في وندوز

CreateMenu

إنشاء قائمة في لينكس

gnome_app_create_menus

شريط الأدوات

CreateToolbarEx

--

gnome_app_create_toolbar

الظاهر إن الشغلة سرقت أفكار

الإتصالات والشبكات ( سهولة لينكس )

كود يفتح منفذ للإستقبال ( وندوز )

المنفذ = 100

SOCKET sckListen;
struct sockaddr_in sckAddress;

sckListen = socket(PF_INET, SOCK_STREAM, 0);

sckAddress.sin_port = htons(100);
sckAddress.sin_family= AF_INET;
sckAddress.sin_addr.s_addr = INADDR_ANY;

bind(sckListen, (struct sockaddr *)&sckAddress, sizeof(sckAddress));
listen(sckListen, 1);

لاحظ طول الكود

شوف لينكس

ServerSocket  server (100);

---------------

الإتصال بالمنفذ ( وندوز )

struct sockaddr_in sckAddress;
SOCKET  sckConnect;

sckConnect = socket(AF_DECnet, SOCK_STREAM, 0);
sckAddress.sin_port = htons(100);
sckAddress.sin_family = AF_INET;
sckAddress.sin_addr.s_addr = inet_addr("localhost");

connect(sckConnect, (struct sockaddr *)&sckAddress, sizeof(sckAddress));

لينكس

ClientSocket client_socket ( "localhost", 100 );

الإرسال للخادم ( وندوز)

send(ss,"Hello",5,0);

لينكس

client_socket << "Hello";

الإستقبال (وندوز)

char buf[200];
recv(ss,(char*)buf,200,0);

لينكس

char buf[200];
server>> buf;

ولكن الله أعلم هذة السهولة ( إلى وين توصل ؟)

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#6

السلام عليكم

هل احتاج ل header معين عند فتح المسج بكس تحت نظام ويندوز

مع تحيات اختك رماس

#7

السلام عليكم ,,

اقتباس
هل احتاج ل header معين عند فتح المسج بكس تحت نظام ويندوز

نعم وال header هو

#include <windows.h>

::MessageBox(NULL,"HELLO WORLD","JustMessage !",MB_OK);

.............................

jaas الله يجاوزيك على المعلومات القيمة جدا والمريحة فعلا ,,

وفعلا استغربت من كود الشبكات ,, مغلفين دوال الوندوز في كلاس وعاملين OverLoading رهيب لل << >> بطريقة رائعة ,,

وكما قلت يمكن تودي هذه السهولة لداهية ,,

لكن أكيد توجد مرونة في الموضوع لأني سابقا كان لدي كود لفتح منفذ أيضا في الجهاز والكود كان فيه header File كالتاليتقريبا :

#ifdef WINDOWS
#include <winsock.h>
#ifdef LINUX
#include <somthing I dont remember .h>

لذا بنسبة كبيرة جدا الكود أعلاه لفئة تغلف أيضا دوال API في اللنكس ,, والشغلة سرقت أفكار كما قلت أنت فالأسماء متشابهة جدا ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#8

شكرا لك اخى jaas و اخى HGB

على تلك الاجابات

لكن بصراحة اجاباتك صدمتنى اخى JAAS حيث اننى كنت

اعتقد انة عندما يقولون ان الــC++ تعمل على كل الانظمة

اى اننى اقوم بكتابة الكود مرة واحدة

ثم اعمل لة COMPILE و كل جهاز يكون لة الـCOMPILER الخاص بة

لكن على كلامك هنا ان كل نظام لة طرقة و لة الـCODES الخاصة بة

اعتقد ان الـجافا فى هذة النقطة تعتبر افضل

حيث اكتب الكود 000 ثم من خلال الــJVM

يعمل على كل الانظمة (Windows,Linux,MAC OS) و غيره000

اليس كذلك؟؟؟

ارجو اعطائى ارائكم

و شكرا لكم جزيل الشكر من اجل تعاونكم

#9

عفوا راماس على الخطأ ( توقعت الإسم رامس ) وهو إسم مشهور عندنا

وبالنسبة للسؤال ( HGB وفى وكفى)

وفي ملاحظة HGB عن تعاريف وشروط المترجم

#ifdef WINDOWS
#include <winsock.h>
#ifdef LINUX
#include <somthing I dont remember .h>

بصراحة أول مرة أشوف هذا التعريف ( ياترى جديد )

وهو تصريح لنظامين في مترجم واحد ؟ ( إذا كانت عندك معلومات أتحفنا بها )

بالنسبة لك أخي Petro

لا تعقد عمرك ولا شيء ( إنت في الإتجاه الصحيح )

لغة جافا ( تعمل على كل الأنظمة حتى الموبايلات)

في ملاحظة : بدأت شركات الموبايلات بصناعة مترجمات للغة السي

ولكن لغة جافا إلى الآن ليست عملية

قلنا إنها تشتغل في كل الأنظمة ( لماذا 90 % من برامج لينكس مكتوبة بالسي )

90 % من برامج وندوز بالسي كل الأنظمة المعروفة مكتوبه برامجها بالسي

شاهد الأنظمة المفتوحة المصدر

فكر وتجد الحل ( السي أسرع لغة - وأقدم لغة - وكل اللغات التي تراها بما فيها جافا أصلها لغة السي )

تعلم لغة السي في الحقيقة هو تعلم البرمجة

تتعامل مع الذاكرة والأجهزة كما هي ( تفهم كيف يعمل الجهاز )

ويالي بتسفيدة أكبر أن جافا تشبة السي بنسبة كبيرة تصل إلى 90 %

بمعنى لوتريد الإنتقال لجافا أو بيرل أو تعلم أي لغة برمجة ( وأنت ملم بلغة السي )

تحتاج شهر واحد أو كتاب واحد

طبعا هذا الكلام ماهو دعاية للسي ( ولكنة واقع هذة اللغة )

أما عن كل نظام لة كود ( تقصد أن لة خدمات مختلفة )

هذا شيء طبيعي ( ولو في علمك نظام لنكس فقط في إصداراتة المختلفة لة خدمات مختلفة )

هذا الشيء لا يعتبر مشكلة في البرمجة ( ولا يفرض حفظ الخدمات والدوال )

وهذا الكلام يعرفة المتمرسين في البرمجة

لأن كل دالة تراها يجب أن تعرف معناها فقط ( وطريقة كتابتها تكون سهلة )

خاصة مع المترجمات المتطورة التي تعطيك بارمترات الإدخال والإخراج - وتعرض لك الدالة

وبكتجربتها مرة وإثنين (تتعرف عليها )

أصلا في وندوز كل إصدار تطلع دوال جديدة ومجموع كل الخدمات كبير جدا يقدر بالآلف

وأكيد مو لازم تحفظها كلها

هذا مالدي لأقولة

وبلاتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#10

السلام عليكم ,,

أنا آسف أخطأت حيث الكود الي كنت قد قرأته سابقا على عجل كان كالتالي :

#include <stdio.h>
#include <io.h>

#include <stdio.h>
#include <iostream.h>

//#define LINUX /* define this if you are on linux   */
//#define WIN32 /* define this if you are on windows */

//#ifdef WIN32
#       include "io.h"
#       include "winsock2.h"      /* WSAGetLastError, WSAStartUp  */
#       define snprintf _snprintf
//#endif

//#ifdef LINUX
//#       include <netdb.h>         /* gethostbyname  */
//#       include <netinet/in.h>    /* htons          */
//#       include <sys/socket.h>
//#endif

ولم أنتبه أن كود المعرفات مغلق !! "تعليق "

اقتباس
وهو تصريح لنظامين في مترجم واحد ؟ ( إذا كانت عندك معلومات أتحفنا بها )

لكن ذلك ليس مستحيلا فالكود باستخدام مكتبة QT تقريبا واحد بين الوندوز واللنكس !! وال QT لمن لايعرف مكتة شبيهة بال MFC ,, ولم أتعامل معها قط ,, فقط رأيت لها كودا من قبل ,,

وكما قلت كثير من دوال ال API بن الوندوز واللنكس متشابهة ,,

سأبحث في الأمر أكثر وقمت بتحميل اللنكس وسأبحت فيه لنرى النتائج ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…