صفحه 1:
كروه كاربران لينوكس زنجان
شروع برنامه نويسى در لينوكس
Linux Programming
مهدی مقدم
صفحه 2:
ار ای اه رس ی ی را رن
کارهایتان استفاده میکنید و یا شاید تنها از مزایا یک 567۷6۲ مبتنی
Glee nation ی
شما كار کی دار و شاب هم شما هاار رو كتجكارى
Meee See mse ee ا Dae |
فعلی لینوکس و یا نوشتن برنامهای جدید برای لینوکس داشته باشید.
صفحه 3:
خوب در هر صورت, شاید شما دلایل کافی برای یادگرفتن برنامه
بویا لا
را ایا را ار
با
FAC Hen ee ln Cally alien ABN then
fae ee Nes cel miele egy
[۳ tbia mere
صفحه 4:
لینوکس بهشت برنامه نویسان
- ات ای سا ای بر یا وسات فان
كستريش ياقت: آنها دود به مسائل و مشكلات برنامه نويسى اشنا
ey een ا 00
گسترش یابد و تصحیح و اشکالزدایی (ودا060) آن نیز آسانتر باشد.
صفحه 5:
لینوکس يا فرصت شغلی ؟!
5
ا 0
111101111111111
در كشور به نظر مىرسد فرصتهاى شغلى بيشترى براى برنامه نويسان
لینعکس به وجود آید. البته أكر به فرصتهای شغلی در کشورهای دیگر
rere Ua 111111111111110
خودتان جوابتان را پیدا میکنید.
صفحه 6:
ترس
ا ا ل ا 1 ا ا ال 0
غلبه بر ترس از برنامه نويسى در لينوكس و
Rove ren res
صفحه 7:
جرا در لينوكس ا ا ال
مگه ویندوز چشه؟
را را eles ار
متعضبانه بگویید چرا باید چنین باشد؟ شابد هفت دلیل زیر شما را قانع کند
دليل يكم: لينوكس براي برنامهنويسي قانونهاي مخصوص به خود را دارد:
از جمله اينكه برنامه نبايد براي همه كاربران همه جيز را فراهم سازد. به
Ev ees ve-eate) ie Ceeoerregiey | eareecegeenrice v1 7 ve SEEN |enirol prt
Perea ROP Ces pee PS RE SURT DEES Cas pec Pe Cent we
ابزارهاي متعدد و متفركزي را.ذر اختبار برنامةنويسان قرآر مىدهد نا نيازهاق
فني خود را برطرف کنند.
صفحه 8:
وليل دوم: مدل مديريت بردازشكر لینوکس پیشرفته است, بینحوی که
DC rc eer rear oni KS erie apy ۳
۱۳۳ ی ازجا ميگوييم گه
a oe ها تبادل NOR HE و نقاضاى انكام قسمتي از عملياتي
CaS Tal ean eased tnt ec
دليل سوم: sang ale ani oS Reyne بل باه هگ
ا ا Boe عارش
انجام دهد و براي نامدهاي ديكو ای ( ناس « |
oy ۱۱5۲ 2 ۳ ال 10ت
sans pers NNUER ES ST
دلیل چهارم: در لینوکس مدل امنیت خاصي برقرار است که در آن همه
تن ارات کون ات وه امه
01 كه آز بيشترين أختيارات 50 rN Core 0
1 اداشكه باشد. ابي مدل |منيتي ردقي
برنامهنويسي 0 ا 0
أشاره كرد كه جون با توجة به 1 ان ات
ی و اه 0
صفحه 9:
رن
۳۳۹9 بنجم: اک جه شما 00 Tae به لاه
Sue U perp pert ica) عا
5250 به صورت
چندرشتهاي کا Se Ry kent ختصاص منایع
2 Clie
تا رس ی
eon nee Renan Pree se
Pear وهای هی
مس واه مان Tate 5 برنامه تويسا el
wail, aidly Garo aw pid
Pn دلیل هفتم
Gann anor Sie ee Perret iS)
ميدهد تا 9 Hea ۳۳۳۹ Pen
خود را با حداقل مقدار 4 a اشتراك كذارند. 160 , 5
Se ی فاد دروسیستم ها یوکس 1
verre
5 مج 2
۱
صفحه 10:
0501 0
00 ا erat el sy een
Cc
parle,
Php
Ajax
Asp
prel
2
python
Gambas
و غیره
برای هر کدام از اينها هم محیط های مختلفی عرضه شده
یرای نسخه های مختلف هم محدودیت نداریم (چون هسته در لینوکس ثابته)
صفحه 11:
ا
61 باشید یا 8۷2 با On ey ل 00-0 207
° 9 I Penis Pea a Sead
mee Lge واه به9 veneer tee
eae تاد .درل fee
ane ۳9 اسکلل
oes ری ناش ها جاک ایس ce soe Aen
ايد ۳ لفزار ویرل؛ مئ
0 007 515
مخت pac eer 0
داد تا مکش بل Seen en ee
pee ی 1
ما یک برنمه pa 7
شبختی در همان نرم an eee همه کارهای
All feat 0 فا مد
meh renee 7
صفحه 12:
perm feed (7 9۳ را چیزی شبیه >
MS oe eee
۳0
eerie هه تشه | ی
2201111100
برنامه نوبسی اوپنسورس آشنا شویم:
«اکلیپس»
صفحه 13:
۰9 Eclipse
به ساده ترين زبان ممكن, اكلييس. معادل رايكان و
۱ 7 ener eCre rr)
ويزكيهاى يى 105 ى حرفه أى را دارد و افزون برآن
pres 0
Leegerery 6] Penis ل 00
1
همه برنامه نویسان اوپن سورس از سراسر دنیا باهم
می نویسند.
صفحه 14:
حالا مواد لازم س داريم
پس می ریم سراغ اشپزی
صفحه 15:
در لینوکس دو نوع برنامه وجود دارد ۵016 ۴6۱۷۲۵ و
5
0
0 nee acre tearer
TESTS Sal as Ree ee ۳
رز ا ا ا
[ل نیت ال ان ست تی رت وا ۱
ی حالا در ضمن کار با لنوکس مت
همونجورى د
NE! 7 ی ال ی
وا سره خی بدا ند
۷ Pera arene ee eae rer ee Ton
کر ات در ور که در al Suis pen
2
صفحه 16:
شروع کد نویسی :
حالا احتیاج به یک ادیتور متن کد:
Gedit *
۹-۱2
۷۱۳ ۴
Nano *
Emacs *
صفحه 17:
gcc = GNU C compiler
gcc - -version #
gcc test.c -o test#
gcc -wall test.c -o test#
30
gcc -S test.c -o test.s#
gcc -E test.c -o test#
گروه کاربران لینوکس زنجان
شروع برنامه نویسی در لینوکس
Linux Programming
مهدی مقدم
لینوکس
شاید شما از لینوکس به عنوان سیستم عاملی ( )OSپرقابلیت برای
کارهایتان استفاده میکنید و یا شاید تنها از مزایا یک Serverمبتنی
بر لینوکس در شبکه خودتان استفاده میکنید .شاید لینوک7س برای
شما کاربرد کمی دارد و یا شاید هم شما تنها از روی کنجکاوی
لینوکس را نصب کردید .و باز شاید هم عالقه به توسعه پروژههای
فع7لی لینوکس و یا نوشتن برنامهای جدید برای لینوکس داشته باشید.
خوب در هر صورت ،شاید شما دالیل کافی برای یادگرفتن برنامه
نویسی با لینوکس داشته باشد.
بنا به دالیل زیادی عدهای از کاربران و برنامه نویسان در دیگر سیستم
عاملها ،این تصور را دارند برنامه نویسی برای لینوکس وحشتناک و
بسیار دشوار میباشد و یا اینکه زبانها در لینوکس محدود به Cو +C
+هستند و یا اینکه لینوکس فاقد محیطهای توسعه مجتمع برنامه
نویسی ) )IDEمناسب است!
لینوکس بهشت برنامه نویسان
برخالف اینگون7ه عقای7د ،لینوک7س توس7ط هکره7ا و برنام7ه نویسان
گس7ترش یاف7ت ،آنه7ا خود ب7ه مس7ائل و مشکالت برنام7ه نویس7ی آشنا
بودند و به این ترتیب آنها سیستمی را تولید کردند که آسانتر و سادهتر
گسترش یابد و تصحیح و اشکالزدایی ( )Debugآن نیز آسانتر باشد.
لینوکس یا فرصت شغلی ؟!
همانطور ک7ه میدانی7د ،در کشور خودمان مدت7ی اس7ت ک7ه پروژههای7ی در زمینه
لینوک7س و کاربرد آ7ن آغاز شده ،ک7ه فرص7تها شغل7ی برای بعض7ی از برنامه
نویس7ان لینوک7س فراه7م شده ،البت7ه در آینده نزدی7ک ب7ا توس7عه کاربرد لینوکس
در کشور ب7ه نظ7ر میرس7د فرص7تهای شغل7ی بیشتری برای برنام7ه نویسان
لینوک7س ب7ه وجود آید .البت7ه اگ7ر ب7ه فرص7تهای شغل7ی در کشورهای دیگر
عالقمن7د هس7تید ،تنه7ا در چن7د ت7ا از س7ایتهای متناس7ب کاریاب7ی جس7تجو کنید،
خودتان جوابتان را پیدا میکنید.
ترس
اما اولین کاری که باید برای شروع انجام بدید،
غلبه بر ترس از برنامه نویسی در لینوکس و
خود لینوکس است.
چرا در لینوکس برنامه نویسی کنیم؟
مگه ویندوز چشه؟
ممكن است خيلي از شما طرفدار سيستمعاملهايي مانند ويندوز باشيد و
متعصبانه بگوييد چرا بايد چنين باشد؟ شايد هفت دليل زير شما را قانع كند.
دليل يكم :لينوكس براي برنامهنويسي قانونهاي مخصوص به خود را دارد:
از جمله اينكه برنامه نبايد براي همه كاربران همه چيز را فراهم سازد .به
عنوان مثال ،در محيط برنامهنويسي متني نيازي نيست كه آن محيط بتواند
ايميل هم بفرستد و تمام تمركز كاري روي هدف اصلي برنامه است .همچنين
ابزارهاي متعدد و متمركزي را در اختيار برنامهنويسان قرار ميدهد تا نيازهاي
فني خود را برطرف كنند.
دليل دوم :مدل مديريت پردازشگر لينوكس پيشرفته است ،به نحوي كه
اگر پروسهاي داراي مجوزهاي الزم باشد ميتواند پروسههاي ديگري را
ايجاد كند كه ما به آنها پروسههاي بچه يا Child processميگوييم كه
ميتوانند با آنها تبادل اطالعات كنند و تقاضاي انجام قسمتي از عملياتي
كه به آنها واگذار شده است را از آنها داشته باشند.
دليل سوم :خيلي كم پيش ميآيد كه لينوكس مانند ويندوز يكباره هنگ
كند و با صفحه آبي مرگ روبهرو شويم .زيرا سيستمعامل براي
kernelخود CPU ،و RAMخاص اختصاص ميدهد تا كارهاي جاريش را
انجام دهد و براي برنامههاي ديگر مانند مرورگر يا برنامههاي كاربردي از
User Spaceاستفاده ميكند و نميتواند به طور مستقيم به Kernel
Spaceدسترسي داشته باشد( .اما)
دليل چهارم :در لينوكس مدل امنيت خاصي برقرار است كه در آن همه
د كاربر
كاربران تعريف شده براي سيستم با هم برابر نيستند (مانن
Rootكه از بيشترين اختيارات برخوردار است) و هر كاربر معمولي بايد
دسترسي استفاده از امكاني را داشته باشد .اين مدل امنيتي روي
برنامهنويسي تأثيرات مثبتي خواهد گذاشت .مثال ً ميتوان به اين نكته
اشاره كرد كه چون با توجه به مدل امنيتي لينوكس تهيه شده پس
سيستمي هم كه توليد خواهد شد به يقين امنيت خوبي خواهد داشت.
دليل پنجم :اگر چه شما در لينوكس فكر ميكنيد صاحب
CPUهستيد ،اما اينطور نيست؛ شما به طور مجازي به CPU
احاطه داريد CPU .در سيستمعامل لينوكس به صور7ت
چندرشتهاي كار ميكند و روي پردازشگر در زمينه اختصاص منابع
و محاسبه براي هر Taskمديريت خاصي وجود دارد.
دليل ششم :لينوكس به صورت پيشفرض به گونهاي طراحي
شده كه چند كاربر بتوانند همزمان با هم كار كنند و برنامههايي كه
در محيطهاي لينوكسي نوشته و استفاده مي شوند بايد با دقت
طراحي شوند .برنامهنويسان نبايد فكر كنند كه ميتوانند به منابع
دسترسي محض داشته باشند.
دليل هفتم :مهمترين دليلي كه ميتوان ذكر كرد اين است كه
در سيستمعامل لينوكس مكانيزم ( IPCسرنام Interprocess
)Communicationبه برنامهها امكان ميدهد تا اطالعات و منابع
خود را با حداقل مقدار Overheadبه اشتراك گذارند IPC .به
سه حالت ميتواند در سيستمهاي لينوكس كارايي داشته باشد:
-1پيغامها
Semaphores -2
-3استفاده از حافظه مشترك
به چه زبان های می شود در لینوکس برنامه نوشت؟
لیست تمام زبان های تحت لینوکس بیشتر از اونیه که فکر می کنید نمی شه اینجا بنویسم :
C
++C
Php
Ajax
Asp
prel
java
python
Gambas
و غیره
برای هر کدام از اینها هم محیط های مختلفی عرضه شده
برای نسخه های مختلف هم محدودیت نداریم (چون هسته در لینوکس ثابته)
چیست
؟
IDE
تفاوتی نمی کند که PHPکار باشید یا Javaباز C++ ،یا Paytonیا .VBبدون
یک IDEکار شما از ریشه لنگ است.
IDE م7خففواژ7گان Integrated Development Environmentا7س7تک77ه
م7عنای7شم7یش77ود « :م7حیط ت777وس7عه ی77کپار7چ7ه».درآ7نروز7هایآ7غاز7ی7نت777ار7ی7خ
7ن ل77ینکک77رد7نو ا7ش7کا7ل
7ن ا7س7مبلک77رد ،
7تن ک77ام7پای7لک77رد ،
7سی ک77ار ن77وش ،
ب777رنام7ه ن77وی ،
زدا7ی7یب777رنام7ه ها ج7دا گ77ان7ه و7با ا7بزار7هایج7دا از ه7م ا7ن7جام م7یش77د .ب777رنام7ه ن77وی7س
ب777اید ک77د م7نبع 7ب777رنام7ه ب777ا ی77کن77رم ا7فزار و7یرا7س7تار ک77ه م7یت777وا7ن7ستف77ای7لا7س7کی
م7حضب777سازد م7ین77وش7تو س77پسآ7نرا ب777ه خ7ورد ک77ام7پای7لر م7یداد .ک77ام7پا7لیر ی77ک
ف77ای7لا7س7مبلیب777ه او ت777حوی7لم7یداد و او س77پسا7ی7نف77ای7لرا ب777ه خ7رد ا7س7مبلر م7ی
داد ت777ا ی77کف77ای7لآ7ب7جکتدر7یاف7تک77ند ت777ا در پ777ایانا7ی7نف77ای7لآ7ب7جکترا ب777ا ک77مک
ل77ینکر ،ب777ه ی77کف77ای7لا7جرا7ی7یت777بدی7لک77ند.
اما یک برنامه نویس C ++ویندوز هیچیک از این ابزارها را نمی بیند و آنها را
نمی شناسد .ک7لید این خوشبختی در همان نرمافزار غول پیکر و همه کارهای
است که آنرا با نام«ویژوال سی»می شناسیم .البته حاال دیگر فقط محدود به
سی نیست و نامش «ویژوال استادیو» است.
آیا چیزی شبیه ویژوال استادیو (یا حتی بهتر
از آن) برای لینوکس یا به صورت رایگان
هست؟
پاسخ مثبت است و در حقیقت میخواهیم با
یکی از شاهکارهای
برنامه نویسی اوپنسورس آشنا شویم:
«اکلیپس»
چیست
؟
Eclipse
به ساده ترین زبان ممکن ،اکلیپس 7معادل رایگان و
اوپنسورس ویژوال استادیو است .اکلیپس 7تمام
ویژگیهای یک IDEی حرفه ای را دارد و افزون برآن
چیزهای دیگری هم دارد که در بسیاری از محصوالت
دیگر یافت نمی شود .اکلیپس 7کامال با جاوا نوشته شده و
بنابراین به سیستمعامل وابستگی ندا رد .اکلیپس 7را
همه برنامه نویسان اوپن سورس از سراسر دنیا باهم
می نویسند.
حاال مواد الزم رو داریم
پس می ریم سراغ آشپزی
در لینوکس دو نوع برنامه وجود دارد Execute ableو
script
اولی به صورت مستقیم د7ر سیستم اجرا شده اما اسکریپت
ها برای اجرا نیاز به یک مترجم یا مفسر دارند و لذا از طریق
یک برنامه دیگه اجرا می شوند (نه به صورت مستقیم)
اولی نمونه فایل های exe.د7ر ویندوز هست و اسکریپت ها
مثل bat , .cmd.
همونجوری که تا حاال در ضمن کار با لینوکس متوجه شدید
بر خالف ویندوز قایل های اجرایی د7ر لینوکس احتیاج به نام
خاص و یا پسوند خاصی ندارند
و البته همونجوری که میدونید در لینوکس آد7رس ها با /از
هم جدا میشن در صورتی که در ویندوز آدرس دهی با \
انجام میشه
شروع کد نویسی :
حاال احتیاج به یک ادیتور متن کد:
Gedit
Kate
Vim
Nano
Emacs
gcc = GNU C compiler
gcc - -version #
gcc test.c -o test#
gcc -wall test.c -o test#
test/.#
gcc -S test.c -o test.s#
gcc -E test.c -o test#