PDA

View Full Version : ساخت پخش کننده موزیک بدون استفاده از API و یا ...



fazel-d
یک شنبه 18 مهر 1389, 17:14 عصر
چند وقتی هست که دنبال یه زبان سطح میانی برای پخش موزیک بدون APIهای ویندوز یا هر سیستم عامل دیگری هستم.(یعنی خواندن بایت به بایت فایل و ارسال اون به کارت صدا) یه چیزی در حد زبان اسمبلی که می شه با سخت افزار کار کرد اما منظورم کد زدن به زبان سطح پائین نیست.

البته بیشتر تمرکزم روی پردازش صدا هست. به همین خاطر می خوام بدونم که c/c++ این امکان رو به من می ده؟ هرچند که بخشی از ویندوز رو با اون نوشتن.

PC2st
دوشنبه 19 مهر 1389, 14:46 عصر
یعنی خواندن بایت به بایت فایل و ارسال اون به کارت صدادر سیستم‌عامل گنو/لینوکس چون همه deviceها بشکل فایل در دسترس هستند، پس می‌توانید «داده‌های خام (raw) صوتی» را بصورت بایت به بایت به خروجی صدا بفرستید (همانند خواندن از یک فایل و فرستادن خروجی به dev/audio/). نه تنها در سی++ بلکه در خط فرمان هم می‌شود:


# find / > /dev/audioدستور find لیست همه دایرکتوریها و فایلهای سیستم را چاپ می‌کند اما چون خروجی آن به خروجی صدا فرستاده شده و چون device آن نیز از نوع character است، به خروجی صدا فرستاده شده و صدای نامفهومی شنیده خواهد شد.

در ویندوز (یا هر سیستم‌عامل دیگری) به هر طریقی که بتوانید به خروجی صدا دسترسی مستقیم داشته باشید، باید اطلاعات خام صوتی را (در حالت غیر فشرده) بفرستید.

fazel-d
دوشنبه 19 مهر 1389, 18:18 عصر
نمی دونم، شاید هم این از اطلاعات ناقص بنده باشه. اما هدف بنده در حداقل مورد اون پخش صدا هست و اون هم با یه برنامه نه با دستورات داخلی سیستم عاملها!!

در سیستم‌عامل گنو/لینوکس چون همه deviceها بشکل فایل در دسترس هستند، پس می‌توانید «داده‌های خام (raw) صوتی» را بصورت بایت به بایت به خروجی صدا بفرستید (همانند خواندن از یک فایل و فرستادن خروجی به dev/audio/).


در ویندوز (یا هر سیستم‌عامل دیگری) به هر طریقی که بتوانید به خروجی صدا دسترسی مستقیم داشته باشید، باید اطلاعات خام صوتی را (در حالت غیر فشرده) بفرستید.

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

PC2st
دوشنبه 19 مهر 1389, 19:20 عصر
نمی دونم، شاید هم این از اطلاعات ناقص بنده باشه. اما هدف بنده در حداقل مورد اون پخش صدا هست و اون هم با یه برنامه نه با دستورات داخلی سیستم عاملها!!وسیله صوتی همچون یک stream خروجی است، هر چه که به آن بفرستید، شنیده خواهد شد. نیازی نیست که از دستور داخلی (یا خارجی) پوسته‌های خط فرمان استفاده کنید، می‌توانید خود شما این کار را انجام دهید، کافی است که داده‌ها را بصورت یک stream به وسیله صوتی (audio device) بفرستید. اما برای اینکار شما باید با فرمت آن آشنا باشید.


اما اصل سوال بنده بر روی پردازش صدا و تغییرات بر روی یک فایل صوتی با یه فرمت معمول (بدون هیچ الگوریتم به کار رفته برای اون فایل) مثل wave و یا هر فایل دیگه ای از این قبیل هست.فایل wav برای ذخیره‌سازی یک stream صوتی بکار می‌رود و معمولاً آنرا بصورت غیر فشرده در خود ذخیره می‌کند. هر چند که بعضی از فایلهای wav آن را فشرده می‌کنند ولی شما قبل از استفاده از آنها باید آنرا غیر فشرده کنید. فایل wav ای که بصورت غیر فشرده stream صوتی را درون خود قرار داده، همان «داده‌های خام صوتی» را در خود ذخیره می‌کند بعلاوه یکسری اطلاعات درباره sample rate و تعداد کانالها و ... که لازم هستند. در نهایت شما برای اینکارهایی که گفتید، باید آشنایی کافی با فرمت خام داده‌های صوتی (raw audio format) داشته باشید.

در ادامه خواندن این صفحات خالی از لطف نیست ;)
http://en.wikipedia.org/wiki/Audio_file_format
http://en.wikipedia.org/wiki/WAV
http://en.wikipedia.org/wiki/Raw_audio_format
http://en.wikipedia.org/wiki/PCM


و اینکه این C/C++‎‎‎ این امکان رو به من می ده؟سی++ و سی هر امکانی را به شما می‌دهد ولی اگر منظور شما کتابخانه آن است، کتابخانه استاندارد سی++ و سی به سیستم‌عامل وابسته است (پس در واقع شما نباید از کتابخانه استاندارد این زبان‌ها استفاده کنید!).
بهرحال اینکه نخواهید از هیچ کتابخانه‌ای و API و چیزی استفاده کنید، همه را باید خود شما پیاده‌سازی کنید و این به نظر من راه کاملاً اشتباهی است. جواب این سوال در نهایت، به سیستم‌عامل مورد استفاده مربوط می‌شود زیرا ممکن است سیستم‌عامل به شما اجازه ندهد که در پروسه‌ای خارج از پروسه‌های تعریف شده به سخت‌افزار دسترسی داشته باشید (که معمولاً اینطور است).

fazel-d
چهارشنبه 21 مهر 1389, 12:44 عصر
از اینکه پاسختون جلوتر از سوالات من هست بسیار سپاسگذارم.

اما اصل سوال من انتخاب یه زبان سطح میانی مثل c/c++ و .. هست که در پردازش صدا بکارم بیاد.
من در مورد پردازش صدا اطلاعات چندانی ندارم. فقط میدونم که باید یه سری به مطالب Signal Processing بزنم.

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

اما من دنبال اینم که این وابستگی به سیستم عامل رو کنار بزنم و برنامه من تحت هر platform ای کار کنه.

مثل جاوا (هر چند که اطلاعات دقیقی از این زبان ندارم ولی این امکان رو می ده که بتونیم تحت هر Platform ای برنامه رو Run کنیم)
نمی دونم C/C++ این امکان رو به من می ده یا نه؟


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

در پایان می تونم سوالمو اینجوری مطرح کنم که بین Java و C/C++ برای انجام برنامه های سیستمی کدوم بر دیگری قابل prefer هست و در مباحث Academic قابل استفاده هستند.( دانشگاه های مطرح مثل MIT یا هاروارد و یا دانشگاه های داخلی مثل امیر کبیر ، علم و صنعت حداقل در مقطع ارشد)

PC2st
چهارشنبه 21 مهر 1389, 15:42 عصر
اما من دنبال اینم که این وابستگی به سیستم عامل رو کنار بزنم و برنامه من تحت هر platform ای کار کنه.بنابراین شما می‌خواهید از کتابخانه‌های cross platform استفاده کنید. یعنی کتابخانه‌هایی که چندین بار برای هر سیستم‌عامل بطور کامل نوشته شده‌اند. مثلا من کتابخانه‌ام را برای ویندوز می‌نویسم، سپس همان کتابخانه را با همان توابع و ساختارها، برای گنو/لینوکس آماده می‌کنم (پورت می‌کنم).

برای کتابخانه‌های موجود به خاطر عدم آشنایی، نمی‌توانم کتابخانه خاصی را پیشنهاد کنم:
http://stackoverflow.com/questions/1761212/any-good-c-c-dsp-library
http://www.music.helsinki.fi/research/spkit/documentation/SPKit.html



پس چطور بخشی از ویندوز رو با این زبانها نوشتن، در صورتی که شما می فرمائید برای استفاده از برخی امکانات نیاز به کتابخانه های وابسته به سیستم عامل دارید؟:گیج:برای نوشتن سیستم‌عامل ابتدا باید هسته (کرنل kernel) آن را نوشت. برای نوشتن کرنل به زبان سی++ نباید از هیچ کتابخانه‌ای استفاده کرد حتی از بعضی کلمات کلیدی مثل dynamic_cast و new و throw و غیره نیز نباید استفاده کرد. زیرا آنها احتیاج به پشتیبانی از طرف سیستم‌عامل دارند. برای استفاده از کلمات کلیدی مذکور، خود شما باید آنها را پیاده‌سازی کنید (صرف نظر از وجود یک سیستم‌عامل). برای پیاده‌سازی‌های خاص در خلل دستورات سی++ از دستورات اسمبلی نیز استفاده می‌شود. این مقاله کوچک را بخوانید (http://www.osdever.net/tutorials/pdf/cpp_kernel.pdf)، شما را با روش نوشتن کرنل به زبان سی++ آشنا می‌کند، در نهایت کرنلی خواهید داشت که متن Hello World را چاپ می‌کند (در این مورد، بدون استفاده از اسمبلی).


در پایان می تونم سوالمو اینجوری مطرح کنم که بین Java و C/C++‎‎‎‎ برای انجام برنامه های سیستمی کدوم بر دیگری قابل prefer هست و در مباحث Academic قابل استفاده هستند.( دانشگاه های مطرح مثل MIT یا هاروارد و یا دانشگاه های داخلی مثل امیر کبیر ، علم و صنعت حداقل در مقطع ارشد) برای نوشتن برنامه‌های سیستمی از جاوا استفاده نمی‌کنند.

fazel-d
شنبه 24 مهر 1389, 16:01 عصر
همین طور که جلو میریم، دارم به مطالب جالب و جدیدی برحورد می کنم که بسیار ممنون و سپاسگذار.

نمی دونم تونستم سوالمو واضح مطرح کنم یا نه
در مورد نرم افزار MATLAB نمی دونم کسی آشنایی داره یا نه! اما این نرم افزار تحت GNU/Linux هم Run می شه. یعنی در استفاده از توابع اون ، از همون توابع نوشته شده به زبان C و ... استفاده می کنه که همون توابع در برنامه تحت ویندوز هم استفاده میشه.

آیا C/C++ این امکان رو می دن که برنامه تحت Linux با فرمت اجرائی اجرا بشه؟
در مورد پردازش صدا ، امکان کار در سطح سخت افزاری رو می ده؟ مثلا اگه قرار باشه با اسمبلی فایلی رو خوند و به Sound card داد، آیا c/c++ در سطح کاربری می تونه در سطح زبان اسمبلی ایفای نقش کنه( سوای از استفاده Library و ..)؟

و اینکه می تونه کاربردی در سطح ارشد داشته باشه؟ مثلا در مورد دروسی مثل بازشناسی گفتار و چند درس این چنینی؟ شاید اساتید بخوان برای راحتی کار در MATLAB پیاده سازی بشه اما صرفا جهت علاقه و پی بردن به ریز ماجرا و نحوه عملکرد سیستم با مسائل میان افزاری؟

PC2st
شنبه 24 مهر 1389, 20:30 عصر
آیا C/C++‎‎‎‎‎ این امکان رو می دن که برنامه تحت Linux با فرمت اجرائی اجرا بشه؟بله. لینوکس هم مانند ویندوز، یک فرمت خاص برای فایلهای اجرایی دارد. اگر منظور شما اجرای برنامه‌های exe در گنو/لینوکس است، شما در محیط WINE می‌توانید آنها را اجرا کنید. اما فرمت برنامه‌های گنو/لینوکس با فایلهای exe متفاوت است و برنامه‌هایی که یکبار در ویندوز کامپایل شدند را باید یکبار دیگر در گنو/لینوکس نیز کامپایل کنید (و اگر از کتابخانه‌های استاندارد/cross-platform استفاده کرده باشید، نیازی به تغییر در سورس کد ندارید یا حداقل تغییرات بسیار ناچیز است).



در مورد پردازش صدا ، امکان کار در سطح سخت افزاری رو می ده؟در مورد کار با کارت صدا، با صرف نظر از وجود یک سیستم‌عامل (یا هسته) و انجام‌دادن همه کارها فقط با استفاده از زبان سی++ ---> خیر.



مثلا اگه قرار باشه با اسمبلی فایلی رو خوند و به Sound card داد، آیا c/C++‎‎‎‎‎ در سطح کاربری می تونه در سطح زبان اسمبلی ایفای نقش کنه( سوای از استفاده Library و ..)؟در حالت کلی، سی++ نمی‌تواند مثل زبان اسمبلی با سخت‌افزار ارتباط تنگاتنگی برقرار کند و جای آن را بگیرد، پس در موارد خاصی که خارج از محدودیت توانایی زبان سی++ است، می‌توان از زبان assembly کمک گرفت و آنها را در پوشش توابع سی++ قرار داد (می‌توانید از قابلیت inline assembly در زبان سی++ نیز استفاده کنید که یک قابلیت وابسته به کامپایلر است). وقتی تنها قسمت‌های مورد نیاز را توسط اسمبلی بنویسید و بقیه کارها را در زبان سی انجام دهید، مسلماً خوانایی و سرعت توسعه برنامه بسیار بالاتر خواهد رفت با توجه به اینکه حجم کدی که با اسمبلی نوشته شده، در مقایسه با حجم کدی که با زبان سی نوشته شده، بسیار کمتر خواهد بود. با توجه به اینکه سوال شما در رابطه با نوشتن device driver است، خواندن این مقاله (http://www.mactech.com/articles/develop/issue_04/device_driver.html) خالی از لطف نیست. بطور کلی هر برنامه شما به سخت‌افزار بیشتر نزدیک شود، احتمال اجرای آن در سیستم‌های دیگر کمتر خواهد بود.



و اینکه می تونه کاربردی در سطح ارشد داشته باشه؟ مثلا در مورد دروسی مثل بازشناسی گفتار و چند درس این چنینی؟ شاید اساتید بخوان برای راحتی کار در MATLAB پیاده سازی بشه اما صرفا جهت علاقه و پی بردن به ریز ماجرا و نحوه عملکرد سیستم با مسائل میان افزاری؟متاسفانه در مورد این سوال نمی‌توانم جواب مناسبی به شما بدهم و تنها برگفته از نظر شخصی است، به نظر من زیاد نمی‌تواند برای ارشد کاربردی داشته باشد.

fazel-d
یک شنبه 25 مهر 1389, 16:40 عصر
پس با این حساب می بایست برنامه رو بر اساس هر پلتفرمی جداگانه کامپایل کرد (در خوشبینانه ترین حالت) اگر هم از Cross-Platform Library استفاده شده باشه.

یه سوال: آیا Library خوده C/Cpp را با همین زبان نوشته اند؟ اگر اینگونه است، آیا می توان مثلا کتابخانه Math.Sinus را مشاهده کرد؟
آیا برخی از API های ویندوز رو با C/Cpp نوشته اند؟ اگر این طور است آیا از همان کتابخانه Cpp استفاده کرده اند یا بدون Library؟

به جهت علاقه فردی که به برنامه نویسی سیستمی و کار در سطح ماشین دارم، راغب شدم تا
این زبان را در سطح پائین اون و یعنی تلفیق Assembly+Cpp یاد بگیرم.

اما کتابی در زمینه inline assembly in C/C plus plus وجود داره یا حداقل یه فصلی از یه کتاب؟ لطفا معرفی نمائید. ضرورتا آفست باشه.

fazel-d
سه شنبه 27 مهر 1389, 16:56 عصر
کتابی در زمینه inline assembly in C/C plus plus وجود داره یا حداقل یه فصلی از یه کتاب؟ لطفا معرفی نمائید. ضرورتا آفست باشه.

همچنان منتظرم

PC2st
جمعه 30 مهر 1389, 17:28 عصر
پس با این حساب می بایست برنامه رو بر اساس هر پلتفرمی جداگانه کامپایل کرد (در خوشبینانه ترین حالت) اگر هم از Cross-Platform Library استفاده شده باشه.

یه سوال: آیا Library خوده C/Cpp را با همین زبان نوشته اند؟بله.


اگر اینگونه است، آیا می توان مثلا کتابخانه Math.Sinus را مشاهده کرد؟ممکن است.


آیا برخی از API های ویندوز رو با C/Cpp نوشته اند؟بله.


اگر این طور است آیا از همان کتابخانه Cpp استفاده کرده اند یا بدون Library؟احتمال آن بسیار کم است.


اما کتابی در زمینه inline assembly in C/C plus plus وجود داره یا حداقل یه فصلی از یه کتاب؟ لطفا معرفی نمائید. ضرورتا آفست باشه.برای کامپایلر GCC (http://www.oldlinux.org/Linux.old/Ref-docs/gcc-inline-asm.pdf)
و این لینک (http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html)
برای کامپایلر ++VC (http://msdn.microsoft.com/en-us/library/4ks26t93.aspx)
یک مقایسه کوچک (http://www.codeproject.com/KB/cpp/gccasm.aspx)

fazel-d
سه شنبه 11 آبان 1389, 20:21 عصر
با وجود اینکه دنبال یکسری IDE برای نوشتن برنامه برای C/Cpp بودم می خواستم ببینم که آیا IDE+Compiler برای کامپایل برنامه در GNU/Linux و Win وجود داره که بشه همزمان Execute file از برنامه رو در هر دو OS بسازه؟

تا اینجایی که فهمیدم VC++ 2008 این کار رو فقط واسه ویندوز انجام می ده. ولی دنبال یک IDE ای هستم که تحت ویندوز بتونه خروجی برای دو OS مذکور در بالا رو بده؟
یا...
اینکه باید 2 تا IDE مجزا که حالا یکیش VC هست و دیگری برای Linux تهیه کنم و در ضمن برای لینوکس کدوم IDE مناسب است؟

هر چند که Turbo cpp رو دارم ولی به دلیل کد زنی کسل کننده و IDE خسته کننده اش، آیا VC++ می تونه جای گزینه خوبی برام باشه؟

و از همه مهمتر اینکه اگر قرار باشه من یه برنامه شامل مثلا Button و دیگر اشیاء نمایشی و بصری در سطح Operating System داشته باشم، این Turbo cppمی تونه خروجی مناسب رو بده؟ یا باید از VC استفاده کنم؟(مثلا اگه قرار باشه یک Media Player بسازم)

PC2st
سه شنبه 11 آبان 1389, 23:02 عصر
با وجود اینکه دنبال یکسری IDE برای نوشتن برنامه برای C/Cpp بودم می خواستم ببینم که آیا IDE+Compiler برای کامپایل برنامه در GNU/Linux و Win وجود داره که بشه همزمان Execute file از برنامه رو در هر دو OS بسازه؟به اینکار cross-compile گفته می‌شه...
برای انجام اینکار در ویندوز و تولید برنامه برای گنو/لینوکس:
http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html
برای انجام اینکار در گنو/لینوکس و تولید برنامه برای ویندوز:
http://wiki.wxwidgets.org/Cross-Compiling_Under_Linux

در هر دو حالت باید از Cygwin یا minGW استفاده کنید. بجای cross-compile کردن، بهتر است سورس را مستقیماً در سیستم‌عامل مورد نظر کامپایل کنید. برای کامپایل‌کردن، IDE مورد استفاده مهم نیست... ++VC ممکن است کدهای غیر استانداردی را اضافه کرده باشد که نمی‌توانید پروژه را در سیستم‌عامل‌های دیگر کامپایل کنید، می‌توانید آن قسمت از کدهای غیر استاندارد را بطور دستی حذف کنید که معمولاً چند خطی بیشتر نیست (منظورم stdafx.h و غیره است (اگر اشتباه ننوشته باشم)).


اینکه باید 2 تا IDE مجزا که حالا یکیش VC هست و دیگری برای Linux تهیه کنم و در ضمن برای لینوکس کدوم IDE مناسب است؟من Anjuta (نسخه جدید) را ترجیح می‌دهم. IDEهای خوب دیگری مثل Net Beans و Eclipse نیز وجود دارند.

Turbo CPP بسیار قدیمی است و به دلیل قدیمی‌بودن نسبت به کامپایلرهای جدید از استانداردها فاصله دارد و همچنین نمی‌توان از آن، انتظار یک خروجی مناسب‌تر از سایر کامپایلرهای جدید داشت.

fazel-d
چهارشنبه 12 آبان 1389, 10:51 صبح
من Anjuta (نسخه جدید) را ترجیح می‌دهم
compiler داره. حداقل برای کامپایل برای ویندوز؟
اگر خیر ، پس برای Compile چه باید کرد؟
اگر که Compiler داره ...

و از همه مهمتر اینکه اگر قرار باشه من یه برنامه شامل مثلا Button و دیگر اشیاء نمایشی و بصری در سطح Operating System داشته باشم، این Anjuta می تونه خروجی مناسب رو بده؟ (مثلا اگه قرار باشه یک Media Player بسازم)

در واقع C/Cpp امکان مذکور رو می ده که بخوام به صورت Visual برنامه بنویسم؟ یا خروجی برنامه ام صرفا Console هست؟

بسیلر ممنون و سپاسگذار

fazel-d
چهارشنبه 12 آبان 1389, 12:55 عصر
Anjuta

تحت ویندوزه یا لینوکس؟
چطور می شه در ویندوز نصب کرد

PC2st
چهارشنبه 12 آبان 1389, 15:24 عصر
Anjuta فقط یک IDE (محیط توسعه یکپارچه) است و در گنو/لینوکس از GCC برای کامپایل و از GDB یا ... برای اشکالزدایی استفاده می‌کند. احتمالاً در ویندوز برای کامپایل باید از Cygwin یا minGW استفاده کنید.

Anjuta از GNU Autotools استفاده می‌کند، پس اگر با GNU Automake یا GNU Autoconf آشنایی داشته باشید و بخواهید پروژه خود را با GNU Autotools برای سیستم‌عامل‌های مختلف آماده و portable کنید، کار شما با Anjuta راحت‌تر خواهد بود.


در واقع C/Cpp امکان مذکور رو می ده که بخوام به صورت Visual برنامه بنویسم؟ یا خروجی برنامه ام صرفا Console هست؟بله، C++‎/C این امکان ر به شما می‌ده ولی این امکانات جزئی از کتابخانه استاندارد نیست و باید از کتابخانه‌های دیگری استفاده کنید. کتابخانه‌هایی مثل Gtk و Qt و یا MFC در ویندوز، کتابخانه‌های Gtk و بخصوص Qt چون cross-platform هستند و از این لحاظ مشکلی برای کامپایل در سایر سیستم‌عامل‌ها وجود ندارد.


تحت ویندوزه یا لینوکس؟تحت لینوکس... اما تحت ویندوز نیز با زحمت زیادی می‌توانید آن را توسط Cygwin کامپایل و نصب کنید (باید کتابخانه‌های مورد نیاز آن را نیز نصب کنید). من به جای شما بودم، به جای آن در ویندوز از Eclipse یا Netbeans (تحریمی!) یا ++VC استفاده می‌کردم.

fazel-d
چهارشنبه 12 آبان 1389, 19:05 عصر
من به جای شما بودم، به جای آن در ویندوز از Eclipse یا Netbeans (تحریمی!) یا ++VC استفاده می‌کردم.تنها مورد قابل دسترس برای من همون VS2008 هست.
اما آیا در ++VC می شه برنامه رو طوری توسعه داد که صرفا برای ویندوز نباشه؟و از کتابخانه های crossplatform استفاده کرد؟

من می خوام ++C رو برای نوشتن برنامه های سیستمی در ویندوز شروع کنم (هر چند که کد زنی و ... وابسته به پلتفرمی نیست اگر از API های اون سیستم عامل استفاده نشده باشه). آیا ++VC می تونه کمکم کنه و برنامه رو خاص ویندوز نکنه؟

تا مقداری هم با این زبان آشنام و با C#‎ کد هم می زنم.
با این وجود شما برای شروع چه منبعی رو پیشنهاد می کنید. ضرورتا Offset باشه.

PC2st
چهارشنبه 12 آبان 1389, 20:04 عصر
اما آیا در ++VC می شه برنامه رو طوری توسعه داد که صرفا برای ویندوز نباشه؟و از کتابخانه های crossplatform استفاده کرد؟
بله.


من می خوام ++C رو برای نوشتن برنامه های سیستمی در ویندوز شروع کنم (هر چند که کد زنی و ... وابسته به پلتفرمی نیست اگر از API های اون سیستم عامل استفاده نشده باشه).
برنامه سیستمی به سخت‌افزار خاصی وابسته خواهد بود. بهرحال همواره شما وابستگی خواهید داشت، وابستگی سخت‌افزاری برای قابلیت حمل و نقل کد، بدتر از وابستگی به سیستم‌عامل است.


آیا ++VC می تونه کمکم کنه و برنامه رو خاص ویندوز نکنه؟
البته، فقط در انتخاب کتابخانه‌ها باید دقت کنید و آنهایی که cross-platform هستند را انتخاب کنید یا اینکه موارد خاص را جداگانه برای هر سیستم‌عامل تأمین کنید.

PC2st
چهارشنبه 12 آبان 1389, 20:10 عصر
با این وجود شما برای شروع چه منبعی رو پیشنهاد می کنید. ضرورتا Offset باشه.
http://barnamenevis.org/forum/showthread.php?t=101753
http://barnamenevis.org/forum/showthread.php?t=86565

من برای شروع، کتاب C جعفرنژادقمی و در ادامه کتاب C++ How to program اصلی را خواندم. هر چند نیازی به یادگیری C نیز نیست.