چشم انداز

D چیست؟

D یک زبان برنامه‌سازی سیستمی و کاربردی همه منظوره است . D یک زبان سطح بالاتر از ++C است اما توانایی نوشتن کدهای قدرتمند و تعامل مستقیم با APIهای سیستم عامل و سخت‌ افزار را حفظ می‌کند.D به خوبی برای نوشتن برنامه‌های متداول و برنامه‌های بزرگ چند میلیون خطی با تیمهای برنامه نویسی مناسب است . D به آسانی قابل آموختن است ، توانائیهای زیادی را برای کمک به برنامه ‌نویس فراهم می‌کندوبه خوبی برای فناوری پرتکاپوی بهینه‌سازی کامپایلر مناسب است.

D یک زبان اسکریپتی(متنی) یا دارای مفسر(interpreter) نیست. همچنین دارای ماشین مجازی ، مذهب خاص یا فلسفه برتری‌جویی نمی باشد. بلکه یک زبان عملی است برای برنامه‌ نویسان حرفه‌ای که به انجام سریع و قابل اعتماد پروژه و کد قابل فهم آسان نیاز دارند و مسئول عملکرد صحیح برنامه هستند.

D اوج چند دهه تجربه به کارگیری کامپایلرهایی از زبانهای گوناگون و تلاش برای بنانهادن پروژه های بزرگ توسط آن زبان‌ها است.

D از زبانهای دیگر مخصوصاً ++C الهام می‌گیرد و آن را با تجربه و کاربرد به معنای واقعی درهم می‌آمیزد.

چرا D ؟

واقعاً چرا؟ چه کسی نیاز به زبان برنامه ‌نویسی جدید دارد؟

صنعت نرم‌ افزار راه درازی از زمان اختراع زبان C تا کنون پیموده است. به وسیله ++C تعداد زیادی مفاهیم جدید به زبان C افزوده شد. اما سازگاری با گذشته C در آن ادامه یافت ، شامل سازگاری با تقریباً تمام ضعفهای طراحی اصلی زبان C .

تلاشهای زیادی برای برطرف ساختن آن ضعفها تاکنون صورت گرفته است اما در پی پا فشاری بر حفظ سازگاری با گذشته خنثی شده است. در ضمن هر دوی C و ++C دستخوش یک رشد پیوسته خصوصیات جدید شده ‌اند.

این خصوصیات جدید باید به دقت و بدون نیاز به بازنویسی کد قدیمی به ساختار موجود خورانده شود. نتیجه نهایی بسیار پیچیده است ؛ C استاندارد تقریباً 500 صفحه است و ++C استاندارد حدود 750 صفحه ! در زمینه کامپایلر های ++C واقعیت این است که تعداد اندکی از کامپایلر های موجود ،استاندارد این زبان را به صورت مؤثر و کامل پیاده سازی می کنند.

برنامه نویسان ++C گرایش می‌ یابند که در جزایر خاصی از زبان برنامه بسازند ، از بعضی خصوصیات ماهرانه بهره می گیرند در حالی که از به کار بردن بسیاری از خصوصیات دیگر اجتناب می کنند. با وجود اینکه کد ++C از یک کامپایلر به کامپایلر دیگر قابل حمل است می‌تواند به سختی از برنامه نویسی به برنامه نویس دیگر منتقل شود.

توانایی بزرگ ++C این است که می‌تواند تعداد زیادی سبک های اصلی برنامه‌نویسی را پشتیبانی کند. اما در کاربرد طولانی مدت ، سبکهای دارای اشتراک یا تناقض یک مانع و در نتیجه وقت گیرند.

ناامید کننده است که زبانی چنین قدرتمند ، اعمال پایه‌ا ای مانند تغییر اندازه آرایه‌ها و الحاق رشته‌ها را انجام نمی‌دهد. البته ++C توانایی برنامه نویسی قدرتمند برای پیاده سازی آرایه های قابل تغییر اندازه و رشته ها را فراهم می‌کنند (مانند نوع بردار در STL ) . اما به هرحال چنین خصوصیات بنیادی ، بایستی جزء قسمتهای زبان باشد. آیا قدرت و قابلیتهای ++C ، قابل گسترش ، طراحی مجدد و پیاده‌سازی به یک زبان ساده وارتگنال (منحصر به فرد و مستقل) و کاربردی می‌ باشد؟ آیا تمامی آنها می‌ تواند داخل بسته‌ ای قرار گیرد که برای کامپایلرنویسان به آسانی قابل پیاده‌سازی صحیح باشد و کامپایلرها را قادر کند که به نحوی کارا ، کدهای بهینه شده و پرتکاپو ایجاد کند؟

فناوری پیشرفته کامپایلر به نقطه‌ای رسیده است که خصوصیاتی از زبان که به منظور جبران کردن ناتوانی فناوری ابتدایی کامپایلر وجود دارند ، می‌توانند حذف شوند. (مثالی ازاین نمونه می‌تواند واژه کلیدی 'register' در C باشد ، مثالی ظریفتر ماکروی پیش‌پردازنده در C است) . ما می‌توانیم به فناوری پیشرفته‌ی بهینه سازی کامپایلر اعتماد کنیم تا دیگر به خصوصیاتی از زبان که برای دست یافتن به کیفیت کد قابل‌قبول (جدای از کامپایلرهای ابتدائی) لازم است نیاز نداشته باشیم.

D درنظر دارد که هزینه‌های گسترش نرم‌افزار را حداقل %10 کاهش دهد توسط افزودن خصوصیات بهینه‌سازی بالابرنده میزان سودمندی و تولید ، همچنین با تعدیل کردن خصوصیات زبان ، به طوری که اشکالات وقت‌گیر متداول از ابتدا حذف می‌شوند.

منظره کلی D شبیه C و ++C است . این موضوع آموختن D و انتقال کد به آن را آسانتر می‌کند. گذر از C/++C به سوی D باید طبیعی حس شود و برنامه نویس مجبور نخواهد بود که یک راه کاملاً جدید انجام کارها را فراگیرد. استفاده از D به این معنا نیست که برنامه نویس به یک ماشین مجازی خاص زمان اجرا محدود شود مانند ماشین مجازی جاوا یا Smalltalk . هیچ ماشین مجازی D وجود ندارد .D یک کامپایلر سرراست است که Objectfile های قابل پیوند (Link) تولید می‌کند. D دقیقاً مانند C به سیستم عامل متصل می‌شود . ابزارهای آشنای متداول مانند make مستقیماً در برنامه‌نویسی D گنجانده شده است

منبع:http://www.technotux.com    

OGG Vorbis: فرمت صوتی آزاد

فـرمـت OGG یـک فرمـت بازمتن و آزاد است که در streaming و فشرده سازی فایل‌های صوتی و ویدئویی بـکــار می‌رود. حتما همگی با فرمت MP3 که برای فشرده سازی فایل‌های صوتی بـکــار می‌رود آشنــا هستید، OGG Vorbis جایگزینی آزاد و بازمتن برای این فرمت به شمار می‌رود. بسیاری از نرم‌افزارهای پخش کننده کنونی قـادرنــد تــا این فرمت را پخش کنند. OGG دارای سه سیستم فشرده سازی (Codec) مختلف می‌باشد:

- سیستم Vorbis برای فشرده سازی فایل‌های صوتی
- سیستم Speex برای فشرده سازی صدای انسان [۱]
- سیستم Theora برای برای فشرده سازی ویدئو [۲]

در این مقاله ما به OGG Vorbis می‌پردازیم. اطلاعات کــامـل در باره OGG Vorbis را می‌توانید در [۳] ببینید. کتابخانه‌ها و ابزارهای مربوط به فرمت OGG Vorbis بطور پیش گزیده در سیستم‌عامل گنو/لینوکس موجود هستند.

استفاده از OGG Vorbis چه مزایایی دارد؟
با استفاده از OGG Vorbis قادر هستید تــا بطـــور کامل فرمت MP3 را کنار بگذارید. بـــرای طـرفداران نرم‌افـــزارهای آزاد و اصول آزادی نــــرم‌افزار استفاده از فرمت‌های آزاد دارای اهمیت بالایی است. علاوه بر این موضوع، برخی دیگــر از مزایای استفاده از این فرمت عبارتند از:
- OGG Vorbis قادر است تا فایل‌ها را بــا فشــردگی بیشتـری از MP3 ولی با همان کیفیت کد نماید. این فشردگی برای سایت‌های ارائه کننده خدمات موسیقی باعث صرفه جویی فراوانی در هزینه‌های پهنای باند خواهد شد.
- سیستم استاندارد گذاشتن توضیح بر روی فایل‌ها موسیقی بـاعث می‌شود تا براحتی بتوانید مشخصات خود را بر روی فایل‌های موسیقی ذخیره نمایید.
- در صورتی که قصد داشته باشید تا موسیقی خود را بــا فـرمـت MP3 بــه فروش برسانید، باید درصدی از فروش را بابت حق ثبت شده فرمت MP3 به Fraunhofer (مالک فرمت MP3) بپردازید. با ارائه موسیقی با فرمت OGG Vorbis این هزینه را متحمل نخواهید شد.
- در صورتی کــه شمـا یـک تـوسعـه دهـنـده نرم‌افزار باشید، قادرید تا بـدون هزینه‌های Licence از فرمت OGG Vorbis در نرم‌افزارهای خود استفاده کنید. تعدادی از تـولیـد کـنندگان بزرگ بازی مانند EA Games، Epic Games و PopCap Games به استفاده از این فرمت روی آورده‌اند. مجوز OGG Vorbis استفاده از آن را در نــرم‌افزارهای تـجاری و اختصاصی امکانپذیر می‌سازد.
- کیفیت صوتی فایل‌های فشرده شده با OGG Vorbis در مقایسه با MP3 در سطح بهتری قـرار دارند. یک نمونه مقایسه را می‌توانید در [۴] ببینید.
- با استفاده از سرویس‌دهنده Streaming موسوم به Icecast می‌توانید فایل‌های OGG را بــر روی شبــکه و بصورت زنده پخش نمایید. [۵]

مجوز OGG Vorbis
بسیاری از ابزارهای جـانـبـی مـورد استـفاده بــرای ایـجـاد یـا تـبـدیل بـه فـرمـت OGG Vorbis تـحت مجوز GNU/GPL ارائه می‌شوند. کتابخانه‌های Vorbis نیز تحت مجوزی سازگار با مجوز BSD ارائه می‌شوند.

تبدیل فایل‌های MP3 به OGG
ابــزارهای متـعـددی بــرای تبــدیل فـایل‌های MP3 به OGG وجود دارد که می‌توانید تعدادی از آنها را در [۶] ببینید. نه تنها امکان تبدیل MP3 به OGG وجود دارد، شـمـا می‌تـوانـیـد هــر فــرمـت دیگری را نیز به این فرمت تبدیل نمایید. یکی از این فرمت‌ها فرمت WAV می‌باشد. یکی از ابزارهای خوب در این زمینه کــه حـتـی قـادر بـا تبدیل آسان دایرکتوری‌های حاوی فایل‌های MP3 نیز می‌باشد، ابزار mp32ogg است که در توزیع‌های مبتنی بر دبیان می‌توانید آنــرا بــا استـفـاده از دستور apt-get install mp32ogg نصب نمایید. نحوه استفاده از این ابزار بسیار ساده است:

$ mp32ogg [Files...] [Directories...]

تنها نقطه ضعفی کـه این ابزار داراست، عدم توانایی در تبدیل فایل‌هایی است که در نام آنها فضای خالی (space) وجود دارد. برای برطرف کردن این نقطه ضعف می‌توانید با یک اسکریپت کوچک همانند مثـــال زیـــر، فـضای خالی موجود در نام فایل‌های موجود در یک دایرکتوری را اصلاح نمایید:

#/bin/bash
find . -type f -name "* *" -print |
while read name; do
na=$(echo $name | tr ' ' '_')
if [[ $name != $na ]]; then
mv "$name" $na
fi
done

می‌توانید دستورات بالا را در یک فایل به نــام مثــلا rmspace ذخیره کـرده، آنرا در مسیر usr/bin/ کپی و مجوز اجرا به آن داده و در مواقع لازم از آن استفاده کنید:

# cp rmspace /usr/bin/
# chmod +x /usr/bin/rmspace

عملیات تبدیل عملیاتی است زمان‌بر کــه کـاملا وابسته به میزان قــدرت پــردازنده سیستم متغییر اســت. مـمـکن است برای تبدیل یک مجموعه بزرگ از فایل‌های MP3 یا WAV مجبــور بـاشیـد چـنـد روز زمــان صــرف کـنـیـد. ایــن عـمــلیات در پــردازنده‌های بـــا کاشه کم مانند پردازنده‌های Celeron محصول اینتل و Duron محصول AMD بسیار بیشتر طول خواهــد کشید. تبدیل یک فایل حدود ۴ مگابایتی بر روی یک پردازنده Athlon 1333 Mhz تقریبا ۳۰ ثانیه به طول می‌انجامد.
با استــفاده از ابــزار oggenc قادر خواهید بــود تـــا فایل‌های WAV را به OGG تبدیل و با oggdec برعکس این کار را انجام دهید.

نام OGG از چه بر گرفته شده است؟
سایت این پرسش برای شما پیش آمده باشد که نام OGG از چه بر گرفته شده است. ایــن نــام از نام شخصیتی به نام Nanny OGG در رمان‌های Discworld نوشته Terry Pratchett گرفته شده است. [۷]
اطــلاعات کامــلتر در مـورد فرمــت OGG و مشخصات دقیق آنرا می‌توانید از وب سایت رسمی آن [۳] و صفحه FAQ تهیه شده در این سایت دریافت کنید. [۸]

پخش کننده‌های نرم‌افزاری OGG
تقریبا تمامی پخش کنـنـده‌های نـرم‌افزاری ارائه شــده تـحــت سـیـستم عامل گنو/لینوکس قادر به پخش فایل‌های OGG می‌باشند. بسیاری از نرم‌افزارهای تجاری ارائه شده برای سیستم‌عامل‌های دیــگـر نیز قادر به پخش این فرمت هستند. ایست کاملی از این نرم‌افزارها را می‌توانید در [۹] ببینید.

پخش کننده‌های سخت‌افزاری OGG
امروزه استفاده از پخش کننده‌های موسیقی دیجیتال هـمـراه بسیــار رایــج شـــده است. به عنوان یک استفاده کننده از فرمت OGG، احتمالا این امر برای شما مهم است که پخش کننده شما توانایی پخش OGG را داشته باشد. جالب است بدانید برخی از پخش کننده‌های بسیار معروف مانند ipod شرکت Apple از فرمت OGG پشتیبانی نمی‌کنند! البته این امر تا حدی اعتــراض بــرخی از کاربران را بر انگیخته است. (من هم دقیقا به همین خاطر از خریداری iPod Shuffle خودداری کردم!) از پخش کننده‌های شرکــت مایــکــروسافت هــم نبــاید انتــظار پشتیبانی از این فرمت را داشته باشید. برخی از مدل‌های ارائه شده توسط iRiver و Creative (که در بازار ایران موجود هستند) از این فرمـت پشتـیـبانی می‌کنـند. پخش کننده‌های yepp محصــول سـامسونگ که به طور متنوعی در بازار ایران موجودند نیز به خوبی از ogg پشتیبانی می‌کنند. من شخصا از شنیدن سخنرانی‌های ریـچـارد استـالـمـن بـر روی پـخـش کـنـنده YP C1Z خـود با فرمت OGG لذت فراوانی می‌برم! :-)

منبع:http://www.irantux.com