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 به معنای آزادی، که این گونه نرم افزارها قابل استفاده، نسخهبرداری، تغییر و/یا توزیع مجدداند، بدون محدودیت و یا با محدودیتهایی برای حفظ آزادی
ادامه مطلب ...
اصول پایگاه داده ها
در این مقاله میخوانید:
پایگاه دادهها
تاریخچه پایگاه داده
انواع دادگان ها
مدلهای پایگاه داده
ویژگیهای سیستم مدیریت پایگاه دادهها
فهرست سیستمهای متداول مدیریت دادگان
منابع مفید پیرامون این مبحث
پایگاه دادهها
پایگاه دادهها یا دادِگان ( یا بانک اطلاعاتی) به مجموعهای از دادههابا ساختار منظم و سامانمند گفته میشود. پایگاههای دادهها معمولاً در قالبی که برای دستگاهها و رایانهها قابل خواندن و دسترسی باشد ذخیره میشوند. البته چنین شیوه ذخیرهسازی اطلاعات تنها روش موجود نیست و شیوههای دیگری مانند ذخیرهسازی ساده در پروندهها نیز استفاده میگردد. مسئلهای که ذخیرهسازی دادهها در دادگان را موثر میسازد وجود یک ساختار مفهومی است برای ذخیرهسازی و روابط بین دادهها است.
پایگاه داده در اصل مجموعهای سازمان یافته از اطلاعات است.این واژه از دانش رایانه سرچشمه میگیرد ،اما کاربرد وسیع و عمومی نیز دارد، این وسعت به اندازهای است که مرکز اروپایی پایگاه داده (که تعاریف خردمندانهای برای پایگاه داده ایجاد میکند) شامل تعاریف غیر الکترونیکی برای پایگاه داده میباشد. در این نوشتار به کاربردهای تکنیکی برای این اصطلاح محدود میشود.
یک تعریف ممکن این است که: پایگاه داده مجموعهای از رکوردهای ذخیره شده در رایانه با یک روش سیستماتیک (اصولی) مثل یک برنامه رایانهای است که میتواند به سوالات کاربر پاسخ دهد. برای ذخیره و بازیابی بهتر، هر رکورد معمولاً به صورت مجموعهای از اجزای دادهای یا رویدادها سازماندهی میگردد. بخشهای بازیابی شده در هر پرسش به اطلاعاتی تبدیل میشود که برای اتخاذ یک تصمیم کاربرد دارد. برنامه رایانهای که برای مدیریت و پرسش و پاسخ بین پایگاههای دادهای استفاده میشود را مدیر سیستم پایگاه دادهای یا به اختصار (DBMS) مینامیم. خصوصیات و طراحی سیستمهای پایگاه دادهای در علم اطلاعات مطالعه میشود.
مفهوم اصلی پایگاه داده این است که پایگاه داده مجموعهای از رکوردها یا تکههایی از یک شناخت است.نوعا در یک پایگاه داده توصیف ساخت یافتهای برای موجودیتهای نگه داری شده در پایگاه داده وجود دارد: این توصیف با یک الگو یا مدل شناخته میشود. مدل توصیفی، اشیا پایگاههای داده و ارتباط بین آنها را نشان میدهد. روشهای متفاوتی برای سازماندهی این مدلها وجود دارد که به آنها مدلهای پایگاه داده گوییم. پرکاربردترین مدلی که امروزه بسیار استفاده میشود، مدل رابطهای است که به طور عام به صورت زیر تعریف میشود: نمایش تمام اطلاعاتی که به فرم جداول مرتبط که هریک از سطرها و ستونها تشکیل شده است(تعریف حقیقی آن در علم ریاضیات بررسی میشود). در این مدل وابستگیها به کمک مقادیر مشترک در بیش از یک جدول نشان داده میشود. مدلهای دیگری مثل مدل سلسله مراتب و مدل شبکهای به طور صریح تری ارتباطها را نشان میدهند.
در مباحث تخصصی تر اصطلاح دادگان یا پایگاه داده به صورت مجموعهای از رکوردهای مرتبط با هم تعریف میشود. بسیاری از حرفهایها مجموعهای از دادههایی با خصوصیات یکسان به منظور ایجاد یک پایگاه دادهای یکتا استفاده میکنند.
معمولاً DBMSها بر اساس مدلهایی که استفاده میکنند تقسیم بندی میشوند: ارتباطی،شی گرا، شبکهای و امثال آن. مدلهای دادهای به تعیین زبانهای دسترسی به پایگاههای داده علاقه مند هستند. بخش قابل توجهی از مهندسی DBMS مستقل از مدلهای میباشد و به فاکتورهایی همچون اجرا، همزمانی،جامعیت و بازیافت از خطاهای سخت افزاری وابسته است.در این سطح تفاوتهای بسیاری بین محصولات وجود دارد.
ادامه مطلب ...
به نظر خودم که یک دانشجوی مهندسی نرم افزار هستم الگوریتم نویسی یکی از مهمترین و در عین حال اساسی ترین و مشکلترین کارها در شروع نوشتن یک برنامه است و در واقع نوشتن یک الگوریتم خوب مهمترین عامل در به وجود آمدن یک برنامه نرم افزاری خوب در تمام زبان های برنامه نویسی محسوب می شود درمقاله زیر به طور کلاسیک تر با الگوریتم و مراحل برنامه نویسی آشنا می شویم .
در انتها نیز یه فایلpdf گذاشتم که هر چند ساده است ولی راهنمای پایه خوبی در مورد الگوریتم نویسی و ترسیم فلوچارت ها هست. ما به نظرات شما اهمیت می دهیم شما هم ما رو با نظرات تون یاری کنید . با تشکر
ما در این مقاله به بررسی مسائل مرتبط با طراحی برنامه پرداخته و در این راستا در ابتدا با یک متدولوژی ساده آشنا خواهیم شد. متدلوژی استفاده شده با اینکه بسیار مقدماتی می باشد ولی اهداف ما را در جهت نحوه طراحی یک برنامه بخوبی تامین خواهد کرد .در این مقاله ، به بررسی الگوریتم و مراحل پنج گانه برنامه نویسی خواهیم پرداخت .
اهمیت طراحی برنامه
فرض کنید یک مسئله را برای تعدادی دانشجو تعریف و از آنان خواسته شده است که برنامه ای بمنظور حل مسئله مورد نظر ، طراحی و پیاد ه سازی نمایند. پس از صرف چند ثانیه ، بلافاصله دانشجویان شروع به تایپ کد مورد نظر خود بمنظور حل مسئله می نمایند . در بین دانشجویان ، دانشجوئی وجود دارد که کاغذی را بر می دارد و شروع به نوشتن موضوع می نماید. دقایقی سپری می گردد ، اما همچنان دانشجویان مشغول تایپ برنامه خود ویا احتمالا" اشکال زدائی! آن هستند .تقریبا" بدون استثناء ، دانشجوئی که دیرتر از دیگران آغاز نموده است ، با سرعت بیشتری تکلیف خود را به پایان رسانده و حتی راه حل ارائه شده توسط وی ، نیز از سایر دانشجویان بمراتب بهتر است .چرا؟ در صورتیکه به کاغذی که در اختیار دانشجو قرار داده شده ، دقت نمائید ، یک طرح مناسب بمنظور طراحی برنامه را برای مسئله، مشاهده خواهید کرد . برخی از دانشجویان نیز ممکن است چندین کاغذ را تکمیل و یک طراحی پیچیده را انجام داده باشند. نکته مهم در این رابطه این است که این دانشجویان ( چه آنانی که یک طراحی ساده را انجام داده اند و چه آنانی که یک طراحی پیچیده را دنبال نموده اند ) دارای یک الگو( طرح ) برای برنامه خود ، می باشند .
الگوریتم
هر برنامه، می بایست دارای یک طرح و یا الگو بوده تا برنامه نویس بر اساس آن عملیات خود را دنبال نماید.از دیدگاه برنامه نویسان ، هر برنامه نیازمند یک الگوریتم است . بعبارت ساده ، الگوریتم ، بیانه ای روشمند بمنظور حل یک مسئله بخصوص است . از منظر برنامه نویسان ،الگوریتم بمنزله یک طرح کلی و یا مجموعه دستورالعمل هائی است که با دنبال نمودن آنان ، برنامه ای تولید می گردد.
الگوریتم های میکرو در مقابل ماکرو
الگوریتم ها دارای ویژگی های متفاوتی می باشند . ما می توانیم در رابطه با الگوریتم استفاده شده به منظور نوشتن یک برنامه مشخص صحبت نمائیم . از این زاویه ، ما صرفا" در رابطه با الگوریتم در سطح ماکرو(macro level) ، صحبت نموده ایم . در چنین مواردی ، الگوریتم ارائه شده ، سعی در بدست آوردن جنبه های عمومی برنامه از طریق یک مرور کلی به برنامه در مقابل درگیر شدن در جزئیات را دارد.ما می توانیم در رابطه با الگوریتم ها ، از سطح "میکرو" صحبت نمائیم . از این زاویه ، به سطوح پایین تر رفته و به عوامل اساسی ونگهدارنده ای که یک جنبه خاص از برنامه را با یکدیگر مرتبط می نماید، صحبت کرد. مثلا" در صورتیکه شما دارای داده هائی هستید که می بایست قبل از استفاده مرتب گردند ،الگوریتم های مرتب سازی متعددی در این زمینه وجود داشته و می توان یکی از آنها را بمنظور تامین اهداف مورد نظر خود انتخاب نمود. انتخاب یک الگوریتم مرتب سازی ، صرفا" باعث حل شدن یکی از جنبه های متفاوت برنامه می گردد . پس از مرتب سازی داده ها ،می بایست از یک الگوریتم میکرو دیگر بمنظور نمایش داده ها ی مرتب شده استفاده گردد .
همانگونه که احتمالا" حدس زده اید ، ما می توانیم تمام الگوریتم های میکرو را بمنظور ایجاد یک الگوریتم ماکرو ، جمع آوری نمائیم . اگر ما با الگوریتم های میکرو ، آغاز نمائیم ، و حرکت خود را بسمت نمایش ماکروی یک برنامه ، پیش ببریم ، کاری را انجام داده ایم که موسوم به طراحی " پایین به بالا" (buttom-up) ، است . اگر ما فعالیت خود را با یک الگوریتم ماکرو آعاز و حرکت خود را بسمت پائین و الگوریتم های میکرو ، ادامه دهیم ، طراحی از نوع " بالا به پایین " (top-down) را انجام داده ایم .
شاید این سوال مطرح گردد که کدام روش بهتر است ؟ اگر شما تمام مقالاتی را که تاکنون در این زمینه نوشته شده اند را دنبال نمائید ، هرگز به یک نتیجه قابل قبول دست نخواهید یافت . هر رویکرد، دارای نکات مثبت و منفی مربوط به خود است . صرفنظر از رویکرد طراحی استفاده شده ، می بایست دارای الگوئی (طرحی) مناسب برای برنامه باشیم .حداقل، نیازمند یک اعلامیه از مسئله برنامه نویسی و یک طرح ( الگو) برای برخورد با مسئله ، خواهیم بود . پس از شناخت مسئله ، می توان نحوه حل مسئله را ترسیم کرد. شناخت عمیق و مناسب نسبت به مسئله ای که قصد حل آن را داریم ، شرط اساسی و ضروری برای طراحی یک برنامه است .
با توجه به اینکه این اعتقاد وجود دارد که شناخت جامع و کلی از مسئله ای که حل آن را داریم ، بخشی ضروری در اولین مرحله برنامه نویسی است ، ما در ادامه از رویکرد "بالا - پایین "، تبعیـت می نمائیم . فراموش نکنیم که رویکرد فوق ، امکان مشاهده مجازی از هر مسئله برنامه نویسی را فراهم خواهد نمود.