بایگانی روزانه: ژوئن 1, 2008

ویندوز 7 ، هسته کم حجم را هدف گرفته است!

بالغ بر 200 برنامه نویس در حال ساخت هسته (Kernel) جدید برای سیستم عامل آتی میکروسافت یعنی ویندوز 7 هستند که MinWin نام گذاری شده!

این کرنل دارای حدود 100 فایل به حجم تقریبی 25 مگابایت هست که واقعا قابل مقایسه با حدود 5000 فایل در کرنل 4 گیگابایتی ویندوز ویستا نیست.

توجه داشته باشید که کرنل ، یک رابط گرافیکی کاربر نیست ، بلکه این بخش از ویندوز ، پایه و اساس سیستم عامل بوده و کاربردها و سایر بخشهای سستم عامل ، بر اساس اون نوشته و توسعه داده میشن.

هسته جدید قراره در انتشارهای بعدی ویندوز ، ویندوز سرور و همچنین سیستمهایی مانند Embedded Devices مثل سامانه های اسکن و … بکارگرفته بشه.

مطالب بیشتر در این زمینه رو میتونید در لینکهای زیر بخونید:
- Windows get a ‘Mini-Me’
- Microsoft to trim Windows bloat for 2010
- http://www.osnews.com/story.php/18804/Thoughts-on-MinWin-Windows-7-and-Virtualisation/
- Microsoft builds minin Windows core

چرا امروزه نمی توان یک برنامه نویس خبره شد؟

تغییرات و نوآوری های لحظه به لحظه در فن آوری های مختلف ، عملا امکان اینکه بتونید در کاری بطور کامل مسلط و خبره بشید رو از بین می بره !

این موضوع زمانی برام تجربه شد که سالها پیش در پی یک پروژه نرم افزاری ، نیاز داشتم تا با لیسپ برنامه نویسی کنم.یادگیری موثر لیسپ احتیاج به مطالعه منابع و مستندات بسیار زیادی داشت.تمرین ، تکرار ، آزمون و خطا و….

مقایسه میزان دانش مورد نیاز برای تسلط به C ، پاسکال و شاید کوبول ، در مقابل پلاتفرمهای مدرن امروزی مانند دات نت و جاوا ، واقعا تفاوتهای فاحشی رو نشون میده.تعداد دستورات بسیار کمتر ، انواع داده محدود تر ، عملگر های کمتر و ساده تر ، و….

بگذارید یه نگاهی به کتابخانه های نرم افزاری تولید شده در سال 1991 بیندازیم.سالیکه عملا بلوغ ویندوز از اینسال آغاز میشه.به یکباره تعداد زبانهای برنامه سازی فراوانی در محیطهای Mainframe ارائه میشن.رابطهای کاربری عمدتا متنی بوده و از قابلیتهای موشواره بهره ای نمی برند.اعتبارسنجی داده های ورودی به سهولت انجام میشن.شما بسادگی در برابر پیامی مانند: «لطفا کلیدی را جهت ادامه بفشارید » عکس العمل ساده و مناسبی رو انجام خواهید داد. رخداد (Event) ، برنامه نویسی شی ء گرا (OOP ، زبانهای ایجاد رابط کاربری از نوع Markup مانند XAML و HTML ؟ معماری N-Tiered ؟ دسترسی اشتراکی به منابع ، تحت شبکه ؟ بومی سازی یا Globalization ؟ هنوز خبری از اینها نیست.زندگی خیلی آسون بنظر میرسه.

من براحتی و با صرف زمان کمی برنامه سازی با Perl/CGI رو آغاز کردم.برنامه نویسی در محیط Perl شباهت زیادی به برنامه نویسی در کوبول داشت.داشتن مستندات 50 صفحه ای از Perl کافی بنظر میرسید تا بتونید یک برنامه نویس خوب با Perl باشید.نیازی به دانستن مباحثی از قبیل SQL Injection نداشتیم و اصولا یک چنین نگرانیهایی وجود نداشت.من تخصص خوبی در Regular Expressions کسب کرده بودم.

در سال 1995 همزمان با معرفی رسمی جاوا توسط شرکت Sun ، یادگیری اونرو شروع کردم و بسیار برام حیرت آور بود: حدود 200 مگابایت راهنما و نمونه کدهای جاوا در قالب پرونده های HTML و بیش از یکهزار صفحه راهنمای چاپی! البته جاوا از آن زمان تا به کنون ، تغییرات زیادی رو شاهد بوده است.

زبانهای #C و VB.Net هم دست کمی از جاوا نداشتند.دست کم 500 صفحه راهنما برای داشتن دید کلی از برنامه نویسی با یکی از اونها ، ضرورت یک برنامه نویس بود.و البته در این میان ، PHP هنوز برتری منحصر بفردی داره ! بسیار ساده هست و بسرعت میتونید اونرو فرابگیرید ، حجم راهنماها بسیار کم هستند.و البته رایگان.

در مقابل ، محیطهای #C و جاوا ، بسیار گران و البته پیچیده.اگر کسی پیدا بشه که به من بگه : من توی یکی از ایندو یا هردوشون خبره هستم ، من بهش حتما خواهم گفت: یک دروغگوی بزرگ! و البته من به این موضوع باور دارم.

من کار حرفه ای با دات نت رو از ابتدای معرفی این پلاتفرم در سال 2002 شروع کردم ، اما نمیتونم بگم که در این محیط یک متخصص هستم! بلکه تنها میتونم بگم که تخصص خوب و بالایی در کار با System.Drawing ، System.Threading ، System.Net.Web و System.Text.RegularExpressions دارم.حجم اطلاعات اونقدر بالاست که در بسیاری موارد بیاد آوردن متدها ، ویژگیها و …. کار ساده ای نیست و براستی باید از پدیده IntelliSense توسط میکروسافت تقدیر کرد.

بنظر میرسه که باید بازتعریفی در مفهوم برنامه نویس خبره بشه.یک برنامه نویس خبره ، دیگه کسی نیست که دانش و همچنین تجربه زیادی در اینکار داره! بلکه برنامه نویس خبره ، شخصیه که ابزارها ، منابع و روشهای بدست آوردن اطلاعات مورد نظرشون در باره حل مسایل برنامه نویسیش برای رسیدن به هدفش بخوبی میدونه.

و حقیقت اینه که امروز ، عصر کتاب باز یا Open Book هست.یعنی شما به منابع اطلاعاتی بدون محدودیت دسترسی دارید ، فقط باید بدونید چطور از اونها استفاده کنید ، و برتری شما ، در سرعت رسیدن به اطلاعات مورد نظرتون ، تواناییتون برای بکارگیری ابزارهای اطلاعاتی ، و دادن ایده های خلاقانه است ! توجه داشته باشید تمام اینها به این معنی نیست که فقط ابزار شناس باشیم و روش شناس.دونستن مبانی و بویژه تاریخچه اونها از لوازم اصلی هر کاریه.

cobol : زنده یا مرده ؟

اگر برنامه نویس با سابقه ای باشید ، حتما لحظاتی از زندگیتون رو بیاد دارید که از برنامه نویسی با کوبول لذت می بردید.

بسیاری از پیشکسوتان امنیت و هک در نرم افزار ، برنامه نویسی رو با کوبول شروع کرده اند.شاید بسیاری از شما تصور می کنید که این زبان دیگر کاربردی نداشته و برنامه نویسان آن شغل خودشون رو از دست داده اند!

آیا واقعا اینطور هست؟ نگاهی به مقاله چاپ شده در مجله ComputerWorld حتما نظرتون رو تغییر خواهد داد.

بر اساس مطالعات آماری انجام شده ، کوبول ، متداولترین زبان برای تولید نرم افزارهای تجاری بوده و هست.بر اساس مطالعه ای که در سال 1997 انجام شد ، 85% نرم افزارهای تجاری/مالی جهان بزبان کوبول نوشته شده بودند که شامل بیش از 200 میلیارد خط برنامه بوده است.آخرین آمار مربوط به سال 2007 بوده که نشون میده هنوز 60% نرم افزارهای تجاری/مالی بزبان کوبول هستند و توسعه اونها ادامه داره!

بدلیل ماهیت نرم افزارهایی که با کوبول نوشته شدن ، حجم زیاد برنامه ، حساسیتهای مالی و امنیتی و …. شرکتهای استفاده کننده از این نرم افزارها بدنبال راهی هستند تا برنامه های کوبولی خودشون رو با کاربردهای امروزی سازگار کنند.جالبه که بدونید بر اساس مطالعات آماری ، بسیاری از برنامه نویسان این کاربردها ، یا بازنشسته شدند و یا در حال بازنشستگی هستند.

بر اساس مطالعه ای که در سال 2004 انجام شده ، حدود دو میلیون برنامه نویس حرفه ای کوبول در دنیا وجود داشت که همین مطالعه نشون میده که بطور متوسط سالانه 5% از این برنامه نویسان یا فوت میکنن یا بازنشسته میشن.

بنابر این به نظر میرسه با توجه به مطالب فوق ، زبان کوبول هنوز یک زبان برنامه نویسی پردرآمد برای کسانیست که بدنبال درآمد هستند و جالبه بدونیم که متوسط دریافتی این برنامه نویسان حدود 2/5 برابر برنامه نویسان دات نت و جاوا است.

نگاهی گذرا به سایت salary.com و شرکتهایی که متقاضی برنامه نویس هستند و ویژگیهای مورد انتظار اونها در بخش مهارتهای برنامه نویسی ، خود گویای این مطلب هست.

موفق باشید.

برنامه نویسی را چگونه آغاز کنم ؟ قسمت سوم و آخرین قسمت

در پاسخ به کامنتهای دوستان مبنی بر رئوس مطالبیکه باید از شروع تا برنامه نویس تجاری شدن یاد بگیرید اینجا می نویسم.مطالب باید به ترتیبی که گفته میشه فراگرفته بشن و هر مقاطع لازم هم پروژه ای انجام و کدهای زیادی در همون مطلب مرتبط از برنامه ها و کدهای خوب ، خونده بشن:

1- ترم 1:

- مقدمه ای بر برنامه نویسی:شامل ساختار اصلی یک برنامه ، عبارات کنترل برنامه ، حلقه ها ، دستورات شرطی و… در این مرحله نیازی به آشنایی با مفاهیم OOP نیست و تاکید بر عادات خوب برنامه نویسی هست.موضوعاتی از قبیل نکاتیکه باید برای خوانایی کد رعایت بشه و مسایلی از این دست که در برخی پستهای قبلی اشاره کردم.بنظرم میرسه ، زبان VB زبان مناسبی باشه هرچند شخصا Rubby و پاسکال رو توصیه میکنم.

- منطق برنامه ، مفهوم کلمات کلیدی در زبانهای برنامه سازی ، نحوه و مراحل کد نویسی ، ترجه ، تفسیر تا تولید برنامه اجرایی

- مبانی شبکه و مدیریت سیستم: عمده تمرکز بر روی مفاهیم کلیدی شبکه و همچنین آشنایی کامل با TCP/IP

2- ترم 2: شامل:

- درک مفاهیم Usability یعنی نحوه شناسایی نیازهای اساسی کاربران نهایی نرم افزار و Accessibilty یعنی نیازهای اختصاصی کاربران.

- تئوری بانکهای اطلاعاتی

- مهارتهای اصلی برنامه نویسی: در این مرحله ، دانشجو/نوآموز باید با مفاهیم کتابخانه توابع آشنا باشه و بتونه برای برنامه هاش کتابخانه ایجاد بکنه.روش تهیه این کتابخانه ها و روش تشخیص توابع کتابخانه ای و …. که بتونه توسعه نرم افزار رو تسهیل بکنه از مهارتهای اصلی این دوره هست که باید فراگرفته بشه.

-طراحی بروش OOP

3- ترم 3: شامل:

- ساختمان داده : که حتما باید با C آموخته بشه و تمامی عناوینش با جزییات آموخته بشه ، صف ها ، گرافها ، درختهای دودویی ، پشته ، لیستهای پیوندی و ….

- مستند سازی مشخصه های فنی: در این بخش باید یاد بگیرید که چگونه مشخصه نیازمندیهای کاربر رو دریافت کنید و اونرو به فرمی از مستندات فنی تبدیل کنید.همچنین در این دوره مقدماتی از روش UML گفته میشه.

- برنامه نویسی کاربردهای مبتنی بر بانک اطلاعاتی و Client/Server

- مبانی طراحی صفحات وب: در این زمان باید HTML و CSS و همچنین جاوااسکریپت بطور کامل فراگرفته بشه.

4- ترم 4: شامل:

- اعتبار سنجی داده ها: باید روشهای اعتبارسنجی داده ها و بخصوص مفاهیم Regular Expressions بطور کامل آموخته بشه.

- برنامه نویسی ++C : در حد مقدماتی

- آشنایی با زبانهای برنامه سازی مبتنی بر مفسر: باید قابلیتها و امکانات ، تفاوتها و محل کاربرد هر یک از زبانهای Perl , Ruby , Python و جاوااسکریپت فراگرفته بشه.

- طراحی گزارش: در این مرحله باید اصول طراحی گزارش و مفاهیم اون و مدلسازی داده ها برای ساخت گزارش آموخته بشه.

5- ترم 5: شامل:

- زبان ++C پیشرفته کار با OOP و کلاسها و جریانها و ….

- معماری بانک اطلاعاتی : نحوه طراحی بانک اطلاعاتی متناسب با نوع نرم افزار و پیاده ساطی این طراحی بزبان SQL

- روشهای توسعه و تولید نرم افزار: باید مفاهیم RUP و فازهای اون و روشهای توسعه نرم افزار اعم از آبشاری ، RAD و … کاملا فراگرفته بشه.

6- ترم 6: شامل:

- برنامه نویسی بزبان جاوا : ترجیحا در محیط Eclipse

- برنامه نویسی بزبان VB.Net

- برنامه نویسی بزبان #C

- مفاهیم امنیت نرم افزار ، قفل گذاری ، محافظت از برنامه و بانک اطلاعاتی و مفاهیمی از قبیل Hack & Crack و همچنین SQL Injection و….

7- ترم 7: شامل:

- برنامه نویسی یونیکس: بهمراه آشنایی با مفاهیم و معماری یونیکس

- برنامه نویسی ویندوز بهمراه آشنایی کامل با معماری و مفاهیم ویندوز

- آنالیز کیفی(QA)

- مستندسازی: شامل روش و استانداردهای نوشتن توضیحات در داخل کد ، تهیه مستندات راهنمای کاربران و…

8- ترم 8: شامل:

- برنامه نویسی گروهی(تیمی): مهارتهای کار در گروه و کار گروهی ، روشهای مدیریت گروههای نرم افزاری ، بهمراه شرکت اقلا در دو پروژه که بصورت گروهی کار شده باشه.

- توسعه نرم افزارهای چند رگه ای (multithread)

- برنامه نویسی گرافیکی و DirectX و OpenGL بویژه با ++C

- نحوه نوشتن ابزارگردان یا Device Driver

- نحوه نوشتن برنامه های شبکه (Sockets) مانند فایروالها ، و….

موفق باشید.

تفاوت برنامه نویس و توسعه دهنده

اگر فرهنگ لغات رو باز کنیم و معنی کلمات زیر رو  ببینیم :

Programmer= One who programs

و

Developer= One that develope

خب . به نظر نمیرسه که معنای فوق چندان رسا باشه.اگر نگاهی به تقاضاهای مشاغل مرتبط با نرم افزار بیاندازید می بینید که مثلا میگن توسعه دهنده وب و یا برنامه نویسی سی شارپ ! در حالیکه هیچوقت نمیگن توسعه دهنده سی شارپ و یا برنامه نویس وب!

تفاوتهای ایندو واقعا اهمیت دارند و برای مدیران شرکتها ، انتخاب اشتباه و یا نداشتن درک صحیح از ایندو مفهوم واقعا میتونه منجر به خسارت و بحران جدی در مدیریت پروژه ها بشه.

در واقع برنامه نویس شخصی هست که هیچ کاری نمیکنه بجز اینکه کد بنویسه و همچنین باگها رو برطرف بکنه.برنامه نویس هیچوقت مشخصه نیازمندیها و توانایی های نرم افزار رو تعیین نمیکنه . برنامه نویس هیچگاه سیستم خودکار تست نرم افزار نمی نویسه.(Automated Test Case) برنامه نویس هیچ نقشی در به روز نگهداشتن نرم افزار متناسب با نیاز روز نداره ، بعبارت دیگه اون هیچ کاری به شناسایی نیازهای روز یک فن آوری یا یک مشکل نداره.برنامه نویس هیچ کمکی به مشتریان برای حل مشکلاتشون نمیکنه.برنامه نویس هیچگاه مستندسازی نرم افزار رو چه مستندات فنی اولیه (UML) و چه مستندات نهایی شامل راهنمای کاربران ، راهنمای نصب ، راهنمای رفع اشکالات و…. رو انجام نمیده.برنامه نویس هیچ کمکی به تست نرم افزار نمیکنه.اون حتی کدهایی رو که خودش نوشته بندرت دوباره مرور می کنه و در عوض عادت داره کدهای جدید بنویسه.

در بسیاری از شرکتهای نرم افزاری ، ما احتیاج چندانی به این دسته از متخصصین نداریم.در عوض ، بجای برنامه نویس (یعنی شخصی که فقط کد می نویسه و بهتره بگیم:کدنویس) ما نیاز به توسعه دهنده داریم.یعنی اشخاصی که در تمامی طول پروژه از ابتدای تعریف اون و مستندسازیش تا آخر یعنی نصب و پشتیبانی اون مشارکت می کنند تا نهایتا محصول موفقی رو ارائه بدن.

در واقع چند تفاوت اساسی بین شرکتهای نرم افزاری بر اساس بزرگی اونها وجود داره:

- شرکتهای کوچک: در این شرکتها ، هر کارمند باید آچار فرانسه باشه و هر کاری رو بتونه انجام بده.یه حسابدار باید بتونه تایپ کنه ، چای سرو کنه ، جارو بزنه ، تلفنها رو جواب بده.یک برنامه نویس باید مستند سازی بکنه ، پشتیبانی بکنه و …. خلاصه بگم هر کسی باید بتونه کار رو راه بندازه و در واقع دیگران نمیدونن چگونه کارها توسط دیگران راه میافتن و فقط میبینن که کارها انجام میشه.در این شرکتها تمایلی برای اینکه افراد هر کدوم تخصص ویژه ای در کار معینی داشته باشند و صرفا به همون کار بپردازن وجود نداره.

- شرکتهای بزرگ: در این شرکتها متخصصین زیادی وجود دارند که هر کسی کار خودشو انجام میده.کارهای مالی تنها توسط حسابدار انجام میشه.کد نویسی رو برنامه نویسان می کنند.معماران نرم افزار ، طراحی نرم افزار رو بعهده می گیرن.مدیران پروژه ها زمانبندی و هدایت تیم رو بعهده دارن.و خلاصه ، هر شخصی کاری رو که بخوبی و صریح براش تعریف شده رو انجام میده و نه بیشتر.

در واقع یک توسعه دهنده ، شاید همه کارهایی رو که گفتیم انجام نده ، اما به همه اونها مسلطه.و تسلط اون باعث میشه تا در روند تولید نرم افزار بتونه مشارکت خوبی با اعضای تیم داشته باشه و با آگاهی کاملی که داره علیرغم وظیفه تعریف شده وی در تیم ، از کار سایر اعضاء بخوبی مطلعه و میتونه هم ایده بگیره و هم ایده بده .

موفق باشید.

10 علامت آمادگی برای توسعه دهنده شدن!

بسیاری از کسانیکه سالهای متمادی برنامه نویسی می کنن ، شاید هیچگاه به برخی خلق و خوها و عاداتشون فکر نکرده باشن ، اما واقعا در مقام یک برنامه نویس ، خصوصیاتی دیده می شه که گاهی منزجر کننده هست و این خصوصیات گاهی علامتی هست که نشون میده : حالا وقتشه که دست از برنامه نویسی برداری و توسعه دهنده بشی!

در مورد تفاوت برنامه نویس و توسعه دهنده در پست های بعدی حتما سخن خواهم گفت.اما این علائم عبارتند از:

1- بیشتر تمایل دارید آموزش ببینید و آموزش بدین تا اینکه خودآموزی کنید.

2- عادت دارید بصورت منظم کار کنید.مثلا روزی 5 ساعت در زمان مشخصی از هر روز رو برنامه نویسی می کنید.توسعه دهنده ها زیاد منظم نیستند.

3- تمایل دارید همیشه سرتون شلوغ باشه ، همیشه در حال کار باشید.استراحت معنی نداره و استراحت و تفریح شما همون کار شماست.

4- مدت زیادی رو نمیتونید با دوستان و اطرافیانتون در جمع ها خوش باشید ، خیلی زود از بودن با اونها خسته می شوید.

5- کارهای بدون نتیجه و بی ثمر زیاد می کنید.مثلا اصطلاحا برای دل خودتون برنامه ای رو شروع می کنید ، مدتی بعد رهاش می کنید و یک برنامه دیگه….

6- در مقایسه با دیگران ، ذهن بسته ای دارید.در برنامه نویسی عمدتا مسایلی هست که بیش از یک جواب براش وجود داره.شما معمولا انتقادها و پیشنهادات دیگر همکارانتون رو بر نمی تابید و اینکار باعث میشه چیزهایی رو از دست بدید.در واقع باعث میشه در برنامه نویسی ملاحظاتی رو در نظر نگیرید.

7- شما جزئی نگر نیستید.

8- به رغم بند 6 ، یک احساس درونی دارید که بر اساس اون ، خودتونرو موفق تر از همکارانتون نمی دونید و نمیتونید به اونها فخر فروشی کنید و برتری خاصی بر دیگر همکارانتون ندارید.

9- ترجیع میدید و اغلب عادت دارید که ابتدا کاری رو شروع کنید ، بعد راجع بهش فکر کنید.

10- شما علاقه چندانی به متخصصینی که دور و برتون هستن و به نظر میرسه موفق هستند ندارید.ممکنه در ظاهر علاقه زیادی رو نشون بدید ولی در خلوتتون از اونها متنفرید.

اگر چنین ویژگیهایی رو دارید ، حالا وقتشه که آستینتون رو بالا بزنید و توسعه دهنده بشین.

مهمترین نکته برنامه نویسی که تابحال به نگارش درآمده!

تصویر زیر رو ببینید ، خود گویای عنوان هست:

تصویر فوق مربوط به ویژوال سی هست.
مرجع:
http://www.myconfinedspace.com/watermark.php?src=wp-content/uploads/2007/06/001grg3w.jpg

بکارگیری برنامه نویس باتجربه: ارزش افزوده ناچیز!

یکی از نویسندگان و نظریه پردازان مدیریت نرم افزار ، به کرات در مورد نحوه بکارگیری برنامه نویسان وترکیب موثر آنها در پروژه های نرم افزار سخن گفته است .بعقیده Frank Wiles ، همیشه استخدام برنامه نویسان حرفه ای (Junior) منجر به ارزش افزوده بالاتری نمی شود.

خلاصه عللی که معمولا توسط وی تشریح می گردد عبارتند از:

- یک برنامه نویس خوب می تواند بطور میانگین برابر 5 تا 10 برنامه نویس دیگر کارآیی داشته باشد.

- پیدا کردن برنامه نویسان خوب و با تجربه ، در هر زبان برنامه نویسی ، کار بسیار سخت و زمانبری است.

- متوسط حقوق مورد نظر برنامه نوسان خوب ، اغلب توسط کارفرمایان قابل توجیه نیست.

- برنامه نویسان خوب اغلب ترجیح می دهند در منزل کار کنند و نه در محل شرکت!

- به نظر می رسد از نظر اقتصادی ، استخدام برنامه نویسانی که توانایی ، پشتکار و علاقمندی به فراگیری یک زبان برنامه نویسی مورد نیاز کارفرما را دارند ، با صرفه تر از استخدام برنامه نویسی است که به آن زبان کاملا مسلط است.

براستی چرا یافتن برنامه نویسان خوب دشوار است؟ شاید یکی از علل اصلی این مطلب آنست که وقتی یک برنامه نویس خوب به استخدام شرکتی درآمد ، کارفرما نهایت تلاش خود را بکار خواهد بست تا از وی برای مدتهای دراز و سالیان طولانی استفاده کند.در واقع وضعیت عرضه و تقاضا این موضوع را در کنترل خود دارد.

همچنین ببینید:
A Guide to Hiring Programmers: The High Cost of Low Quality

WebComic : برنامه نویسان واقعی چه می کنند ؟

تصویر زیر خالی از لطف نیست.با خودمون آشتی کنیم:

8 نرم افزار که کاربران اینترنت از آنها رویگردانند!

اینترنت ، دست آورد های بسیاری برای ما داشته است.ارائه این پدیده ، منجر به بازتعریف مفاهیم متعددی چون تجارت و لذت از زندگی و… گردید.

اما در این میان ، تولید کنندگان نرم افزار ، همواره در رضایت مشریان خود موفق انگاشته نشده اند.در این پست ، تعدادی از نرم افزارهای مورد استفاده توسط کاربران را که کمترین رضایت و شاید بهتر است بگوییم بیشترین شکایت از آنها دیده شده ، را معرفی می نماییم:

1- Adobe Acrobat Reader : همانطور که میدانید این نرم افزار وظیفه خواندن محتویات و کتابهای الکترونیکی را بعهده داشته و شرکت آدوبی در واقع پدید آورنده و مالک این فن آوری در قالب پروندهای PDF یا Portable Document Format هست.اما به نظر می رسد که این نرم افزار حین اجرای اولیه ، دچار گونه ای از بروکراسی اداری است به نحویکه زمان زیادی برای آنکه آماده بهره برداری شود را صرف می کند.و کاربر باید مدتی به تماشای ساعت شنی و انتظار بنشیند! و این درحالیست که برنامه های بسیار سبک و سریعی وجود دارند که از هسته و Activex همین نرم افزار بهره می برند اما بسیار کارآمد تر و کاربرپسند تر هستد.

2- Apple: علیرغم تمامی ویژگیهایی که محصولات شرکت اپل داشته اند مانند سرعت پردازش گرافیکی و صوتی بالا و حجم ذخیره سازی انبوه ، لکن نرم افزارهای این شرکت بشدت به منابع سخت افزاری بالا وابسته اند ، و بقولی خوره منابع سخت افزاری اعم از رم و پردازشگر مرکزی اند.نرم افزارهایی مانند iTunes و Safari بهنگام اجرا ، درصد بالایی از زمان CPU و حافظه را استفاده می کنند که منجر به کندی می گردد و علیرغم این موضوع ، این نرم افزارها دارای نوعی تایمر داخلی برای بررسی وجود آخرین انتشارها و اصطلاحا Auto Update هستند که خود مزید بر مرض کندی می گردد.وقتی چند برنامه از این دست را با هم اجرا می کنید ، تازه یادی از ویندوز خواهید کرد.

3- Windows Update: » ویندوز 4 دقیقه دیگر ریست خواهد شد!» ، «ویندوز تا زمیانیکه تمامی اصلاحیه های دانلود شده نصب نگردد خاموش نخواهد شد» ، «شما باید ویندوز را هم اکنون ری استارت کنید» ، «شما باید منتظر بمانید تا آپدیت ها بطور کامل نصب گردند» ، «لطفا پیش از آنکه آپدیتها نصب گردد از تمامی برنامه هایتان خارج شوید» ، «تعدادی آپدیت جدید آماده دانلود و نصب هستند» …… وای ، خدا بهتون صبر بده اگر ویستا رو نصب کرده باشید!

پیامهایی از این دست که توسط این برنامه ویندوز صادر می گردد شما را به یاد بازیهای رایگان می اندازه که هر از چند گاهی یک پیام تبلیغاتی را به نمایش می گذارند.

4- Real Player: این نرم افزار خواننده پرونده های صوتی rm و… در داخل خود سرویسی بنام Messenge Center دارد که در زمانهای معینی پیامهایی را که عمدتا تبلیغاتی هستند نمایش می دهد.این کارکرد بیشتر به عمل تروجان ها و popup ها شباهت دارد!

5- Java: جاوا ، بخودی خود هیچ عملکردی ندارد.این برنامه تنها زمانی مورد استفاده قرار می گیرد که نرم افزار دیگری ، مبتنی بر آن نوشته شده باشد و در اینصورت این نرم افزار ، بعنوان مجری آن عمل می کند.اما این برنامه در سایر موارد ، تمایل دارد که همواره خود را جلوی چشم شما نگه دارد! اینکه خبرهای جدیدی از سان برایتان داریم ! لوگوی زیبایی در سایت برای مشاهده وجود دارد آیا می خواهید آنرا ببینید؟ واقعا جای تعجب داره ، آخه یک محیط یا پلاتفرم برنامه نویسی رو چه به این کارها!

6- Yahoo: در موردش ننویسیم بهتره ……………..

7- Norton Antivirus: به رغم اینکه آزمایشگاههای نورتون ، همواره در صدر آزمایشگاهها و پژوهشگاههای ویروسهای رایانه ای و مرجع مشاورین امنیتی بوده اند ، اما محصول این شرکت ، بسیار کند بوده و حتی با وجود کندی ، کارایی مناسب و در خور کندی به ارمغان آورده اش را ندارد.

8- Flash: این فن آوری از ابتدا با هدف تولید محتوای متحرک و انیمیشن (پویانمایی) توام با صوت که قابلیت حمل بالا و حجم پایینی داشته باشد ایجاد شد ، و هدف ، آن نبوده که بمانند برخی سایتها ، تمامی یا بخش عمده ای از صفحات را اینگونه محتویات فلشی اشغال کند.محتویات فلشی عمدتا سرعت بارگذاری صفحات را گاهی تا 20 برابر کاهش می دهند و بهتر خواهد بود که بجای آنها از پرونده های GIF و در صورت نیاز به صدای زمینه ای ، از روشهای جاوا اسکریپتی استفاده شود.گرچه بنظر می رسد هم اکنون ، فن آوری Silverlight میکروسافت بسیاری از مشکلات کارایی و سرعت کم بارگذاری فلش را با وجود کیفیت بالای خود ، حل نموده اما در هر حال وجود این دست محتویات برای کاربران واقعا آزار دهنده اند.