PDA

View Full Version : مقاله: سخت بودن زبان برنامه نویسی، دلیل برتری نیست!



kral_pontiac
سه شنبه 12 آبان 1388, 20:57 عصر
دو سه سال پیش مطلبی برای کسانی که می خواهند برنامه نویسی را شروع کنند نوشتم (اینجا (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Ffarasun.wordpress. com%2F2007%2F05%2F19%2Fstart-programming%2F)) و زبان پاسکال را برای شروع پیشنهاد کردم. یکی از دوستانم برای شروع یادگیری برنامه نویسی با من مشورت کرد و گفت میخوام سخت ترین زبان برنامه نویسی را یاد بگیرم تا برنامه نویس تاپی بشم! قضیه از این قرار بود که قبل از من با داماد محترم خودشون مشورت کرده بود و ایشون گفته بود سخت ترین زبان های برنامه نویسی که سی/سی++ و جاوا هستند را یاد بگیرد! از من سئوال کرد که من دلفی و PHP را توصیه کردم. دوستم قبول نکرد و گفت شنیدم دلفی مسخره است و PHP بسیار ضعیفه!!
نمیدانم این چه حرف نامربوطی است که بین بعضی ها رایج شده، اینکه PHP ضعیف است و جاوا قویترین و بهترین است! از کسانی مثل دوست من که هیچ دانشی در مورد برنامه نویسی ندارند انتظاری نیست، اما این حرف ها را من از همکاران برنامه نویس و مدیران شرکت های نرم افزاری هم شنیده ام! این ها حتی یک سرچ کوچیک هم در مورد PHP انجام نداند تا با پروژه های قدرتمندی که با این زبان انجام شده اند، آشنا شوند. پروژه وردپرس (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fwordpress.org%2F) فقط یکی از 100ها پروژه موفقی است که با PHP انجام شده است. بحث را نمی خواهم اینطور ادامه دهم، PHP فقط یک مثال است.

http://farasun.wordpress.com/tag/files/2009/08/spl2.gif (http://farasun.wordpress.com/tag/files/2009/08/spl2.gif)
خیلی ها فکر می کنند هر چه یادگیری یک زبان برنامه نویسی سخت تر باشد، حتماً بر زبان های دیگر برتری دارد. این تفکر در دنیای امروز واقعاً مسخره است! به طور مثال یکی از سخت ترین زبان های برنامه نویسی سی++ است. به نظر شما یک برنامه نویس سی++ چه برتری بر یک برنامه نویس ویژوال بیسیک دات نت دارد!؟ تفاوت ها نسبی است. مثلاً برنامه نویس سی++ می تواند یک درایور سخت افزاری بنویسد اما برنامه نویس وی بی دات نت نمی تواند. حالا به نظر شما کدام بهتر می توانند یک وب اپلیکیشن بنویسند!؟ کدام سریعتر می تواند یک نرم افزار تولید کند!؟ کدامیک ابزارهای قوی تری برای توسعه در اختیار دارد!؟ خروجی کدامیک سریعتر اجرا می شود!؟
اخیراً بسیاری از برنامه نوسان سی++ به جاوا و سی شارپ روی آورده اند. چرا!؟ مگر سی++ سخت تر نیست! پس چرا این ها به یک زبان ساده تر روی آورده اند!؟
پاسخ این است که در دنیای امروز، برنامه نویسان باید پلت فرم محور باشند نه زبان محور. زبان برنامه نویسی هر چقدر هم که قوی و سخت باشد، اگر توسط یک پلت فرم قدرتمند و شناخته شده پشتیبانی نشود هیچ ارزشی نخواهد داشت. به طور مثال در سیستم عامل لینوکس از سی++ به خوبی پشتیبانی می شود اما در وب اینطور نیست. این سی++ را به یک انتخاب مناسب برای نوشتن برنامه های مبتنی بر لینوکس و به یک انتخاب نا مناسب برای نوشتن برنامه های مبتنی بر وب تبدیل می کند. PHP در وب به خوبی پشتیبانی می شود و برای توسعه برنامه های تحت وب بسیار مناسب است اما در بقیه موارد حرفی برای گفتن ندارد.
البته کسی که سی++ بلد باشد و بعد از آن مثلاً PHP را شروع کند خیلی سریعتر و بهتر از کسی که قبلاٌ مثلاً با ویژوال بیسیک آشنا بوده،PHP را یاد می گیرد. همانطور که گفتم پلت فرم از زبان خیلی مهم تر است. من می توانم به شما قول دهم که شما می توانید در عرض 3 ماه سی++ را به طور کامل یاد بگیرید، اما نمی توانید در فقط 3 ماه یک برنامه نویس وب حرفه ای شوید. یادگیری سینتاکس یک زبان برنامه نویسی هر چقدر هم که مشکل باشد، در 3 یا 4 ماه میسر می شود اما یادگیری یک پلت فرم برنامه نویسی مانند دات نت و حرفه ای شدن در آن به این سادگی ها نیست!
کسانی که خود را محدود به یک زبان برنامه نویسی می کنند و روی آن تعصب دارند هیچ وقت موفق نخواهند شد. سراغ دارم کسانی را که برای تولید نرم افزار از جاوا و اوراکل استفاده می کنند اما نرم افزارشان به اندازه نرم افزاری که با دلفی و اینتربیس تولیدشده، بازدهی مطلوب ندارد. باور کنید استفاده از جاوا و اوراکل کلاس کاری شما را بالا نمی برد. استفاده نابجا از ابزارهای قدرتمند نشان از نا آگاهی و آماتور بودن شما دارد نه کلاس بالای شما!
در دنیای امروز باید بر اساس نیاز و خواست مشتری از این ابزارها استفاده کرد. این ها فقط ابزارهایی هستند در اختیار ما انسان ها، با تعصب بیجا و نا آگاهی انسان هایی در دست این ابزارها نباشیم!

فراسان دات وردپرس

__Genius__
یک شنبه 25 بهمن 1388, 15:37 عصر
سلام ،
پست جالبی بود ، فکر میکنم نیاز بود برای برخی از دوستان ... ،
کلاً تعصب توی زمینه انتخاب زبان برنامه نویسی و حرکت به سمت جلو اولین قدم برای شکست هست ،
در حال حاضر تکنولوژی و کلاً پیشرفت و دست آوردهای جدید برای این هست که کار دیگران راحت بشه ، اوایلی که انسان یاد گرفته بود اتومبیل بسازه اکثراً کارها به طور دستی انجام میشد و با دست اما با پیشرفت تکنولوژی خیلی از کارهای پیچیده و سخت در کارخانه های تولید خودرو به دست Robot ها انجام میشه ، و این ذات تکنولوژی هست ، راحت کردن کار برای دیگران .
به شخصه برنامه نویس ++C/C هستم ولی به هیچ عنوان تعصبی ندارم روی اون ، تنها یک دلیل هست که برنامه با ++C و C مینویسم و اون هم برنامه نویسی Driver هست ، میشه گفت تنها زبانی که این قابلیت رو پشتیبانی میکنه C هست ، اگه مطمئناً #C چنین قابلیتی رو پشتیبانی میکرد مطمئناً ++C رو الان کنار گذاشته بودم ... .
بعد از مدت زیادی درگیری با Visual C++ 6.0 و بی نتیجه بودن زحمتها زبان #C و Delphi رو برای خیلی از منظورها انتخاب کردم ، هیچ دلیلی نمیبینم برای اینکه 15 خط کد برای load کردن یک عکس در Visual C++ 6.0 بنویسم ، این کار رو با یک عملیات Drag & Drop توی دلفی و یا #C انجام میدم .
هر زبانی کاربرد خودش رو داره ،
اتفاقاً مختصری در مورد انتخاب زبانهای برنامه نویسی و کاربردشون رو توی یک پست در وبلاگم (http://s-genius.blogspot.com/2009/07/which-programming-language.html) نوشتم .
به هر صورت ، شرکت Apple با کنار گذاشتن تعصب مبنی بر اجرا نشدن سیستم عامل شرکت Microsoft روی لپ تاپ ها و کامپیوتر هاش قدرتمند تر از همیشه توی بازار کامپیوتر ظاهر شده ، نتیجه کنار گذاشتن یک تعصب ببینید چقدر میتونه تاثیر گذار باشه ;).

Alay102
جمعه 30 بهمن 1388, 04:26 صبح
بارها به شخصه در این انجمن و حتی در انجمن های مشابه داخلی و خارجی دیده ام که بر سر برتری میان دو یا چند زبان و یا فریم ورکی به بحث و جدل پرداخته اند و به مقایسه ی میان آنها مشغول بوده اند !
فارق از اینکه تا زمانی که دو موضوع از یک کلاس و از یک نوع واحد نباشند و با هم سنخیتی نداشته باشند ، از نظر منطقی قابل قیاس و مقایسه نمی باشند و اگر میان آن دو قیاسی صورت گیرد ، آن قیاس در حکم مغالطه است !
به طور مثال هیچ وقت نمی توان یک تراکتور را با یک اتومبیل فراری مقایسه کرد ! هر دو بهر کاری ساخته شده اند ...
زبان ها ی برنامه نویسی نیز از این قاعده مستثنا نمی باشند . در واقع هر زبانی را برای هدف و کار مشخصی ساخته اند و لذا هر قیاسی میان آنها حتی با استدلال ، حکمه مغالطه را می گیرد و یعنی ...



PHP ضعیف است و جاوا قویترین و بهترین است!
در تمام مدت عمر برنامه نویسیم ، هیچوقت نتونستم این کلمات قدرتمند و ضعیف رو درک کنم
مثلاً یعنی چی که می گویند فلان زبان قدرتمند تر از بهمان زبان است !؟ در چی قدرتمند ترند ؟
اوصافی از این دست همه نسبی هستند ، لذا جدل بر سر این اوصاف بی معنی ست
هر دو زبانند و هر دو برای کاری و با یک فکری ساخته شده اند



به نظر شما یک برنامه نویس سی++ چه برتری بر یک برنامه نویس ویژوال بیسیک دات نت دارد !؟

اینم از اون حرفاستا ...
C++ یه زبان برنامه نویسی و Visual Basic.Net ، ویژوالش که یه IDE و دات نتش هم که یه frame work و اما می مونه بیسیکش که حالا می شه بهش یه زبان برنامه نویسی گفت .
حالا انصافاً می شه بین سی ++ و بیسیک مقایسه ای کرد !؟ یعنی این دو واقعا تو یک مد و کلاس قرار می گیرند !؟
بین سی ++ و بیسیک از زمین تا آسمون فرق وجود داره ...



حالا به نظر شما کدام بهتر می توانند یک وب اپلیکیشن بنویسند !؟

جواب این سوال ، باز برمی گرده به پاراگراف قبلیو و اینکه سی ++ یک زبان برنامه نویسی و VB.Net یک زبان + یک IDE و + یک frame work !!
لذا این قیاس از اساس غلط است !!



کدام سریعتر می تواند یک نرم افزار تولید کند !؟ کدامیک ابزارهای قوی تری برای توسعه در اختیار دارد !؟

برای زبان سی ++ هم IDE های فراوان ، هم کتاب خانه های قدرتمندی مثل VCL ، هم فریم ورک های متعدد و قدرتمندی مثل Qt و هم محیط های RAD بسیار بسیار قدرتمند و انعطاف پذیری مثل RAD Studio وجود دارد ! که حتی ویژوال بیسیک دات نت در خواب هم نمی تواند رویای دست یافتن به این ها را داشته باشد ...



خروجی کدامیک سریعتر اجرا می شود !؟

این دیگه واقعا کم لطفیه !!
اولاً ویژوال بیسیک مایکروسافت به دلیل استفاده از کتابخانه ی Msvbvm برای کلیه ی کار های اصلی از قبیل انتصاب ها ، عملیات های منطقی ، فراخوانی توابع و ... کند ترین خروجی برنامه ها را در زمان خودش تولید می کرد !
در واقع برنامه های نوشته شده با ویژوال بیسیک کمترین کد ماشین رو داشتند و درون آنها پر بود از احضارهای توابع متعدد و رفت و برگشت های بی شماری به اون DLL
ثانیاً در حال حاضر نیز برنامه های نوشته شده با VB.Net ، بدلیل تولید کدهای Managed کند ترین سرعت را در بین برنامه های مشابه ، ولی با کد های Native دارند !



اخیراً بسیاری از برنامه نوسان سی++ به جاوا و سی شارپ روی آورده اند. چرا!؟ مگر سی++ سخت تر نیست!

بحث سر سختی یا آسانی نیست !
جواب این سوال برمی گرده به غایت وجودی هر زبان برنامه نویسی
از JAVA و C# جهت هدف دیگری که همان Cross-Platform بودن است استفاده می شود .
البته بهتر بود می گفتم فقط از جاوا ! چون تا کنون از سی شارپ چنین چیزی ندیده ایم ! :لبخند:
( خواهشاً طرف داران متعصب دات نت بحث MONO رو وسط نکشند ، اون بحث دیگری ست )



در دنیای امروز، برنامه نویسان باید پلت فرم محور باشند نه زبان محور

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



کسانی که خود را محدود به یک زبان برنامه نویسی می کنند و روی آن تعصب دارند هیچ وقت موفق نخواهند شد.

کاملاً معقولا نست و در عین حال بدیهی ...



تنها یک دلیل هست که برنامه با ++C و C مینویسم و اون هم برنامه نویسی Driver هست ، میشه گفت تنها زبانی که این قابلیت رو پشتیبانی میکنه C هست ، اگه مطمئناً C#‎ چنین قابلیتی رو پشتیبانی میکرد مطمئناً ++C رو الان کنار گذاشته بودم ...

این حرف کاملا متعصبانست و دلیل آن هم نداشتن اطلاعات در مورد این زبان هاست !
با شنیدن نام C# همه یاد IDE قدرتمند Visual Studio و کتابخانه ی عظیم Dot Net و سایر ویژگیهای آن می افتند و این در حالیکه که دقیقاً همه ی آن چیز هایی که برای C# وجود داره ( حتی بیشتر و کاربردی تر ! ) برای سی ++ نیز وجود دارد ! مانند IDE قدرتمند تر مثل RAD Studio ، فریم ورک های قوی و کاربردی تر مثل Qt و ...


مع الوصف این توضیحاتی بود که این وقت صبح به ذهنم می رسید و تصمیم گرفتم که بگم ..

و در نهایت برای پدیدآورنده ی این تاپیک سوالی را مطرح می کنم :
دلیل اینکه این تاپیک را در این بخش ( مقالات مرتبط با Delphi/Win32 ) به وجود آورده اید چیست ؟

__Genius__
پنج شنبه 06 اسفند 1388, 00:30 صبح
این حرف کاملا متعصبانست و دلیل آن هم نداشتن اطلاعات در مورد این زبان هاست !
با شنیدن نام C#‎ همه یاد IDE قدرتمند Visual Studio و کتابخانه ی عظیم Dot Net و سایر ویژگیهای آن می افتند و این در حالیکه که دقیقاً همه ی آن چیز هایی که برای C#‎ وجود داره ( حتی بیشتر و کاربردی تر ! ) برای سی ++ نیز وجود دارد ! مانند IDE قدرتمند تر مثل RAD Studio ، فریم ورک های قوی و کاربردی تر مثل Qt و ...
دوست محترم پیشنهاد اکید به شما دارم که اندکی مطالعه بیشتری داشته باشید و بعد به بنده انگ نداشتن اطلاعات رو بزنید !
حاضرم شرط ببندم شما حتی نمیدونید و اطلاع ندارید Driver هائی که در حال حاضر برای ویندوز نوشته میشن به وسیله چه Framework ی نوشته میشن ، بله اگه در سطح اطلاعات شما باشه بعید نیست اسم #C رو این وسط بیارید ... . :لبخندساده:
همه متوجه هستن که #C و پلتفرم Net. کتابخانه های بسیار قدرتمندی داره ، جالب اینکه شما حتی ظاهراً تفاوت برنامه نویسی در مد Ring3 رو با Ring0 تشخیص نمیدین ... .
امروزه اکثراً نرم افزارها و زبان های برنامه نویسی تکیه بر قدرتمند کردن کتابخانه ها برای تولید نرم افزارهای Ring3 میکنن ، این در حالی هست که تولید یک Driver سخت افزاری (کاری به موبایل ندارم) Framework ی جدا برای فراخوانی توابع Native و کار با توابع سطح هسته هست ، و بعد جالب اینجاست که شما این وسط اسم از زبانی مثل #C میارید ! در کل خیلی جالب هست که جنابعالی حرف از تعصب میزنید و حتی بدون مطالعه و اطلاعات کامل از #C به عنوان یک زبانی که Driver نویسی سطح هسته رو پشتیبانی میکنه ذکر میکنید که جای خود جای بحث داره .
در آخر هم ذکر میکنم اگر احیاناً زبان #C و پلتفرم Net. قسمتهایی برای کار با توابع سطح هسته و Driver نویسی دارن و خود Microsoft هم از اون ها بی خبر هست حتماً اول من و بعد هم Microsoft رو از این قضیه مطلع بفرمائید !

Alay102
پنج شنبه 13 اسفند 1388, 20:44 عصر
و بعد جالب اینجاست که شما این وسط اسم از زبانی مثل C#‎ میارید !



از C#‎ به عنوان یک زبانی که Driver نویسی سطح هسته رو پشتیبانی میکنه ذکر میکنید


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

امیدوارم از صراحت در گفتار اینجانب ناخرسند نشده باشید ...
موفق باشی .

m44miri
جمعه 22 بهمن 1389, 08:47 صبح
در مورد c باید گفت که 80 درصد سیستم عامل لینوکس است . مطمئن باشید که خود ماکروسافت هم نتونسته کاملا زبان c را در محصولات خودش کنار بگزاره.
بحث شما فکر کنم بی فایده است. در مورد زبان php هم اینو میتونم بگم که زبان فوق العاده قوی است ولی در برنامه های سازمانی حرفی برای گفتن نداره(البته در مقایسه با java) .من با c# تا حالا کار نکردم و در موردش نظر خاصی ندارم .اما اینو میدونم که زبانی است که فقط میشه در ویندوز اجراش کرد.در سیستم عامل لینوکس , BSD و solaris حرفی برای گفتن نداره.شاید بخاطر همینه که ماکروسافت برای پر کردن خلا زبانهای خودش به mono رو ی آورده.اما چند باری که mono کار کردم فهمیدم که اصلا قابل اطمینان نیست.