محاسبات ابري، جاده موفقيت شرکتهاي کوچک (بخش دوم)
3. سرويسهاي وب داخل ابر
درست همانند SaaS، توليدکنندگان سرويسهاي وب، APIهايي را ارائه ميدهند که توسعهدهندگان وب به سادگي بتوانند از کاربردشان در تمام اينترنت و نه فقط در يک نرمافزار استفاده کنند. اين خدمات برد وسيعي دارد، از ارائه اطلاعات تجاري ــ نرخ سهام و سود ارز ــ گرفته تا مثلا اطلاعاتي که نقشه گوگل، اداره پست آمريکا و يا شبکه بلومبرگ در اختيار توسعهدهندگان ميگذارد. حتا به کار گيري کارتهاي اعتباري بانکها نيز از انحصار آنها خارج شده و هماکنون ميتوان به شيوهاي کاملا امن در هر وبسايتي انتقال پول را انجام داد.
4. سكوي نرمافزاري بهعنوان يك سرويس
يکي ديگر از انواع SaaSهاست که در اين شکل، محيط برنامهنويسي را درست همانند يک سرويس به توسعهدهندگان ميدهد. شما ميتوانيد برنامههاي خودتان را که بر روي زيرساخت توليد کننده اجرا ميشود بسازيد و از طريق اينترنت به کاربرانتان ارائه کنيد. اين سرويسها که درست همانند لگو بازيهاي بچگيمان است، به خاطر ديدگاه سازندهاش، از نظر قابليت محدوديت دارد و امکان آزادي کامل در آن نيست، اما نسبت به هزينه انجام شده، همواره سود بيشتري در مقابل ديگر روشهاي بکارگيري فناوري اطلاعات در آن وجود دارد.
5. سرويسدهندگان مديريت شده
يکي از قديميترين روشهاي محاسبات ابري، سرويسي است که به جاي کاربر هدف، به جامعه فناوري اطلاعات عرضه شود. توليد نرمافزاري براي چک کردن ويروس ايميلها يا نرمافزار مديريت فرآيندهاي هر سيستم در سازمان. شرکتهاي قديمي زيادي در اين زمينه فعالاند و مثلا ميتواند به سرويس ضداسپم پستيني (Postini) اشاره کرد که توسط گوگل بهکار گرفته شده است.
6. سکوهاي خدمات تجاري
بهگونهاي فرزند دورگه SaaS و سرويسدهندگان مديريت شده بهحساب ميآيد، چرا اين سرويس خود را بهعنوان مرکزي براي ارتباط کاربران جا ميزند. مثلا سيستمهاي خرج و مخارج که در آن کاربران ميتوانند کارهايي که يک منشي براي يک مدير انجام ميدهد را از نرمافزاري عمومي بگيرند که ميتواند با فهميدن نيازهاي درخواستي کاربر، خدماتي که مخصوص اوست به او بدهد. ميتوانيد چيزي شبيه به دبيرخانه ديجيتال را در نظر بگيريد.
7. يکپارچگي با اينترنت
يکپارچه سازي خدمات ابري با اينترنت در همين روزهاي اخير اتفاق افتاده است، OpSource، شرکتي که خودش را يک SaaS کار ميداند، اخيرا با Boomi يکي ديگر از شرکتهاي اين زمينه شريک شده است تا تمام فناوري نرمافزاري خود را روي اينترنت منتقل کند.
امروزه و با توجه به کم اتفاق افتادن اين يکي شدنهاي تجاري، شايد مفهوم محاسبات ابري، يا همان بهکارگيري کامپيوتر در فضاي ابريشکل اينترنت، هنوز بهطور کامل جا نيافتاده است. اما از طرف ديگر، با ظهور مجازيسازي و معماري سرويسگراي نرمافزارهاي سازماني، جادهاي روشن شده است به سوي محاسبات ابري، چرا که رويکرد سازمانها و شرکتها به سوي دريافت سرويس و نه نرمافزار است و باعث ميشود ماهيت فيزيکي نرمافزار ارزش خود را از دست بدهد.
@@@@
فراخوان كنفرانس لينوكس CE
كنفرانس لينوكس جاسازيشده ششم تا هشتم آوريل سال 2009 در سانفرانسيسكو برگزار ميشود. انجمن لينوكس CE حامي مالي برگزاري اين كنفرانس با بيان اين مطلب، به دنبال حضور كساني است كه در اين عرصه فعاليت داشتهاند.
اين كنفرانس همراه با گردهمايي بهاري بنياد لينوكس برگزار ميشود و افراد مايل به حضور در اين كنفرانس ميتوانند تا 16 ژانويه 2009 آمادگي خود را اعلام كنند.
منبع: embeddedlinuxconference.com
مايكروسافت نخواست با 400 هزار دلار لينوكس را كنار بزند
مايكروسافت اعلام كرد كه پيشنهاد چهارصد هزاردلارياي را براي كنار گذاشتن لينوكس و ورود خود به دولت نيجريه را رد كرده است. اين مقدار را يكي از دلالهايي كه ميتوانست نرمافزارهاي مايكروسافتي را به جاي لينوكس در دولت نيجريه به كار گيرد، به اين شركت پيشنهاد داده بود و قرار بود به جاي لينوكس، هزاران لپتاپي كه قرار بود براي مدارس اين شركت تهيه شود را با ويندوز تغذيه كنند.
@@@@
روبي؛ زبان برنامهنويسي مولد
هرچند سال يکبار يک اتفاق بزرگ در جهان برنامهنويسي، مسير برنامهنويسي را تغيير ميدهد. زبان برنامهنويسي روبي، يکي از اين اتفاقهاي بزرگ است.
روبي1 يک زبان ديناميک، همهمنظوره، سطح بالا و شييگرا2 است که دستورالعملهاي آن از پرل3 و ديگر ويژگيهاي آن از اسمالتاک1 الهام گرفته شده است. روبي همچنين از ساختارگرايي و انعکاس پشتيباني ميکند. علاوه بر استفاده از سيستم ديناميک، مديريت حافظه در روبي کاملا خودکار است. بنابراين روبي از بسياري از جهات شبيه پيتون، پرل و ليسپ است.
پيدايش
روبي در اواسط دهه 1990 در ژاپن و توسط يوکي هيرو ماتسوموتو که به متز5 نيز معروف است پا به عرصه وجود گذاشت. ماتسوموتو در مورد نامگذاري روبي ميگويد: «روبي که در لغت بهمعناي ياقوت است سنگ ماه تولد يکي از همکاران من است.» روبي سنگ متولدين ماه جولاي است.
ماتسوموتو که خود به زبانهاي ليسپ، پرل، اسمالتاک و پايتون6 مسلط است، در مورد دليل پيدايش روبي ميگويد: «من بهدنبال يک زبان اسکريپتنويسي ميگشتم که از پرل قدرتمندتر و از پايتون شييگراتر باشد. از آنجا که چنين زباني وجود نداشت، تصميم گرفتم زبان ايدهآل خود را پديد آورم.» به اين ترتيب روبي عضو جديدي از خانواده پرل و پايتون بهشمار ميرود.
امکانات
روبي داراي کتابخانههاي گستردهاي است که به همه نيازهاي برنامهنويسان بهخوبي پاسخ ميدهد. روبي همچنين کلاسهاي FTP، پشتيباني از CGI، پارسرهاي XML، کتابخانههاي پايگاههاي داده، GTK و Qt و حتي يک کتابخانه BTree برخوردار است. کتابخانههاي روبي قابل اتصال به کتابخانههاي پايتون هستند و اين مساله پايه قويتري را براي برنامهنويسي روبي فراهم ميکند. روبي توسط اکثر سيستم عاملها از جمله لينوکس، Mac OS X، مايکروسافت ويندوز، ويندوز CE، و يونيکس پشتيباني ميشود. اجراي روبي روي يونيکس بهترين کارايي را دارد.
متغيرهاي روبي در پنج سطح جهاني7، محلي، کلاس، بلوک و نمونه8 تعريف ميشوند. پشتيباني از مديريت استثناها و عبارات منظم، جمعآوري اطلاعات زايد بهطور خودکار، بازنويسي اپراتورها، قابلحمل بودن و برخورداري از کتابخانههاي استاندارد بزرگ از مهمترين ويژگيهاي روبي بهشمار ميروند.
نسخه استاندارد روبي با استفاده از C نوشته شده است و طراحي آن بهگونهاي است که تنها در يک مرحله تفسير ميشود. اکنون، نسخههاي متعددي از زبان روبي وجود دارد که هريک با ديدگاهي خاص خود، روبي را پيادهسازي کردهاند. مهمترين اين نسخهها عبارتند از: MRI، JRuby و IronRuby. پيادهسازي موسوم به MRI9 متداولترين نسخه مورد استفاده است و پس از آن JRuby قرار دارد که يک پيادهسازي مبتني بر جاوا است. هر سه نسخه فوق کد را در زمان نوشته شدن کامپايل ميکنند. اين ويژگي از مهمترين تواناييهاي اين سه نسخه از روبي است. زيرا برنامهنويس بهسرعت از اشتباه خود آگاه ميشود.
اصول بنيادي
روبي از يک اصل ساده که اصل بهحداقل رسانيدن غافلگيري (POLS) ناميده ميشود، پيروي ميکند: زبان برنامهنويسي بايد بهنحوي رفتار کند که سردرگمي و غافلگيري برنامهنويس را به حداقل برساند. ماتسوموتو ميگويد: «روبي بهمنظور افزايش سرعت برنامهنويسان در توليد کد و تبديل برنامهنويسي به کاري جذاب و سرگرمکننده نوشته شده است. طراحي واسط کاربر روبي نيز از همين اصل پيروي ميکند.» او همچنين تاکيد ميکند که روبي نيازهاي انسان را بر نيازهاي رايانه مقدم ميشمارد.
بهعقيده ماتسوموتو، مردم و بهخصوص مهندسان رايانه، بر ماشينها تمرکز ميکنند. آنها در هنگام طراحي سيستمها به اين ميانديشند که چه کاري سيستم را سريعتر و بهرهوري آن را بيشتر ميکند. اما آنچه که ما به آن نياز داريم وجود سيستمهايي است که براساس سادهتر کردن کار ما با ماشينها يا آسانتر کردن برنامهنويسي طراحي شده باشند.
سرعت توسعه کد
سرعت کدنويسي برنامهنويسان در طي سالهاي گذشته رشد چشمگيري داشته است. هرچند آمارهاي رسمي در اين زمينه موجود نيست، اما بهطور متوسط هر پنج سال يکبار سرعت آمادهسازي نرمافزارها دو برابر ميشود.
از اين گذشته اکنون منحني توليد نرمافزارهاي قابل نگهداري، رشد خطي دارد. بخش اعظم اين سرعت مربوط به ابزارهايي است که برنامهنويسان استفاده ميکنند و در قلب اين ابزارها زبان برنامهنويسي قرار دارد.
زبانهاي برنامهنويسي در اصل مشابه يکديگرند. در مقايسه زبانهاي گوناگون، شباهتهاي کلي زبانها از تفاوتهاي آنها بيشتر است. با اين حال، تفاوتهاي موجود در ميان زبانهاي مختلف اثر قابلملاحظهاي بر حل مسايل، يافتن راه حل و برهمکنش انسان و رايانه دارند. بهعنوان مثال، در زبان ليسپ، زباني که زيبايي فوقالعاده و سادگي در مفاهيم را در هم آميخته است، بخش عمده تواناييهاي زبان در خدمت رايانه قرار گرفته است و نه در خدمت انسان. زباني که تفسير آن ساده است، الزاما زبان سادهاي براي برنامهنويسي نيست و اين مسالهاي است که اغلب برنامهنويسان آن را تجربه کردهاند. شگفت انگيزترين ويژگي ليسپ اين است که نشان ميدهد چگونه ميتوان با کمترين تعداد قوانين يک زبان رايانهاي قدرتمند خلق کرد. در مقابل، روبي چنان هنرمندانه نوشته شده است که کد آن مانند شعر بهنظر ميرسد.
يک مطالعه بسيار جالب در زمينه سرعت توسعه کد نشان ميدهد که سرعت توسعه کد رابطه مستقيم با تعداد خطوط کد نوشته شده دارد. تعداد خطوط کد در پروژههاي نوشته شده با++ C و جاوا تقريبا دو برابر تعداد خطوط پروژه پايتون يا پرل است. به اين ترتيب توسعه کد در C++ و جاوا دو برابر زمان ميبرد. نوشتن کد با روبي سرعت توسعه کد را به مراتب بيشتر از پرل و پايتون افزايش ميدهد و در اين زمينه از آنها پيشي ميگيرد. دستورات روبي بسيار ساده و قابل درک هستند و کد روبي بهزبان طبيعي بسيار نزديک است. بهعنوان مثال، در روبي از نقطهويرگول (سميکالن) استفاده نميشود. عدم وجود عواملي نظير نقطهويرگول که در برنامهنويسي وقفه ايجاد ميکند، سبب ميشود که برنامهنويسي يک روند سادهتر و روانتر پيدا کند. در حقيقت سادگي دستور زبان روبي و سهولت تعريف کردن کلاسهاي جديد سبب ميشود که نوشتن کلاسها ساده شده و از آنها در تست کد در حد کلاس استفاده شود. در نتيجه طراحي شييگرا بسيار سريع و ساده ميشود. به اين ترتيب برنامهنويس درصدد جستجوي راهحلهاي ديگر بر نميآيد.
ويژگيهاي انحصاري
برخي از ويژگيهاي روبي، در زبانهاي ديگر وجود ندارند. روبي از ساختار closure پشتيباني ميکند. در اين ساختار مسووليت هر بخش از کد بر عهده شيي مناسب قرار ميگيرد و کد حاصل کد خواناتري خواهد بود. نوشتن حلقههاي for و while در روبي نادر است. همچنين پيادهسازي ساختارهايي نظير "each" که احتمال رخداد خطا در آن کمتر است، بهسادگي امکانپذير است.
در پروژههاي پيچيده مساله قابليت نگهداري کد، به يکي از مسايل مورد بحث تبديل ميشود. طراحي شييگراي مناسب به برنامه ساختار مناسب داده و کد برنامه را منطقي و واضح ميکند. آنچه که مسلم است، اين است که همه زبانهاي شييگرا تا حدي از شييگرايي پشتيباني ميکنند. بهعنوان مثال زبان C++ بيشترين پشتيباني را از شييگرايي بهعمل ميآورد در حاليکه جاوا در اين زمينه اندکي ضعيفتر عمل ميکند. اما روبي از نظر سادگي در نحوه استفاده و قابل پيشبيني بودن از همه زبانهاي ديگر پيشي گرفته است.
محدوديتها
مانند همه زبانهاي ديگر، به روبي نيز انتقاداتي وارد است. سرعت اجراي کد روبي در مقايسه با بسياري از زبانهايي که کد را کامپايل ميکنند، پايين است. سرعت روبي با سرعت زبانهايي که از مفسر استفاده ميکنند و ديگر زبانهاي اسکريپتنويسي مانند پرل و پايتون قابل مقايسه است. تعريف متغيرها در روبي بسيار ساده است و تنها با تخصيص يک مقدار به متغير ميتوان يک متغير جديد تعريف کرد. اشتباههاي تايپي ميتوانند سبب معرفي متغيرهاي تازه شده و منجر به بروز رفتارهاي غيرمنتظره شوند. بهدليل ديناميک بودن انواع داده در روبي، اگر به متغيري مقداري از نوع دادهاي ناهماهنگ نسبت داده شود، خطاهاي زمان اجرا رخ خواهند داد.
در برخي از زبانها تبديل انواع بهطور خودکار انجام ميشود، يا اشتباه در مقداردهي توسط مفسر زبان به برنامهنويس اعلام ميشود اما روبي فاقد مکانيسمي براي رفع اين مشکل است. روبي از رشتههاي چندبايتي و نيز از يونيکد پشتيباني نميکند. همچنين در حال حاضر سيستم روبي فاقد يک تعريف معين و استاندارد است.
ماتسوموتو اميدوار است که در آيندهاي نهچندان دور مستندات مربوط به يک تعريف مشخص از روبي تکميل شوند و روبي استاندارد ايزو دريافت کند.
قالب کاري
قالب کاري روبي، روبيرويريل10 يا به اختصار ROR ناميده ميشود. ROR يک قالب کد باز تحت وب است که در ميان توسعهدهندگان کدهاي تحت وب طرفداران زيادي دارد. ROR براي توسعه پروژههاي کوچک و مبتني بر سيستم کلاينت-سرور مناسب است. با استفاده از ROR برنامهنويس تنها بايد براي موارد خاصي که در قالب پيشبيني نشده است کد بنويسد. بهعنوان مثال اگر در برنامه کلاسي بهنام "فروش" وجود داشته باشد، در پايگاه دادهها جدولي به همين نام ايجاد ميشود. برنامهنويس تنها زماني نياز به کدنويسي مجدد دارد که نام جدول به "کالاهاي فروخته شده" تغيير کند. به اين ترتيب استفاده از ROR حجم کدنويسي را کاهش ميدهد. از ديگر مزاياي ROR ميتوان بهوجود کتابخانههاي گسترده جاوا اسکريپت و خروجي به فرم HTML و XML اشاره کرد. ROR در سال 2007 در در سازمان ثبت اختراعات آمريکا موسوم به USPTO به ثبت رسيده است.
پينوشت
1. Ruby
2. Object Oriented
3. Perl
4. Smalltalk
5. Matz
6. Python
7. Global
8. Instance
9. Matz’s Ruby Interpreter
10. Ruby on Rails
@@@@
خوانايي بيشتر براي درك بهتر
پيش از اين در مورد خوانايي و قابليت حمل زبانهاي برنامهنويسي صحبتهايي داشتهايم. همانطور كه ميدانيد ساختار برخي زبانها به شكلي طراحي شده است كه به زبان گفتار نزديك بوده و با خواندن آن تا حدودي ميتوان منطق آن را درك كرد و در مقابل بعضي زبانها هستند كه 2 مفهوم كاملا مشابه با تفاوتي بسيار كوچك از هم شناخته ميشوند و به اين ترتيب گاهي خواننده را به اشتباه مياندازند و شايد خود نويسنده برنامه نيز در نوشتن آن اشتباه كرده و حتي پس از پي بردن به اشكال، در يافتن و اشكالزدايي آن به مشكل بر بخورد.
نقش برنامهنويس در خوانايي
علاوه بر اين كه يك زبان و نحوه پيادهسازي آن در خوانايي يك برنامه نقش دارد، نقش بزرگتر در اين زمينه، برنامهنويس و طريقه نوشتن او ايفا خواهند كرد. هرچقدر يك زبان، قابليتهاي زيادي داشته باشد، رعايت نكردن برخي اصول و عدم توجه برنامهنويس به آنها ميتواند در نهايت به يك برنامه نامنظم و ناخوانا منتج شود.
اكثر زبانهاي برنامهنويسي سطح بالاي امروزي انواع كاراكترهاي كنترلي و فاصله را در برنامه ناديده ميگيرند.
معمولا به غير از ثابتهاي رشتهاي كه هر چه در آن قرار دهيم همان را در خروجي دريافت خواهيم كرد، ميتوان در هر جاي برنامه به هر تعداد از كاراكتر tab يا space استفاده كرد يا به تعداد دلخواه، بين خطوط enter زد و اطمينان داشت كه هيچيك از آنها در برنامه نهايي تاثير نخواهد داشت. (البته بين كلمات كليدي و اجزاي برنامهنويسي وجود يك كاراكتر فاصله الزامي است و در غير اين صورت كامپايلر اعلام خطا خواهد كرد. منظور ما، كاراكترهايي اضافه، علاوه بر آنهايي كه لازم هستند؛ است).
اعمال تورفتگي در متن برنامه
از اين خصوصيت كه كامپايلر، كاراكترهاي فاصله اضافه را ناديده ميگيرد ميتوان به بهترين شكل در بالا بردن نظم و خوانايي برنامه استفاده كرد. در ساختارهاي تو در تو و بلاكهاي داخل هم، مفهومي به نام تورفتگي يا فرورفتگي وجود دارد كه رعايت آن به برنامه نظم داده، خوانايي آن را بالا برده و اشكاليابي و اشكالزدايي آن را ساده ميسازد، اما رعايت نكردن آن در خروجي برنامه بيتاثير است و تنها ممكن است برنامهنويس را دچار اشتباه و سردرگمي كند. تورفتگي به اين شكل است كه هنگامي كه يك بلاك جديد از برنامه آغاز ميشود، دستورات داخل آن بلاك نسبت به بلاك بيروني از چند كاراكتر جلوتر آغاز شود و تمام دستورات داخل آن بلاك زير هم و از چند كاراكتر جلوتر ادامه پيدا كنند. در صورتي كه درون آن بلاك نيز بلاك جديدي باز شد، باز هم دستورات آن نسبت به اين بلاك از چند كاراكتر جلوتر شروع شود. در صورت پايان يافتن آن بلاك نيز دستورات بعدي، به همان تعداد كاراكتر عقبتر ادامه پيدا كنند. معمولا در IDE زبانهاي برنامهنويسي، هنگامي كه چند كاراكتر به جلو برويم براي راحتي برنامهنويس، هر بار كه enter بزنيم، خط جديد از محل شروع خط قبلي آغاز ميشود و اين كار به طور خودكار تا هر جا كه لازم باشد انجام ميشود. يك نمونه از ساختار تورفتگي را در مثال زير مشاهده ميكنيد:
( )function f
begin
…
…
If (…) then
begin
…
…
If (…) then
…
…
;end
;end
به دليل اينكه فاصلههاي اضافي تاثيري در نتيجه برنامه ندارند گاهي ميتوان همه برنامه را نيز در يك خط نوشت و تمام دستورات را به دنبال هم قرار داد. اين كار به هيچ عنوان توصيه نميشود. براي راحتي درك برنامه بهتر است هر دستور در يك خط نوشته شود و دستورات بلند، حتيالامكان در جاي مناسبي به دو بخش يا بيشتر شكسته شده طوري كه انتهاي دستور از نمايشگر خارج نشود و در صورت چاپ آن روي كاغذ، عرض كاغذ براي تمام قسمتهاي آن دستور كافي باشد. گاهي نيز لازم است براي تاكيد بيشتر روي دو دستور كه به هم وابستهاند آنها را در يك خط نوشت. (در صورت كوتاه بودن دستورات) به طور كلي چينش چگونگي نظمبخشي به خطوط برنامه كاملا به سليقه برنامهنويس مربوط ميشود و توجه كافي در اين زمينه مسلما به نفع او بوده و در نتيجه كار او هم از نظر كيفي و هم زماني تاثيرگذار خواهد بود.
نامگذاري مناسب
بعضي زبانهاي قديمي در نامگذاري شناسهها محدوديت قائل ميشوند. اما اكثر زبانهاي امروزي نامگذاري شناسهها با طول بلند را نيز جايز ميشمارند. ميتوان از اين قابليت نيز در جهت بالا بردن خوانايي برنامه و توانايي درك آن استفاده كرد.
به عنوان مثال در يك برنامه براي نگهداشتن «نام پدر» ميتوان از متغيري به نام A استفاده كرد. يا با كمي تخفيف از حرف F (حرف اول كلمه Father) استفاده كرد! اما اين يك اشكال بزرگ دارد. اگر شخص ديگري برنامه شما را ببيند متوجه نميشود كه در منطق برنامه شما، متغير a يا f براي نگهداري چه مفهومي در نظر گرفته شده است. خود برنامهنويس نيز ممكن است پس از گذشت مدت زمان طولاني، با رجوع به برنامه خود، به خاطر نياورد كه a يا f را به چه منظوري تعريف كرده است. بنابراين بهتر است براي متغيرها نام مناسب و مربوط به محتواي آن انتخاب كنيم. مثلا در مثال قبل، انتخاب شناسه father name در هر زمان براي هر كسي گوياي اين خواهد بود كه اين متغير براي نگهداري «نام پدر» در نظر گرفته شده است.
برخي برنامهنويسان با دانستن اين مساله باز ترجيح ميدهند از نامهاي كوتاه استفاده كنند و دليل آنها براي اين كار نيز سادگي و سرعت تايپ و جلوگيري از خط در تايپ نامهاي طولاني است. اين دليل در ويراستارهاي قديمي تا حدي قانع كننده است. اما در ويراستارهاي جديد اغلب امكاني به نام Autocomplete وجود دارد كه به برنامهساز امكان ميدهد با كمترين ميزان تايپ و تنها با وارد كردن حروف اول شناسه، گزينه مورد نظر خود را از ليست ظاهر شده به راحتي انتخاب كند. اين امكان، هم سرعت را افزايش ميدهد هم اشتباه تايپ را از بين ميبرد و هم امكان نامگذاريهاي بلندتر را بدون اشكال ميسازد.
دليل ديگري نيز براي برنامهنويسان جهت استفاده از نامهاي كوتاه و بيمفهوم وجود دارد و آن بالا بردن امنيت كد است. به عبارتي آنها بر اين اعتقادند كه ما ميدانيم هر چيز را براي چه استفاده كردهايم و يا در جايي براي خودمان ثبت ميكنيم. اما ميخواهيم اگر تصادفا اين كد دست بيگانه افتاد، در درك آن دچار مشكل شود و از آن سر درنياورد. اين توجيه تا حدي قابل قبول است. حتي امروزه نرمافزارهايي وجود دارند كه كد برنامههاي متن باز مثل جاوا اسكريپت يا Php را به شكلي درميآورند كه درك آن تا حد امكان مشكل شود و به اين ترتيب امنيت آن را در برابر سرقت بالا ميبرند.
مستندسازي
يكي از مهمترين كارهايي كه يك برنامهنويس بايد در برنامهنويسي خود رعايت كند مفهوم مستندسازي يا Self Documenting است. بعد از اين كه اين مفهوم را توضيح داديم، هميشه آن را به خاطر داشته باشيد و در برنامهنويسي خود از آن استفاده كرده و قواعد آن را در برنامه خود رعايت كنيد.
هر زبان برنامهنويسي، از اسمبلي گرفته تا جديدترين زبانها امكاناتي براي قرار دادن توضيحات يا Comment در برنامه در نظر گرفتهاند. مثلا در زبان اسمبلي اگر بعد از دستوري علامت سمي كالن ( ; ) قرار دهيد اسمبلر تا پايان خط را ناديده ميگيرد و به خط بعد ميرود. در نتيجه شما ميتوانيد بعد از سمي كالن هر چه دلتان ميخواهد در برنامه بنويسيد. در زبان C++ و دلفي، سمي كالن يك كاراكتر اصلي و مهم است كه هر دستور بايد با آن پايان يابد، اما استفاده از دو backslash پشت سر هم (//) در هر كجاي برنامه باعث ميشود كه تا انتهاي خط توسط كامپايلر ناديده گرفته شود و نوشتههاي بعد از آن هيچ گونه تاثيري در خروجي برنامه و فايل نهايي نخواهند داشت. امكان اضافه كردن توضيحات چندخطي يا بخشي از يك خط نيز وجود دارد. در C++ استفاده از /*…*/ و در دلفي {…} براي اين نوع توضيحات به كار ميرود. در واقع كامپايلر در C++ بعد از ديدن /* و در دلفي بعد از ديدن { آنقدر كاراكترهاي بعدي را ناديده ميگيرد تا به ترتيب در C++ و دلفي به */ و } برسد.
بنابراين شما ميتوانيد شروع هر بخش، پايان هر بخش، دليل استفاده از يك متغير، مقداري كه انتظار ميرود يك متغير در جايي داشته باشد، كاري كه يك دستور يا يك تابع انجام ميدهد و هر آنچه كه فكرش را ميكنيد در برنامه اضافه كنيد تا هم خودتان و هم هر كس ديگر كه برنامه را ميخواند كل منطق آن را متوجه شود. به ساختار يك نمونه توضيحات گذاري در دلفي توجه كنيد:
a function for Input //
( )Function f
Begin
If p = = 1 {Input is ready} then
…
End
در مثال فوق عبارت a function for input و هر آنچه بعد از آن تا پايان خط بيايد همچنين نوشتههاي داخل { } يعني Input is ready توسط كامپايلر ناديده گرفته ميشود و ميتواند حتي به زبان فارسي باشد.
بنابراين شما مشخص كردهايد كه تابع ( )f براي گرفتن ورودي است و وقتي متغير P برابر يك شود يعني ورودي آماده است. به كدي كه در آن توضيحات گذاري به ميزان كافي رعايت شده باشد يك كد مستندسازي شده يا خودمستندسازي شده گفته ميشود و اين نوع امتياز بالايي خواهد داشت.
@@@@
فناوري اطلاعات را بهتر بشناسيم
تعاريف تجارت الكترونيكي
در شماره گذشته، برخي از انواع تجارت الكترونيكي معرفي شدند. در اين شماره پس از بهپايان رسانيدن اين بخش، به معرفي انواع تعاريف عمومي و اختصاصي افراد و مجامع از تجارت الكترونيكي و سپس تاريخچه آن ميپردازيم.
ت– تجارت فروشنده با اداره
تجارت الكترونيكي فروشنده با اداره، شامل تمامي مبادلات تجاري — مالي بين شركتها و سازمانهاي دولتي است. تامين نيازهاي دولت توسط شركتهاي و پرداخت عوارض ماليات از جمله مواردي است كه ميتوان در اين گروه گنجانيد. هماكنون اين نوع تجارت روشي تازه قلمداد ميشود، ولي در آيندهاي نزديك، يعني زماني كه دولتها به ارتقاي سطح ارتباطات خود تمايل و توجه نشان ميدهند، بهسرعت رشد خواهد كرد.
ث– تجارت مصرف كننده با اداره
ميتوان گفت كه مدل تجارت الكترونيكي مصرفكننده با اداره1 هنوز پديدار نشده است، ولي بهدنبال رشد انواع تجارت فروشنده با مصرفكننده و تجارت فروشنده با اداره، بهنظر ميرسد كه دولتها مبادلات الكترونيكي را به حيطههايي همچون جمعآوري كمكهاي مردمي، پرداخت ماليات بر درآمد و هرگونه امور تجاري ديگري كه بين دولت و مردم انجام ميشود، گسترش خواهند داد.
ج– تجارت دولت با دولت
اين مدل ارتباط بين دولت با دولت2 است كه منظور از آن ارتباط سازمانهاي دولتي با يكديگر از طريق شبكههاي داخلي اعم از اينترنت، اينترانت و اكسترانت است. تهيه بودجه سالانه و يا برنامههاي پنج ساله از طريق اينترنت مثالهاي مناسبي در اين بخش است.
چ– تجارت دولت با فروشنده
تجارت دولت با فروشنده3 برقراري ارتباط ميان دولت با بخش تجارت و صنعت است كه طي آن دولت به ارايه خدمات به بخش تجاري و صنعتي كشور از طريق اينترنت ميپردازد. خدماتي همچون ارايه مجوز و گواهينامهها، انجام خريد و فروش كالاها و خدمات در اين بخش انجام ميگيرد.
ح– تجارت دولت با كاركنان
تجارت دولت با كاركنان4 برقراري ارتباط ميان دولت و كاركنان، با هدف ارايه اطلاعات به كارمندان دولتي، با استفاده از شبكههاي داخلي دولتي (اينترنت) است و اطلاعات گوناگون مانند اطلاعات پرسنلي (حقوق و مزايا، بازنشستگي پرسنل و آخرين اخبار مربوط به فعاليتها و درخواستهاي كارمندان) در اين بخش انجام ميگيرد.
خ– تجارت نظير بهنظير
تجارت نظيربهنـــظير5بـــراي تسويه حساب شركتكنندگان در حراج با فروشنده بهكار ميرود و مشهورترين گونه آنها سرويسي است بهنام PAYPAL. اين تجارت در چارچوبي كار ميكند كه افراد بتوانند بهطور مستقيم با هم پول ردوبدل كنند و در حاليكه سهم اصلي دادوستد پولي را نقلوانتقالات رودررو بهعهده دارد، فنآوري تلفنهاي همراه تعداد افراد بيشتري را در دادوستد غيرحضوري سهيم ميكند.
تعاريف عام تجارت الكترونيكي
هر نوع ارايه كالا يا خدمات، كه معمولا (نه هميشه) به خاطر پول انجام ميپذيرد، تجارت خوانده ميشود. براي تجارت الكترونيكي مجموعه متنوع و وسيعي از تعاريف و مفاهيم وجود دارد كه موضوعات، كاربردها، و مدلهاي گوناگوني را دربر ميگيرد. در برخي از اين موارد، كوشيده شده است كه تعاريف عامي ارايه شود و در گونههاي ديگر، به نوع فعاليت، امكانات ارتباطي و تجهيزات مورد استفاده، محدوده سازماني فعاليتها و زيرساختار توجه شده است.
– تجارت الكترونيكي در يك مفهوم، عمليات ويژهاي را دربرميگيرد كه وسيله ابزار ارتباطات ديجيتال مانند اينترنت، اينترانت، اكسترانت يا مبادله دادههاي الكترونيكي ارايه ميشود.
– در حوزه تسهيلات بازرگاني، تجارت الكترونيكي به مبادله الكترونيكي دادهها خلاصه ميشود. در مباحث سازمان تجارت جهاني، تجارت الكترونيكي از زاويه محدوده تجارت و خدمات مورد بررسي قرار ميگيرد.
– كميسيون اروپايي در سال 1997 تجارت الكترونيكي را بهصورت زير تعريف كرده است. «تجارت الكترونيكي بر پردازش انتقال الكترونيكي دادهها، شامل متن، صدا و تصوير مبتني ميباشد. تجارت الكترونيكي فعاليتهاي گوناگوني از قبيل مبادله الكترونيكي كالا و خدمات، تحويل فوري مطالب ديجيتال و انتقال الكترونيكي را شامل ميشود. »
به بيان ديگر كاربرد فناوري اطلاعات6، را در تجارت جهاني ميتوان تجارت الكترونيكي ناميد.
تعاريف خاص تجارت الكترونيكي
از ديدگاه اتحاديه اروپا تجارت الكترونيكي عبارتست از: «انجام تجارت بهصورت الكترونيكي« (1998) و «هر شكلي از مبادله تجاري كه در آن طرفين ذينفع بهجاي تبادلات فيزيكي يا تماس مستقيم فيزيكي، بهصورت الكترونيكي تعامل كنند. (2001.) »
جاش شاو7 بنيانگذار استراتژي تجارت الكترونيكي ميگويد: «كارهايي كه كامپيوتر، توانايي انجام آنها را دارد بايد از زمينه فعاليت انسانها حذف شود، در عوض فكر و انديشه آنها صرف نوآوري، خلاقيت و يافتن راهحل مشكلات و كارهايي شود كه كامپيوتر توانايي انجام آنها را ندارد. »
لينچ و ليندكوئيست ميگويند: «تجارت الكترونيكي بهمعناي مبادله محصولات و خدمات در مقابل پول با استفاده از تواناييهاي اينترنت است. »
كالاكوتاوونيسون رو، پژوهشگر مشهور تجارت الكترونيكي در كتاب خود بهنام "مرزهاي تجارت الكترونيكي" آن را اينطور تعريف ميكند: «تجارت الكترونيكي واژه معادلي است براي خريد و فروش محصولات، خدمات و اطلاعات بهوسيله زيرساختارهاي شبكهاي تجارتي كه امروزه بهعنوان تجارت الكترونيكي از آن ياد ميشود، آن است كه بهوسيله اينترنت در شبكه گسترده جهاني اعلام ميشود.»
كلارك ميگويد: «تجارت الكترونيكي يعني هر نوع مبادله اطلاعات مربوط با امور تجاري از طريق ابزار الكترونيكي، حتي تلفن و فاكس. (سال 1997)»
تعريف تجارت الكترونيكي از ديدگاه ارتباطات: «تحول خدمات، كالا و محصولات اطلاعاتي از طريق خطوط تلفن، شبكههاي كامپيوتري و ساير وسايل ارتباطي. »
تعريف تجارت الكترونيكي از ديدگاه فناوري اطلاعات: «آن دسته از كاربردهاي فناوري اطلاعات كه بهصورت سيستمي براي پشتيباني و پيشرفتدادن جريان كاري و مبادلات تجاري ايجاد شده است. »
تعريف تجارت الكترونيكي از ديدگاه تجاري: «تعامل سيستمهاي ارتباطي8، سيستمهاي مديريت اطلاعات9 و امنيت10، كه بهوسطه آنها امكان مبادله اطلاعات تجاري در رابطه با فروش محصولات و يا خدمات ميسر ميگردد.»
از مجموعه تعاريف ارايه شده ميتوان نتيجه گرفت كه زمينههاي كاربرد تجارت الكترونيكي بسيار گستردهتر از مبادله كالا، خدمات و وجوه است و در تعريف آن و تبيين سياستهاي مورد نظر بايد علاوه بر كاربردهاي بالفعل به كاربردهاي بالقوه آن نيز توجه داشت.
انقلاب الكترونيكي به اين نكته اشاره دارد كه يكي از موثرترين خطمشيهايي كه ****هاي اقتصادي داراي تكنولوژي پيشرفته و دچار كمبود انرژي ميتوانند جهت حفظ منابع طبيعي در پيش گيرند، اين است كه بهسرعت، صنايع موج سوم (موج سوم: عصر اينترنت) را كه انرژي كمي مصرف ميكنند، جايگزين آن دسته از صنايع موج دوم (موج دوم: عصر صنعت و موج اول: عصر كشاورزي) سازند كه انرژي زيادي مصرف ميكنند.
منابع
Efraim Turban, David King, Jae Lee, Dennis Viehland, Electronic Commerce 2004: A Managerial Perspective, Prentice Hall 2003.
- دكتر مسعود شفيعي، تجارت الكترونيكي، انتشارات پيامرسان، 1385.
- مهدي صادقي، زهرا نوري توپكانلو، تجارت الكترونيكي و فناوري اطلاعات، مشهد، سخنگستر، 1385.
- تجارت الكترونيكي، محسن گرامي، تهران، سيماي دانش، 1382.
- لطفيزاده، فريبا، پولالكترونيكي، پاياننامه كارداني كامپيوتر، دانشگاه بينالمللي امام خميني(ره)، 1385.
پينوشت
1. Consumer to Administration (C2A)
2. Government to Government (G2G)
3. Government to Business (G2B)
4. Government to Employee (G2E)
5. Peer to Peer (P2P)
6. Information Technology
7. Jach Shaw
8. Communication
9. Data Management
10. Security
@@@@
سال شمار كامپيوتر
1944- جان ون نيومن (John Von Neumann) مجارستاني، آفرينش دستگاه ادواك (EDVAC: Electronic Discrete Variable Aoutomatic Computer) را آغاز كرد. اين دستگاه كامپيوتري با توانايي ذخيره داخلي برنامهها و سرعت بالاي الكترونيكي بود. ون نيومن را اغلب بهعنوان بنيانگذار ذخيرهسازي برنامهها ميشناسند.
ماهنامه آتلانتيك مقاله ونوار بوش (Vannevar Bush) را با عنوان "همانگونه كه ميانديشيم" (As We May Think) را چاپ كرد. اين مقاله ميزي را توصيف ميكند كه كاربر آن دسترسي مستقيم به اسناد، كتابها و اطلاعات ذخيرهشده بر ميكروفيلمها را دارد.
در هنگام كار براي ساخت دستگاه مارك دوم (MARK II) گريس هاپر دريافت كه حشرهاي بزرگي (نوعي بيد) منجر به اختلال در كاركرد دستگاه ميشود. وي اين مساله را در كتابچه رخدادهاي روزانه دستگاه با اين عنوان يادداشت كرد: "نخستين نمونه عملي باگ (Bug) يافت شد." اين نخستين مرتبه بهكارگيري واژه باگ در اين زمينه نبود؛ بلكه خانم هاپر تنها ميخواست شوخي كند!
شبيهساز پرواز پروژه ويرلويند (Whirlwind) كه در سال 1943 آغاز شده بود، از سيستمهاي آنالوگ به الكترونيك ديجيتال جابهجا شد.
1946
پرسپر اكرت (J. Presper Eckert) و جان ماچلي (John Mauchly) از دستگاه انياك (ENIAK) در دانشكده مهندسي الكترونيك دانشگاه پنسيلوانيا پردهبرداري كردند. در سال پيش از آن، اكرت و ماچلي اين دانشكده را براي برپايي شركت خودشان با نام "شركت كنترل الكترونيك" (Electronic Control Co.) ترك كرده بودند تا دستگاه يونيواك (UNIVAC) را بسازند.
آلن تورينگ (Mathison Turing Alan) متخصص رمزشكني در زمان جنگ جهاني دوم، موتور محاسباتي خودكار (ACE: Automatic Computing Engine) را طراحي كرد و جيم ويلكينسون (Jim Wilkinson) نيز وي را در "آزمايشگاه ملي فيزيك" آمريكا ياري ميرسانيد.
جان ون نيومن پيشگام يك پروژه كامپيوتري در "آزمايشگاه علوم پيشرفته" در پرينستون شد كه براي توسعه كامپيوترهاي ديجيتال ميكوشيد.
جايزه انجمن سلطنتي انگلستان به آرمايشگاه كامپيوتر دانشگاه منچستر، تام كيلبورن (Tom Kilburn) و فردريك ويليامز (Frederic Williams) براي همكاري مشترك در پروژه امكانسنجي ساخت كامپيوترهاي ديجيتال اهدا شد. اين دو تن بعدها دستگاه SSEM (Small-Scale Electronic Machine) را ساختند.
ويليامز درخواست ثبت اختراع لامپ خلا پرتو كاتودي (CRT: Cathod-Ray Tube) را ارايه داد كه ابزاري براي ذخيرهسازي و نمونه اوليه حافظه دسترسي تصادف (RAM) بود.