PDA

View Full Version : سوال: تفاوت Java سان با J# مایکروسافت



Unknownlive
جمعه 28 فروردین 1388, 11:15 صبح
لطفا توضیحاتی در مورد تفاوت این دو زبان بدهید من دارم رو C# کار می کنم اما علاقه مند شدم تا بعد از مدتی کمی هم دست به جاوا بزنم اما از محیط های رائه شده برای این زبان خوشم نی مده و به اعتقادم دارای یک IDE قوی نیست حداقل در مقابل ویژوال استدیو.بنابر این می خواستم ببیینم اگه J# یاد بگیرم که در واقع جاوا مایکروسافت می باشد خیلی تفاوت داده و چه IDE خوبی برای جاوا شرگت سان سراغ دارید.

anubis_ir
جمعه 28 فروردین 1388, 11:33 صبح
جي شارپ ديگه توسعه داده نميشه و متوقف شد از طرف مايكروسافت.

Cold.82
جمعه 28 فروردین 1388, 21:08 عصر
لطفا توضیحاتی در مورد تفاوت این دو زبان بدهید من دارم رو C# کار می کنم اما علاقه مند شدم تا بعد از مدتی کمی هم دست به جاوا بزنم اما از محیط های رائه شده برای این زبان خوشم نی مده و به اعتقادم دارای یک IDE قوی نیست حداقل در مقابل ویژوال استدیو.بنابر این می خواستم ببیینم اگه J# یاد بگیرم که در واقع جاوا مایکروسافت می باشد خیلی تفاوت داده و چه IDE خوبی برای جاوا شرگت سان سراغ دارید.

برنامه نویسان جاوا واقعا برنامه نویس هستند نه drag & droper به همین خاطر نیازی به ide انچنانی ندارند همین eclipse و jdeveloper کافیست .

Sundown
جمعه 28 فروردین 1388, 21:30 عصر
البته NetBeans رو هم نباید فراموش کرد
IDE بسیار قدرتمندی هست. در حد و اندازه VS

جاوا برنامه نویساشو عادت داده کد بنویسن ولی مایکروسافت کاربرانش رو ...... بار آورده:بامزه:

علاوه بر اون برنامه نویسی بدون IDE تجربه بسیار عالی هست و کاربر رو تبدیل به برنامه نویس میکنه نه برنامه ساز .

راستی من فکر میکنم #C جاوا مایکروسافت هست
وقتی هر دو یاد میگیری متوجه میشی که چه قدر بهم شبیه هستند. در واقع هیچ زبانی رو ندیدم که این قدر از هم تاثیر گرفته باشند و به هم نزدیک باشند.منطق شی گرایی و وراثت در هر دو کاملا یکسان است و حتی در 90 درصد کلمات کلیدی هم یکی هستند !!

anubis_ir
جمعه 28 فروردین 1388, 21:47 عصر
جاوا برنامه نویساشو عادت داده کد بنویسن ولی مایکروسافت کاربرانش رو ...... بار آورده

كساني كه اينطور صحبت مي‌كنند هنوز با مفاهيم شيءگرايي، كپسوله كردن، بكارگيري مجدد كد و امثال آن زياد مانوس نشده‌اند.
يك كامپوننت كه شما روي فرم درگش مي‌كنيد چيست؟ آيا غير از يك كلاس است كه يك سري توانايي را به صورت كپسوله شده در اختيار شما قرار ميده؟
آيا جاوا كلاس‌هاي حاضر و آماده نداره؟ آيا اين كلاس‌ها توسط جامعه‌ مربوطه توسعه پيدا نمي‌كنه؟

Sundown
جمعه 28 فروردین 1388, 23:26 عصر
كساني كه اينطور صحبت مي‌كنند هنوز با مفاهيم شيءگرايي، كپسوله كردن، بكارگيري مجدد كد و امثال آن زياد مانوس نشده‌اند.
آيا جاوا كلاس‌هاي حاضر و آماده نداره؟ آيا اين كلاس‌ها توسط جامعه‌ مربوطه توسعه پيدا نمي‌كنه؟

بهتون حق میدم این طور صحبت میکنید چون اصلا منظور من رو متوجه نشدید
منظورم من استفاده از IDE قدرتمند بود نه کلاس ها و توابع آماده
منظورم این بود که شما میتونید حتی بدون کد نویسی آنچنانی برنامه پیشرفته بنویسید. این یکی از آفات برنامه نویسی هست.
این طور به مرور زمان تبدیل میشید به یک برنامه ساز حرفه ای بدون اینکه از نحوه کامپایل شدن دکمه ای که روی فرم میزارید با خبر بشید !
کسانی رو میشناسم که سالها با وی بی و دلفی و سی شارپ و وی بی دات نت و امثالهم برنامه نوشتند ولی وقتی بهش میگی این تکست باکسی که روی فرم گذاشتی اصل و نسبش از کجا هست نمیدونه
من خودم با زبان های مختلف برنامه نوشتم و در این بین سی شارپ رو بیشتر از همه دوست دارم ( به آواتارم نگاه کن ) ولی این سبک برنامه نویسی یا بهتر بگم برنامه سازی ( با این محیط های توسعه امروزی ) آینده خوبی رو برای کاربر به ارمغان نمیاره. با این سبک سرعت ساخت یک ابزار زیاد میشه , کیفیت هم ممکنه بالا بره و ممکنه تا چند سال دیگه برنامه نویسی رو توی کودکستان ها هم یاد بدن ولی چیزی که هست اینه که کاربران رو از کدهایی که به کامپایلر داده میشه دور میکنه و ممکنه یک برنامه ساز هیچ وقت نفهمه که کنترل هایی رو که داره رو فرم میذاره در واقع کد هستند که IDE این کد ها رو تولید میکنه.

باز هم میگم IDE های امروزی یک جور مخفی کاری انجام میدن و سرعت کار و کیفیت کار رو بالا میبرن و قیمت رو پایین میارن ( این ها خوبه )
ولی این مزایا به قیمت به دست نیاوردن سواد برنامه نویسی تموم میشه
من خودم برای کارهای سبک ( مانند ساخت برنامه های حسابداری و ... ) از سی شارپ استفاده میکنم . چون به جرات میگم 50 درصد از کد رو IDE برام مینویسه ولی برای ساخت برنامه های سطح پایین یا دست به دامان C و ++C میشم یا به زبان هایی مانند جاوا و سی شارپ ( البته بدون IDE ) روی میارم.
به نظر من این که کاربر یک دکمه از روی جعبه ابزار بکشه و بیاره بزاره رو فرم و به خودش نام برنامه نویس بزاره در آینده ضرر های جبران ناپذیری برای او به بار خواهد آورد.
منظور من این بود وگرنه من اصلا با کلاسها و توابع آماده که روز به روز بر تعدادشون افزوده میشه و همه زبان ها دارند به این سمت میروند مخالف نیستم
من میگم اگر برنامه ای رو که با سی شارپ(با IDE) مینویسید یک بار اون رو توی نوت پد بنویسید و به کامپایلر بدهید خیلی بهتر برنامه نویسی رو درک میکنید

============================
اریک ریموند : برنامه نویسی سطح پایین روح برنامه نویسان را جلا میبخشد و آنان را با مفاهیم و اصول برنامه نویسی واقعی آشنا میسازد.

anubis_ir
جمعه 28 فروردین 1388, 23:36 عصر
این طور به مرور زمان تبدیل میشید به یک برنامه ساز حرفه ای بدون اینکه از نحوه کامپایل شدن دکمه ای که روی فرم میزارید با خبر بشید !

اين مشكل برنامه نويس است. بايد بيشتر مطالعه كنه. ربطي به محصول نداره.


تا چند سال دیگه برنامه نویسی رو توی کودکستان ها هم یاد بدن
اين ايراد نيست. برنامه نويس‌ها سطوح مختلفي دارند. يكي كامپوننت مي‌نويسه. يكي در حد سوادش و مطالعه‌اش فقط مي‌تونه از كامپوننت استفاده كنه.
يكي پروتكل شبكه طراحي ميكنه. يكي فقط بلده DNS ست كنه. ايرادي هم بهش وارد نيست (اگر اين سطوح رو در نظر بگيريم).

براي جاوا هم IDE خوب هست. در حد ويژوال استوديو. نت بينز مثلا. كم چيزي نيست! مظلوم نمايي يا خراب كردن ديگران هم به قيمت خريد قدر و منزلت براي خود هنر نيست!

Sundown
شنبه 29 فروردین 1388, 00:10 صبح
اين ايراد نيست. برنامه نويس‌ها سطوح مختلفي دارند. يكي كامپوننت مي‌نويسه. يكي در حد سوادش و مطالعه‌اش فقط مي‌تونه از كامپوننت استفاده كنه.
ولی برای من که رشته ام اینه و باید سوادم خیلی بیشتر از استفاده از کامپوننت های آماده باشه این یک ایراده



براي جاوا هم IDE خوب هست. در حد ويژوال استوديو. نت بينز مثلا. كم چيزي نيست! مظلوم نمايي يا خراب كردن ديگران هم به قيمت خريد قدر و منزلت براي خود هنر نيست!


نت بینس به اندازه ی VS کد نویسی نمیکنه. VS دیگه شورش رو در آورده ( البته من خودم VS کار هستم )
زبان بعدی مایکروسافت #F دیگه کاملا برنامه نویسی و حتی برنامه سازی رو از دنیا محو میکنه و همه برنامه نویسها تبدیل میشن به قوت دهنده لقمه جویده شده توسط مایکروسافت. در یک همچین زمانی که هر بچه ای که حوصلش سر میره مامانش میگه برو برنامه نویسی کن هست که برنامه نویسان سطح پایین ارزش پیدا میکنن ( همون طور که الان ارزش دارن ) و اگر ایران خواست روزی یک سیستم عامل از صفر بنویسه به نظر شما با چی مینویسه ( با VS ) ؟؟!!

mahdi68
شنبه 29 فروردین 1388, 04:39 صبح
با سلام
دوستان چرا از موضوع اصلی منحرف شدین ؟؟؟
حالا فرق java با #j چی هست ؟؟؟

Unknownlive
شنبه 29 فروردین 1388, 18:17 عصر
اینجا از این بحث ها نکنید اگر مرا وارد کل کنید کاری می کنم که یک صدا VS را صدا بزنید شما هم اگر مثل من فقط 200 صفحه تحقیق در مورد ویژگی VS می خواندید چیز های دیگری می گفتید هر برنامه نویسی جای خود را دارد اینکه مایکروسافت همه کاربران را تحت پوش برنامه نویسی قرار داده یک ویژگی که Sun به ان اعتراف می کند و شما از ان ضعف یاد می کنید و IDE قدرت مندی را که شاید حدود هزاران برنامه نویس کار کردند را یه فرد نیمه حرفه ای می یاد زیر سوال می بره و این که مایکروسافت کلاس های .Net Frame Work قدرت مندی داره جای برای بحث نگذاشته در ضمن شما به کسی که تازه می خواهد برنامه نویسی کنه می گید از کجا شروع کنه ؟حتما نمی گید بره سی بخونه اینجاست که VB می یاد تا اغاز باشه و F# هم قرار نیست جای C# را بگیره همانطور که C# جای C++ را نگرفت و C++ هم جای C را نگرفت.مایکروسافت می خواهد همه برنامه نویسان دنیا را تحت سلطه در بیاره و شما یک جواب مبتدیان می دید همین Delphi اخیرا به خاطر مایکروسافت رشد کرد از زمانی که لایسنس ان خریداری شد روزی هم نوبت جاوا می رسه که اونو تو VS ببینید چون پیشنهاد خرید داده شده اما هنوز موافقتی صورت نگرفته شما برید ویژگی های VS 2010 را بخوانید مهارت هم در پی تمرین مستمر بدست میاد نه اینکه مثل دیوانه ها کد های زیادی بنویسید شما راحتی و سرعت کد نویسی VS را که داره مقایسه کنید چه طور اون را عیب می دونید در حالی که می تونید تند کد بنویسی حالا اگه اروم بنویسی برنامه نویس می شی؟و این قابلیت که مثلا اشیا را مثل جاوا با کد نویسی بیاری در C# اتفاقا بهترم است تنها برتری جاوا در وب و قسمتی از شی گرا است و گرنه در بقیه مکان ها زانو زده C# می باشد برید و بدون تعصب تحقیق کنید از دست من هم ناراحت نشید من حقیقتی گفتم.

mehdi_m1360
شنبه 29 فروردین 1388, 20:06 عصر
بیاین این دعواهای خاله زنکی رو بزارین کنار!

تا اونجایی که من از J# اطلاع دارم، تفاوت جاوا و J# در واقع همان تفاوت های بین java و C# و یا VB.net هستش منتها باید یه سری موارد رو استثنا قرار بدید، البته توی اصل قضیه تفاوتی نداره. مثلا شما در J# مانند جاوا کد مینویسید، ساختارهای تا حدود زیادی شبیه هم هستند اما کلاسهایی که استفاده میکنید مال مایکروسافت هستند، کامپایلر J# مانند کامپایلر جاوا عمل نمیکنه بنابراین کتابخانه هایی که در جاوا استفاده میشن رو نمیتونی توی #J استفاده کنی، همین یه مورد دست تیم نرم افزاری رو میبنده و عملا اینکه شما با قالب و structure جاوا توی محیط Net. و البته با همون ملاحظات کد بنویسید نه تنها مزیت نیست بلکه معایب هر دو رو هم داره! فکر میکنم همین موضوع باعث شده از جریان تولید خارج بشه.

توی حاشیه بگم دوستانی که میگن جاوا محیط قوی نداره یه کمی بی انصافی میکنن، میکروسافت و Borland روی فرآیند های مبتنی بر 4GT سرمایه گذاری کردند و جاهایی مثل IBM ، SUN و Oracle روی مدل های کلاسیک تر و مبتنی بر همون فرآیند مارپیچی. هرکدوم هم ملاحظات مزایا و معایب خودشونو دارن! مهندس نرم افزاری که تصمیم میگیره 4GT کار کنه، بسته به تکنولوژی میره سراغ میکروسافت یا Borland و در غیر این صورت میره سراغ محصولات SUN یا IBM یا Oracle. همون قدر که توی Net. کارکردن تو مدل های کلاسیک مصیبته توی eclipse هم 4GT کار کردن مشکله! جاوا کارایی که میخوان 4GT کار کنن میرن سراغ JBuilder و Net. کارایی که میخوان از فرآیندهای کلاسیک استفاده کنن میرن سراغ eclipse!

Sundown
شنبه 29 فروردین 1388, 22:22 عصر
Unknownlive : (http://barnamenevis.org/forum/member.php?u=98903)
فکر نمیکنی یک مقدار محتاطانه تر و مودب تر صحبت کنی و برای حرفهایی که میزنی دلیل هم بیاری بهتر هست ؟
شما یا اصلا تاپیک رو نخوندید یا منظور من رو اصلا متوجه نشدید یا هم اینکه فقط میخوای ابراز مخالفت رو نشان بدی که البته راهش رو درست بلد نیستی


.... را یه فرد نیمه حرفه ای ....

چطور به این نتیجه رسیدی که من یک فرد نیمه حرفه ای هستم !!!؟؟؟ من که ادعایی در مورد حرفه ای بودن خودم نکردم . من در مقابل بقیه اعضای سایت یک اپراتور معمولی هستم چه برسه به نیمه حرفه ای.
میدونی چیه ؟ توی این 10 یا 12 سالی که برنامه مینوسم به این نتیجه رسیدم که اگر میخوای مورد حمایت جمعی قرار بگیری باید دو آتیشه طرفدار مایکروسافت و محصولاتش باشی
علاوه بر اون من به شما کاری ندارم که دوست داری یک دکمه از جعبه ابزار برداری و بزاری رو فرم.
من میگم خود من VS کار میکنم ( حداقل روزی 10 ساعت ) اما این روش شما رو به یک برنامه نویس تبدیل نمیکنه. من میگم اگر شما میخوای برنامه نویس بشی باید بتونی همون برنامه ای رو که که با VSنوشتی رو بدون IDE هم بنویسی . این نظر من هست . اگر مثل اون دوستمون دلیل منطق درستی داشتی حتما بیشتر جوابت میدادم ولی شما توی این پست اصلا دلیل نیاوردی
لطفا این نظراتی رو که دادید با دلیل یا لینک ثابت کنید و اگر دیگه به شما جواب نمیدم


یک ویژگی که Sun به ان اعتراف می کند



مایکروسافت کلاس های .Net Frame Work قدرت مندی داره جای برای بحث نگذاشته

پس با این حساب شما اصلا نمیدونید جاوا چی هست و از کتابخانه جاوا و این همه زبانی که داره بر روی JVM
ساخته میشه خبری نداری


در ضمن شما به کسی که تازه می خواهد برنامه نویسی کنه می گید از کجا شروع کنه ؟

من میگم سی پلاس پلاس یا پاسکال
همون طور که الان توی بیشتر دانشگاه های ایران و جهان سی و سی پلاس پلاس به عنوان اولین زبان درس داده میشه
و اون جاهایی که این کار رو نمیکنن دانشجویانشان هیچ گاه با مفاهیم اصلی برنامه نویسی آشنا نمیشم و تبدیل به Drag & Droper میشن



و C++ هم جای C را نگرفت.

برنامه نویسان C هیچگاه نمیمیرند آنها فقط تبدیل به Void میشن (اریک ریموند)



روزی هم نوبت جاوا می رسه که اونو تو VS ببینید چون پیشنهاد خرید داده شده اما هنوز موافقتی صورت نگرفته

منبع خبر از کجا هست ؟!



شما برید ویژگی های VS 2010 را بخوانید

ظاهرا این ویژگی های جدید رو خیلی میپسندید و فکر میکنید این ویژگیها به رشد دانش برنامه نویسی و نه نه برنامه سازی کمک میکنه نه ؟!


حالا اگه اروم بنویسی برنامه نویس می شی؟

دیدی اصلا تاپیک رو نخوندی. فکر میکنی میگم برو تو نوت پد برنامه بنویس که چون خاصیت Auto Complete نداره برنامه نویس بشی . من ابدا همچین منظوری نداشتم ( یک بار دیگه تاپیک رو بخون )


تنها برتری جاوا در وب و قسمتی از شی گرا است و گرنه در بقیه مکان ها زانو زده C# می باشد

جدی میگی ؟!


من فکر میکنم اگر کاربر بتونه همون کاری رو که میتونه با IDE و Drag & Drop انجام بده بتونه بدون استفاده از IDE و تنها با یک نوت پد بنویسه بسیار ارزشمنده و دید وسیعی نسبت به برنامه نویسی و اصول تکنیکی آن پیدا میکنه.مثلا شنیدم الان مایکروسافت داره با سی شارپ یک سیستم عامل جدید و از صفر مینویسه آیا شما فکر میکنید این کار با دراگ و دراپ محیط های توسعه انجام میده. پس اگر بخوایم به اون سطح برسیم باید با این نوع کد نویسی هم آشنا باشیم و مثلا خود من برای یاد گیری این نوع کد نویسی تلاش میکنم اما همچنان برنامه هایم را با IDE مینوسم
این نظر من هست . امیدوارم روزی ما ایرانیان یاد بگیریم به نظرات هم حتی اگر نظری مخالف آن داریم احترام بگذاریم.
مثلا اگر دو تا انسان دانشمند را دیده باشید که با هم صحبت میکنند میبینید که در هنگام صحبت دیگری سر خود را به نشانه تایید تکان میدهند حتی اگر نظری مخالف آن دارند.

________________________
فرق بین جاوا و #J :
من فکر میکنم یکی از عمده ترین تفاوت های بین جاوا و #J استفاده از کتابخانه ها و خروجی کدشون هست
در جاوا از کتابخانه های جاوا استفاده میشه و کد خروجی کد بایت هست که باید توسط JVM یا ماشین مجازی جاوا اجرا بشه.
در حالی که #J از کتابخانه های دات نت استفاده میکنه و کد خروجیش IL هست و باید توسط CLR اجرا بشه
از لحاظ سینتکس و شکل کد نویسی من تفاوت چشم گیری بین این دو نمیبینم

Unknownlive
یک شنبه 30 فروردین 1388, 10:20 صبح
شما هم نفهمیدید من چی گقتم.اولا من شما را نیمه حرفه ای تلقی نکردم من کسانی را گقتم که VS را بدرد بخور نمی دانند نه شما را و من به نظر شما احترام می گذارم و می دانم جاوا برتی خود را داره و اگر احساس می کنید من به شما بی احترامی کردم همین جا از شما شخصا پوزش می خواهم من در پست قبلی جواب خیلی ها را دادم و اصلا منظور بنده شما نبودید من در قوی بودن کلاس جاوا شک ندارم اما همانطور که گفتم برنامه نویسی های مختلف ویژگی های خود را دارند ولی در کل در برنامه های تجاری که بخش عمده کار می باشد C# برتری دارد اما در مفهوم شی گرا و وب برتری برای جاوا می باشد و اینکه جاوا کلاسیک یا VS چیه کاری ندارم هر کدوم سبک خودشون دارن اما C# که برای تجاری نوشته شده به همچون محیط IDE قدرتمندی احتیاج داره اما هنوز به این قضیه که کلاس C# قوی تره پایبند هستمد و شک نکنید روزی مایکروسافت فکری به حال جاوا می کنه و از سر راه به دو صورت مثل بقیه زبون ها بر می داره یا اونو می خره و یا با زبان جدید رقابت می کنه همان کاری که با دلفی یا دیگر زبان ها کرد.

Sundown
یک شنبه 30 فروردین 1388, 13:44 عصر
ولی در کل در برنامه های تجاری که بخش عمده کار می باشد C# برتری دارد

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



اما در مفهوم شی گرا و وب برتری برای جاوا می باشد

اتفاقا برعکس در مفاهیم شی گرایی این دو زبان کاملا یکسان هستند. این موضوع رو فقط کسی درک میکنه که قبلا با سی پلا پلاس کار کرده باشه و بعد از اون با جاوا و سی شارپ و مفاهیم شی گرایی در این دو زبان آشنا باشه. چنین کسی حتما متوجه میشه که شی گرایی و وراثت در این دو زبان کاملا یکسان هست. و هر دو زبان از وراثت چند گانه پشتیبانی نمیکنند که این موضوع اگر چه در ابتدا برای برنامه نویسان سی پلاس پلاس نا خوشایند هست اما به مرور متوجه میشوند که این دو زبان چگونه و با چه تکنیک بی نظیری جای وراثت چندگانه را پر کرده تا تمام عیوبی که وراثت چند گانه داشت در این دو زبان وجود نداشته باشد. تنها تفاوتی که این دو زبان در شی گرایی دارند ( یا حداقل من متوجه شدم ) این که در سی شارپ هر کلاس یا هر تابعی باید درون یک Namespace ذخیره شود و در جاوا چنین نیست و این موضوع هم به علت چند زبانه بودن دات نت و تک زبانه بودن جاوا هست و هیچ ربطی به قدرت آنها نداره.



اما هنوز به این قضیه که کلاس C# قوی تره پایبند هستمد

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



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

یعنی واقعا شما فکر میکنید دلفی و دلفی نت و QT و Boo و این همه زبان دیگر از سر راه کنار رفتند و دیگر کسی از آنها استفاده نمیکنه ؟!!


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


========================
سه چیز پایانی ندارد
1) وسعت کهکشانها
2) گستره علم
3) حماقت انسانها
البته در دو مورد اول شک دارم
( آلبرت انیشتین )

Javad_Mail
یک شنبه 30 فروردین 1388, 15:12 عصر
یه بحث جالب پیش اومد من دوست داشتم بازی کنم .

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

خودم از اون دسته هایی هستم که IDE سطح بالا رو بسیار مفید تر می دونم تا برم با Notepad کد بزنم . اما دوستی رو میشناسم که با NotePad کد می زنه و همیشه در کد زدن باهم رقابت داریم . اما فرق ما اینه که من روی تکنولوژی های جدید و غیره کار می کنم اما اون همیشه رو الگوریتم و کارهای علمی خودش کار می کنه . جفتمون هم درحال پیشرفت هستیم . اما روشمون فرق می کنه .

ببخشید خوب

Mehdi Asgari
یک شنبه 30 فروردین 1388, 15:25 عصر
این تاپیک خیلی از بحث اصلیش منحرف شده (اکثر نظرات هم بی ارزش و فاقد بار علمی ان) ؛ منتها استثنائا در مورد این جمله:

زبان بعدی مایکروسافت #F دیگه کاملا برنامه نویسی و حتی برنامه سازی رو از دنیا محو میکنه و همه برنامه نویسها تبدیل میشن به قوت دهنده لقمه جویده شده توسط مایکروسافت.
باید بگم که در مورد چیزی که نمی دونی بهتره اصلا نظر ندی. میتونستی (الانم میتونی) یه تاپیک ایجاد کنی و در اون بپرسی که #F چیه و مزیت و معایب و مقایسه اش با زبان های موجود و ... رو متوجه بشی

همون طور که الان توی بیشتر دانشگاه های ایران و جهان سی و سی پلاس پلاس به عنوان اولین زبان درس داده میشه
و اون جاهایی که این کار رو نمیکنن دانشجویانشان هیچ گاه با مفاهیم اصلی برنامه نویسی آشنا نمیشم و تبدیل به Drag & Droper میشن
چه جالب. پس دانشجو های MIT که پایتون یاد می گیرن (قبلا Scheme بود) dragger هستن ؟

مثلا شنیدم الان مایکروسافت داره با سی شارپ یک سیستم عامل جدید و از صفر مینویسه آیا شما فکر میکنید این کار با دراگ و دراپ محیط های توسعه انجام میده
ربطی نداره؛ مادامی که سخت افزارت از این نسلیه که دارن تولید میشن ، حداقل به اسمبلی اون ماشین برای boot loader نیاز خواهی داشت (بعد هم لود کردن دات نت فریم ورک یا هرچیز دیگری که بتونه کد سی شارپ رو اجرا کنه.) البته مزیت های هم داره مثل سهولت در نوشتن driver verifier که کلی از مشکلات فعلی (از جمله کرش درایور و ...) رو کاهش میده
پ ن: این که چندین دفعه جوابت رو دادیم و میدیم یعنی برات احترام قائلیم اما این نباید باعث بشه در این فروم بحث غیر علمی بکنی ؛ سعی کن فقط در مورد چیزی که بلدی و تجربه داری بحث کنی (پاک کردن تاپیک یا پستی که در اون به اشتباهت اشاره میشه کار زیاد درستی نیست)
{ این پست رو خودم پس از خونده شدن توسط کاربر مورد نظر پاک می کنم }

Sundown
دوشنبه 31 فروردین 1388, 00:05 صبح
جناب همکار سایت :
باور کنید اگر مطمئن نبودم نمیگفتم ولی باید بگم شما اصلا تاپیک را یا نخوندید و یا بی دقت و گذرا خوندید
در مورد #F باید بگم بسیار زبان قدرتمند و خوبی هست چیزی که من هرگز منکرش نشدم. اما مطلبی که من گفتم این هست که کد نویسی را از کاربر میگیره. کاربر با 1 خط کد کارهایی که انجام معمولیشون 10 خط باید باشه انجام میده و این اصلا نمیتونه خوب باشه . دانشجویی که فقط بخواد با این زبان آشنا بشه حتی نمیفهمه این یک خط کد اصلا از چه الگوریتمی استفاده میکنه یا چه عملیاتی روی سیستم انجام میده. ولی با این حال زبانی هست که کارهای پیچیده رو میشه با یک خط کد توش انجام داد. خوب درسته سرعت بالا میره اما راه برنامه نویسی را کسی با این سبک یاد نمیگیره
نمونه کد زیر را ببینید :
کد در جاوا :



int[] numbers = { 1,2,3,4,5};
for (int number : numbers) {
f(number);
}

private void f(int value) {
if(value > 3) {
System.out.println(value);
}
}

کد در اف شارپ :


[1..5] |> List.filter (fun x -> x > 3) |> List.iter (printfn "%d");;


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





چه جالب. پس دانشجو های MIT که پایتون یاد می گیرن (قبلا Scheme بود) dragger هستن ؟

اگر فقط این زبان را یاد گرفته باشند و اون هم با IDE پیشرفته باشه باید بگم بله اونها الان Dragger هستند.
البته اگر اصولش رو یاد نگرفته باشند. و فقط Drag کرده باشند



ربطی نداره؛ مادامی که سخت افزارت از این نسلیه که دارن تولید میشن ، حداقل به اسمبلی اون ماشین برای boot loader نیاز خواهی داشت (بعد هم لود کردن دات نت فریم ورک یا هرچیز دیگری که بتونه کد سی شارپ رو اجرا کنه.) البته مزیت های هم داره مثل سهولت در نوشتن driver verifier که کلی از مشکلات فعلی (از جمله کرش درایور و ...) رو کاهش میده
دیدی حالا اصلا تاپیک رو نخوندی
بحث سر این نیست که شما گفتید
بحث بر سر این موضوع هست که سیستم عامل و برنامه های سیستمی رو با IDE نمینویسند توی این موضوع مطمئن هستم


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

ما ایرانیان هیچ وقت و واقعا هیچ وقت یاد نمیگیریم به نظرات هم احترام بگذاریم روی این موضوع قادرم ساعت ها حرف بزنم و کتابها بنویسم

vcldeveloper
دوشنبه 31 فروردین 1388, 01:22 صبح
بحث تاپیک کاملا از موضوع تاپیک منحرف شده، و به همین دلیل تاپیک را قفل می کنم.

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


در مورد #F باید بگم بسیار زبان قدرتمند و خوبی هست چیزی که من هرگز منکرش نشدم. اما مطلبی که من گفتم این هست که کد نویسی را از کاربر میگیره. کاربر با 1 خط کد کارهایی که انجام معمولیشون 10 خط باید باشه انجام میده و این اصلا نمیتونه خوب باشه . دانشجویی که فقط بخواد با این زبان آشنا بشه حتی نمیفهمه این یک خط کد اصلا از چه الگوریتمی استفاده میکنه یا چه عملیاتی روی سیستم انجام میده. ولی با این حال زبانی هست که کارهای پیچیده رو میشه با یک خط کد توش انجام داد. خوب درسته سرعت بالا میره اما راه برنامه نویسی را کسی با این سبک یاد نمیگیرهفلسفه زبانی مثل #F با زبانی مثل جاوا یا #C فرق میکنه. اینها دو شاخه متفاوت از زبان های برنامه نویسی هستند. #F یک زبان تابعی هست، در حالی که دو زبان دیگه زبان های Imperative هستند.
اون چیزی که شما به عنوان مثال از #F ارائه کردید، در ذات زبان های تابعی هست. احتمالا در مفهوم زبان های تابعی و کاربردشان مشکل دارید. اگر دقت می کردید، حتی زبان های تابعی اولیه که براشون هیچ وقت IDEایی درست نشد هم همین ویژگی را داشته و دارند.

یک بار یک چارچوب برنامه نویسی یا یک زبان برنامه نویسی یک سری جزئیات را از کاربر پنهان میکنه تا کاربر بجای پرداختن به آن جزئیات، به دغدغه اصلی خودش توجه کند، مثلا C به برنامه نویس کمک می کند که بجای پرداخت به دستورات خسته کننده اسمبلی، به منطق برنامه اش بیشتر توجه کند. دات نت فریم ورک به برنامه نویسان دات نت کمک می کند که بجای درگیر شدن با جزئیات پیاده سازی یک عملکرد خاص در سیستم عامل، از آن در چارچوب طرح ها و ایده های سازمانی که دارند، بهره ببرند.
در همچین شرایطی، شما می تونید مدعی بشید که فلان زبان برنامه نویسی برای انجام فلان کار مناسب نیست، مثلا #C برای نوشتن درایور سطح کرنل مناسب نیست، چون حتی برنامه نویس را از درگیر شدن با توابع API سطح کاربر هم تا حدود زیادی منع میکنه، چه برسه به توابع سطح کرنل. اما اصولا برنامه نویسان Enterprise چندان به این قابلیت نیاز ندارند، برای همین هم بدون وجود این قابلیت هم می تونند از #C برای پیشرفت خودشان و پروژه هایشان استفاده کنند.
این نوع مخفی کردن جزئیات برای برنامه نویسانی که با جزئیات بسیار درگیر هستند، یا برنامه نویسی سیستمی می کنند، معضلات زیادی بوجود می آورد، برای همین هم اینگونه برنامه نویسان معمولا از همچین ابزارهایی فاصله می گیرند، تا آزادی عمل بیشتری داشته باشند. برای برنامه نویسی که باید یک سیستم اتوماسیون اداری تحویل دهد، نوشتن چند ده خط کد در C برای نمایش یک پنجره ساده، در حالی که میشد همان را با یک خط کد در #C نوشت، چیزی جز اضافه کاری و تلف کردن وقت نیست. در حالی که برای یک برنامه نویسی که باید یک تابع API را هوک کند، آن یک خط کد #C بسیار دست و پا گیر هست.

پس کم و زیاد کد نوشتن در یک زبان نشانه ضعف و قوت آن زبان نیست، بلکه باید دید در کاربرد مورد نظر آن قابلیت یک حسن محسوب می شود، یا یک ضعف.

اما این مثال به زبان های تابعی ربطی پیدا نمی کند. اگر چند خط دستور در یک زبان Imperative در یک زبان Functional به یک خط دستور تبدیل می شود، این به آن معنی نیست که جزئیاتی از کار توسط این زبان Functional مخفی شده تا کد ساده تر شود، بلکه ذات زبان های Functional به همان صورت هست. مقایسه #F با جاوا یا#C مثل مقایسه C با جاوا نیست!
اگر دقت می کردید، می دیدید که #F به عنوان یک زبان تابعی مفاهیم چندان جدیدی ارائه نکرده که بخواهیم تصور کنیم مایکروسافت اقدام خارق العاده ایی انجام داده، بلکه زبان های تابعی از چند دهه پیش وجود داشتند، و استفاده می شدند. مایکروسافت سعی کرد با جمع کردن مزایای زبان های تابعی مختلف در یک زبان با نام #F، پای زبان های تابعی را هم به سکوی دات نت باز کند. اینکه چرا به زبان های تابعی در این مقطع زمانی توجه شد یک بحث جداگانه ایی هست، و به مسائل موجود در صنعت نرم افزار، و تعامل آن با سخت افزارهای موجود بر می گردد، به عنوان نمونه، زبان های تابعی ذاتا توانایی بسیار بالاتری در تقسیم پردازش به بخش های مستقل کوچکتر دارند، پس بهتر می توانند از قابلیت های پردازنده های چند هسته ایی بهره ببرند.

دقت داشته باشید که دانستن Syntax یک زبان به معنای دانستن آن زبان نیست.

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

با تجوه به زمینه اصلی کاری خودم، این نکته را هم جواب میدم:

همین Delphi اخیرا به خاطر مایکروسافت رشد کرد از زمانی که لایسنس ان خریداری شددلفی اخیرا بخاطر مایکروسافت رشد کرد؟!! دات نت بخاطر دلفی رشد کرد، ولی نه دلفی بخاطر دات نت، غیر از اینکه بخواید مدعی بشید دلفی بخاطر مایکروسافت رشد کرد، چون ویندوز را در سال 91 مایکروسافت ساخت، و دلفی تحت ویندوز ارائه میشه!!
از مدیر کل بخش توسعه نرم افزار مایکروسافت گرفته، تا طراح زبان #J و #C، تا یکی از طراحان XAML، همگی از طراحان دلفی بودند که توسط مایکروسافت خریداری شدند تا در پروژه دات نت با مایکروسافت همکاری کنند. مدیر فعلی توسعه ++VC هم از برنامه نویسان برجسته دلفی بود که یکی از پرفروش ترین کتاب های دلفی را منتشر کرده بود، و به استخدام مایکروسافت در آمد!

لیسانس دلفی هم ربطی به مایکروسافت نداره. محیط های توسعه نرم افزار بورلند بعد از تغییر سیاست بورلند در نوع محصولاتش، بصورت یک شرکت مستقل با نام CodeGear از بورلند جدا شدند، و بعدا توسط شرکت Embarcadero خریداری شدند. الان هم تحت نام همان شرکت CodeGear، ولی به عنوان یکی از شرکت های اقماری Embarcadero در حال فعالیت هستند. کل این فرایند ربطی به مایکروسافت نداشت.
دلفی و C++ Builder در سکوی Win32 مستقیما با Visual C++ مایکروسافت رقابت می کنند. Delphi Prism هم به عنوان یکی از زبان های دات نتی، با سایر زبان های برنامه نویسی تحت دات نت رقابت میکنه.

چرا درباره چیزی که اطلاع ندارید، اظهار نظر می کنید؟!!