اشاره :
کدام زبان برنامهنویسی را انتخاب کنم؟ از کدام نوع دیتابیس استفاده کنم؟ اینها سؤالات قدیمی و تاحدودی کلیشهای هستند. با این حال خواندن یکی دو مقاله جالب در اینترنت باعث شد، طرح مجدد این موضوع همیشگی را خالی از فایده ندانم.
اصولاً هر از گاهی باید این پرسش را مجدداً در کلیه سطوح مهندسی نرمافزار، چه در صنعت، چه در رسانهها و چه در دانشگاهها مطرح کرد و دلیل آن هم، بسیار ساده است. زبانهای برنامهنویسی نیز مانند زبانهای گویشی انسانها پویا هستند و مرتباً متحول میشوند. در این راستا برخی خود را با نیازهای روز تطابق داده و برخی نیز از این تحولات جا میمانند.
به همین دلیل لازم است هر چند وقت یکبار این پرسش را مطرح کرده و جدیدترین پاسخها را به نقد بگذاریم. برای اینکه بحث از حالت نظری خارج شود و حالت کاربردی پیدا کند، اجازه میخواهم نظرم را در این مورد به اختصار بیان کنم.
برنامهنویسی وب
فعلاً برنامهنویسی تحت وب داغترین سوژه در دنیای برنامهنویسی است. شاید بد نباشد یادآوری کنم که اصولاً فلسفه برنامهنویسی تحت وب چه بود که به اینجا رسید. علت محبوبیت و رشد گسترده برنامهنویسی تحت وب، حل شدن مشکل کلاینت بود.
در این مدل از برنامهنویسی، برنامهنویس دغدغه چندانی درباره قابل نصب بودن برنامهاش روی پلتفرمهای مختلف ندارد زیرا وضعیت تقریباً روشن است. همین که برنامه شما روی یکی دو مرورگر معروف مانند فایرفاکس و اینترنت اکسپلورر جواب بدهد، کافی است.
بنابراین در پاسخ به این سؤال که کدام زبان برنامهنویسی وب را انتخاب کنیم، باید گفت زبانهایی که از همه سادهترند و تغییر و تحولات را به سرعت میپذیرند. در حال حاضر در این زمینه دو فناوری PHP و ASP.NET پیشتاز هستند. زبان اسکریپتنویسی PHP شباهتهایی به زبان C دارد.
به همین دلیل سرعت کامپایل شدن آن بالا است و سایتهایی که از این زبان استفاده میکنند اندکی سریعترند. فناوری ASP.NET از ویژوال بیسیک داتنت یا سیشارپ استفاده میکند. این دو زبان، به ویژه در جدیدترین نسخه فناوری داتنت در یک حد هستند.
اما به نظر من ویژوال بیسیک همچنان جذابتر و سادهتر به نظر میرسد. سایتهایی که با این دو زبان نوشته میشوند نرمافزارهای قدرتمندی را پدید میآورند که قدرت انعطاف و گستره کارایی آنها بالاست زیرا هر دو زبان OOP هستند. علاوه بر سهولت برنامهنویسی، پشتیبانی از برخی موجهای نو مانند ایجکس هم بحث روز است.
هم PHP و هم ASP.NET وضع خوبی در این زمینه دارند. علاوه بر این، برخی فناوریهای روز هم خیلی مهم هستند که وبسرویس یکی از آنهاست. در حال حاضر رقابت شدیدی میان فناوریSOAP که از سوی آی بیام و مایکروسافت و دیگران پشتیبانی میشود و فناوری REST که از سوی یاهو و برخی شرکتهای بزرگ دیگر حمایت میشود، وجود دارد.
اما وضع بعضی زبانها مانند جاوا (JSP) و ColdFusion در دنیای وب خراب است و برخی زبانها اخیراً دوباره مورد توجه قرارگرفتهاند که از آن جمله میتوان به Python و Ruby اشاره کرد. وضعیت جاوا در وب در این میان جالب توجه است. برخلاف موفقیت چشمگیر جاوا در برنامهنویسی برای سیستمهای بزرگ، این زبان به شدت در وب دچار ناکامی است. وب یک دنیای بصری است و به سادگی و ظاهر سیستمها اهمیت میدهد.
به همین دلیل زبانهای فاقد ابزارهای ویژوال و قدرتمند که در عین حال ساده نیز هستند در این وادی محکوم به زوالند و این مسئله برای جاوا که در زمینه وارد کردن مفاهیم بصری و پویا به دنیای وب پیشگام بود، ناگوار است، البته این قضیه هیچ ربطی به زبان اسکریپتنویسی «جاوااسکریپت» که با ظهور ایجکس جان تازهای پیدا کرده، ندارد.
ادامه مطلب ...Assembly
اسمبلی یک زبان برنامهنویسی سطح پایین است و از بالاترین سرعت نسبت به سایر زبانها برخوردار است. زیرا سایر زبانها ابتدا به اسمبلی و سپس به زبان ماشین(0و1) کامپایل میشوند ولی اسمبلی مستقیما به زبان ماشین کامپایل میشود. برای هر خانواده CPU یک زبان اسمبلی وجود دارد. مثلا اسمبلی Intel با AMD فرق دارد. این زبان به طور مستقیم با سخت افزار، حافظه اصلی، CPU و غیره در ارتباط است.
زبانهای برنامهنویسی سطح بالا علی رغم تواناییهای زیادی که دارند همیشه برای کار با سخت افزار مناسب نیستند(به جز C که برای کار باسخت افزار از همه حتی اسمبلی بهتر است) در حالی که اسمبلی قدرت زیادی برای کار با سخت افزار دارد
میزان استفاده از حافظه
برنامههای نوشتهشده به زبان اسمبلی نسبت به برنامههای معادل در زبانهای سطح بالا، حافظه کمتری را اشغال میکنند. البته این امر بستگی به انخاب اندازه سگمنت حافظه در زمان نوشتن برنامه دارد.
برنامههایی که نیاز به زمان بلادرنگ دارند در اسمبلی به خوبی نوشته میشوند و همچنین برنامههای مقیم در حافظه.در ضمن برنامه نویس با اسمبلی کارهایی میتواند انجام دهد که با زبانهای سطح بالا نمیشود آن کارها را انجام داد. از جمله دستکاری مستقیم VGA و یا RAM.
منابع مفید:
برنامه نویسی به زبان اسمبلی مرجع کامل از 8086 تا پنتیوم - جعفر نژاد قمی
برنامه نویسی کارتهای گرافیکی - رضا خوش کیش
اصول اساسی برنامه نویسی به زبان اسمبلی هاشمی اصل مشحون انتشارات دانشگاه علم و صنعت
همچنین شما میتواند یک مجموعه آموزش زبان برنامه نویسی اسمبلی بصورت کتابچه pdf رو از اینجا دانلود کنید
دریافت تعدادی از کد های آماده اسمبلی از اینجا
دانلود محیط برنامه نویسی به زبان اسمبلی فایلrar از اینجا
engcomputer :پسوردها
۱00 منبع برای طراحی وب به شیوه اپن سورس
احتمالا شما نیز مثل من فکر میکردید:این که اپنسورس فقط مساوی است با لینوکس، فایرفاکس و حداکثر وردپرس.اما در طول 20 سال اخیر تفکر و مدل اپنسورس تبدیل به یک روش محبوب برای فعالیتهای گروهی و collaborative شده و موجب گشته تا ایدهها وافکار تازه، سریع و به اسانی درهم ادغام یا incorporate شوند.
اپنسورس ابتدا از طرف برنامهنویسان بکار گرفته شده، اما کمکم برای سایرین نیز محبوب شد:government, media, education and private business .اما یکی از جذابترین زمینههای شکوفایی اپنسورس طراحی وب بوده است- که البته بسیار هم مظلوم و مورد غفلت واقع شده،لااقل در وب فارسی.
روح و تفکر اپنسورس در «طراحی وب» دمیده شده و از ادغام ان با امکانات جهانی، پدیدههای بسیاری ظهور یافتهاند.نتیجه آنکه در رشته بسیار پردرآمد و پرمنفعتی مثل طراحی وب نیز، هماکنون web design templates, resources, and tools های فراوانی به صورت اپنسورس در وب قرار گرفتهاند. سعی نگارنده بر این قرار می گیرد تا از این نحوه نگرش-در حد بضاعت خود- حمایت کند.باشد که طراحی وب ما نیز از برکات اپنسورس بهرهمند شود.به همین دلیل در ابتدا لینکی را معرفی میکنم که حاوی 100 منبع برای انواع قسمتهای طراحی وب است:
Web Design Programs
Complete Web Design Templates
CSS Layouts
Automated CSS Tools and Generators
Blog Themes and Templates
منبع : مزیدی
جاوا یک زبان برنامه نویسی است که در اوایل دهه 90 توسط Java Soft ، بخش نرم افزاری شرکت Sun توسعه داده شد . هدف آن بود که جاوا زبانی ساده ، قوی و همه منظوره باشد . جاوا تمام جنبه های مثبت C و ++C را در خود دارد ، و آن چیزهایی که برنامه نویسان ++C از آن نفرت داشته اند ( مانند وراثت چند گانه ، تحریف اپراتورها و اشاره گرها ) را به کناری گذاشته است .
مهمترین ویژگیهای جاوا این است که اساساً شیء گرا است . اولین ادعای OOP توانایی استفاده مجدد از کد است : چیزی که ++C با تمام ادعاهایش هرگز نتوانست بدان دست یابد . اما در اولین قدم خواهید دید جاوا در این زمینه تا چه حد اندازه صحت دارد . تصورش را بکنید که با صرف کمی وقت بتوانید برنامه ای بنویسید که در سیستم های ویندوز ، یونیکس
و مکینتاش براحتی اجرا شود . همین که یک شرکت نرم افزاری بتواند برای تمام پلاتفرم های موجود در آن واحد پروژه ای را تولید کند ( و مقادیر عظیمی پول صرفه جویی کند ) خود می تواند بهترین دلیل اقبال جاوا باشد و امروز دیگر همه ( و نه فقط شرکتهای نرم افزاری ) به سمت جاوا کشیده شده اند . با این ویژگی ( استقلال از پلاتفرم ) یک برنامه نویس می تواند برای سیستمی برنامه بنویسد که هرگز با آن کار نکرده است . این ویژگی اصلی ترین علت توفیق جاوا در اینترنت است . اینترنت شبکه پیچیده ای است از میلیونها کامپیوتر مختلف در سراسر دنیا ، و مقاومت در مقابل این وسوسه که بتواند برنامه ای بنویسد که روی تمام این سیستم های متفاوت و نا متجانس اجرا شود چندان ساده نیست .
جاوا یک زبان بسیار ساده است چون شما را وادار نمی کند تا در محیط جدید ( و نا آشنایی ) کار کنید و این برای کسانی که اطلاعات فنی ناچیزی درباره کامپیوتر دارند بسیار مهم است . ساختار زبان جاوا در نگاه اول بسیار شبیه C و ++C است و این به هیچ وجه تصادفی نیست . C زبانی است ساخت یافته و ++C زبانیست شیء گرا و مهمتر از همه قسمت اعظم برنامه نویسان دنیا از آنها استفاده می کنند از سوی دیگر این شباهت حرکت به طرف جاوا را برای این قبیل افراد ساده خواهد کرد بنابراین طراحان جاوا برای اجتناب از دوباره کاری از زبانهای C و ++C بعنوان مدل استفاده کردند .
جاوا با دور انداختن اشاره گرها و بر دوش کشیدن بار مدیریت حافظه ، برنامه نویسان C و++C را برای همیشه از این کابوس ها رهایی بخشیده است . علاه بر آن چون جاوا زبانی برای اینترنت است ، از ایمنی و حفاظت ذاتی بالایی برخوردار است . طراحان جاوا از ابتدا یک محیط برنامه نویسی امن را مد نظر داشته اند . مسئله حفاظت سیستم ها رابطه تنگاتنگی با اشاره گرها دارد . اکثر مهاجمان برای ورود غیر قانونی به سیستم های دیگران از این اشاره گرها استفاده می کنند و جاوا با حذف اشاره گرها این راه را سد کرده است .
منبع: برنامه نویسی با جاوا - جن ال هارینگتون
یک برنامه کامپیوترى، از مجموعه اى دستورالعمل که نوع و نحوه انجام یک فعالیت را براى کامپیوتر مشخص مى نمایند، تشکیل مى شود. دستورالعمل هاى نوشته شده به عنوان نمونه ممکن است به کامپیوتر اعلام نمایند که تعدادى از اعداد را با یکدیگر جمع و یا دو عدد را با یکدیگر مقایسه و بر اساس نتیجه به دست آمده، اتخاذ تصمیم نماید. دستورالعمل هاى نوشته شده، صرفاً براى کامپیوتر قابل فهم و اجرا خواهند بود. کامپیوتر دستورالعمل هاى نوشته شده را اجرا و ماحصل آن رسیدن به اهدافى خواهد بود که بر اساس آن برنامه طراحى و پیاده سازى شده است. دستورالعمل ها، مى بایست با استفاده از یکى از زبان هاى برنامه نویسى نوشته شده ( کدینگ ) و در ادامه در اختیار کامپیوتر قرار داده شوند. زبان هاى برنامه نویسى متعددى نظیر: فرترن، بیسیک، کوبال، پاسکال ،C، جاوا، ویژوال بیسیک و ... وجود دارد.
برنامه نویسى کامپیوتر، مشابه آموزش گره زدن کفش به کودکان است. براى نیل به هدف فوق، مى بایست تمامى مراحل لازم به صورت شفاف به کودکان آموزش داده شود. کودکان با دنبال کردن دستورالعمل هاى ارائه شده، قادر به گره زدن کفش خود خواهند بود ( روش انجام این کار براى آنان مشخص شده و بر اساس آن، امکان نیل به هدف مورد نظر توسط کودکان فراهم مى شود). VB.NET، زبانى است که مى توان نحوه نیل به یک خواسته را به کمک آن به صورت شفاف ( نظیر آموزش گره زدن کفش به کودکان ) مشخص و کامپیوتر با دنبال نمودن مراحل مشخص شده، خواسته مورد نظر را محقق نماید. با استفاده از VB.NET مى توان محصولاتى را ایجاد کرد که زمینه استفاده از آنان در محیط ویندوز و اینترنت، وجود خواهد داشت. فراموش نکنیم در زمان فراگیرى یک تکنولوژى در ابتدا مى بایست شیوه راه رفتن را بیاموزیم و در ادامه اقدام به دویدن کرد.
VB.NET یکى از زبان هاى حمایت شده در دات نت است. با استفاده از زبان فوق علاوه بر اینکه مى توان برنامه هاى مبتنى بر ویندوز را پیاده سازى کرد، امکان استفاده از آن به عنوان زبان مورد نظر در زمان ایجاد برنامه هاى مبتنى بر وب که از تکنولوژى ASP.NET استفاده مى نمایند، نیز وجود خواهد داشت.
در این مقاله شما با انواع نرم افزار در حد معرفی آشنا میشوید اما مبحث مهم در این مقاله تشریح مفهوم نرم افزار های آزاد است که بسیار مفید و جالب خواهد بود . با تشکر
وبلاگ دانشجویان کامپیوتر دانشگاه پیام نور کنگاور
نرمافزار نام دیگری برای برنامه رایانه است. ظاهراً اولین بار جان تاکی در سال ۱۹۵۸ این واژه را بهاین معنا بهکار برده است. احتمالاً در انگلیسی این واژه را به قیاس سختافزار (hardware) ساختهاند که خیلی قبل از پیدایش رایانه (به معنای اسباب و اشیاء) بهکار میرفته است.
اگرچه «نرمافزار رایانهای» و «برنامه رایانهای» یک معنی دارند ولی بهنظر میرسد اصطلاح «نرمافزار» بیشتر در مورد مجموعه نسبتاً بزرگی از برنامهها بهکار میرود و «برنامه» به جزئی از سیستم نرمافزاری اشاره دارد.
نرمافزارهای رایانه را به دو دسته بزرگ میتوان بخش کرد:
نرمافزار سیستم
نرمافزار سیستم به نرمافزاری در رایانه گفته می شود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین یا (Low Level) رایانه مربوط باشد. این نرمافزارها به ساختار فیزیکی سخت افزار رایانه وابسته هستند و در نوشتن آنها از زبانهای سطح پائین مانند زبان اسمبلی استفاده میشود. سیستم عامل و درایورها از نرمافزارهای سیستم است.نرم افزارهای سیستمی به سخت افزار وابسته هستند.
نرمافزار کاربردی برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبانهای سطح بالا نوشته میشود که از جزئیات سختافزاری سیستم مستقل است.
نرمافزار آزاد
واژه آزادی در نرمافزارهای آزاد به معنای آزادی در استفاده(به هر منظور)، تغییر و/یا توزیع مجدد نرمافزار است. از آنجایی که در فارسی آزادی معنایی دوگانه نمیدهد نیازی به تفسیر انواع آزادی نیست، ولی به دلیل آن که «نرمافزار آزاد» ترجمه تحت الفظی اصطلاح "Free Software" است، بهتر است اصطلاح "Free Software" در انگلیسی را نیز اینجا بررسی کنیم، در انگلیسی این واژه دو معنا میدهد:
به همان معنایی که ما در بالا اشاره کردیم، یعنی Free به معنای آزادی، که این گونه نرم افزارها قابل استفاده، نسخهبرداری، تغییر و/یا توزیع مجدداند، بدون محدودیت و یا با محدودیتهایی برای حفظ آزادی
ادامه مطلب ...