# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > تحصیلات دانشگاهی مرتبط با نرم افزار >  جاوا یا سی شارپ؟؟؟؟

## amir-yeketaz

شاید بگین بازم سوال تکراری ولی واقعا من خیلی تو این سایت گشتم و چیزایی رو هم خوندم ولی باز هم قانع نشدم !!!!
یه دوراهی برام پیش اومده عجیب داره مخمو میخوره 
ترم اولیم و بهمون گفتن باید برا ترم سوم بین سی پلاس پلاس و سی شارپو جاوا یکی رو انتخاب کنین
حالا من بین این دو تا که  سی شارپ یا جاوا باشه نمیدونم کدومو انتخاب کنم و تقریبا به سی پلاس پلاس فکر نمیکنم 
از سی شارپ و جاوا یه چیزایی میدونم 
مثه اینکه بازار کار سی شارپ تو ایران خوبه و رو بورسه ولی جاوا مثه سی شارپ تو ایران محبوب نیست
جاوا خیلی سخت تره 
جاوا رو تمام سیستم عاملا جواب میده ولی سی شارپ نه -هر چند که اخیرا میشه با یه نرم افزار اونو تو لینوکس هم اجرا کرد - هیچ وقت مایکروسافت فکر نکنم سیاست نات اپن سورسش برداشته بشه چون میخواد تو بازار یکه تاز باشه 
اما جاوا اپن سورسه و امنیت خیلی بالاتری داره و در کشورهایه اروپایی خیلی محبوبیت داره و بازار کاره خوبی تو اونجا داره 
به هر حال با اینکه اینارو میدونم ولی باز هم نمیدونم کدومو انتخاب کنم!!!!!؟؟؟؟؟
خواهشا اگه خواستین جوابمو بدین و کمکم کنین به دور از تعصب خاص تویه زبانه مورد نظرتون باشه و توضیح کامل باشه
خیلی ممنون

----------


## a_mzadeh

سلام

اين از اون بحث هايي هستش که من واقعا بهش علاقه دارم. انتخاب زبان برنامه نويسي موضوعي هست که شايد من يکسال داشتم بهش فکر ميکردم و نتيجه اين موضوع اين شد که تا حالا تجربه نوشتن پروژه هايي به زبان هاي سي شارپ، جاوا، ويژوال سي، دلفي و اخيرا هم کيوتي دارم. البته بايد اين نکته رو هم بگم که نوشتن پروژه با يه زبان با تبحر و تسلط کافي داشتن به اون زبان فرق داره. اين نتيجه گيري که الان مي خوام خدمت شما عرض کنم صرفا تجربه شخص خودم هست، شايد دوستاني اين مطلب رو بخونن که با نظر من مخالف باشن که خوشحال مي شم اونها هم نظرشون رو بيان کنن.

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

به نظر من اگر قراره برنامه نويسي تحت وب کار کني، فقط و فقط برو سراغ php. براي اين موضوع دلايل زيادي دارم، ولي فکر ميکنم همين دليل که خيلي از سرورها از لينوکس استفاده ميکنن و بهترين گزينه براي لينوکس php هست کافي باشه.

و اما اگر قراره براي ويندوز برنامه نويسي کني؛ تو زبان هاي مخصوص ويندوز هر کدوم يه ويژگي ها و يه سري نقص هايي دارن و شما بايد خودت ببيني که کدوم به دردت ميخوره. من بعضي از اون ها رو براي شما ميارم.

سي شارپ: انصافا يکي از بهترين فريم ورک هايي که من تا حالا باهاش کار کردم همين فريم ورک دات نت هست. الان تقريبا چهار سال ميشه که من با سي شارپ برنامه مينويسم، هر چي که يه برنامه نويس لازم داره دم دستش قرار داره و کمتر پيش مياد که شما براي يه کاري مجبور به نصب کامپوننت بشي. و اما معايبي که سي شارپ داره. اولين عيبش اين هست که شما حتي اگه يه فرم ساده هم درست کرده باشي که حجمش در حد چند صد کيلو بايت هست، بايد يه فايل 40، 50 مگا بايتي همراه برنامت بدي به مشتري تا بتونه برنامت رو اجرا کنه. موضوع بعدي مساله مربوط به امنيت برنامت هست. بهت توصيه ميکنم در مورد قفل نرم افزاري در سي شارپ يه تحقيقي بکني. از اونجايي که برنامه هاي دات نت و جاوا به کد مياني تبديل ميشن، فايلي که شما تحويل مشتري ميدي به راحتي قابل تبديل شدن به سورس برنامه هست.

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

دلفي: تقريبا در اکثر جنبه ها دلفي خوب عمل ميکنه. هم سرعت توسعه نرم افزار در اون خوب هست، هم اينکه برنامه به يه فايل اجرايي واقعي (native) تبديل ميشه و شما با يه حجم کم ميتوني برنامت رو به مشتري تحويل بدي. هم اينکه ميتوني روي اون قفل نرم افزاري بذاري. به دليل اينکه برنامه نويساي زيادي از اون استفاده ميکنن، راهنماها و کدهاي نمونه ي زيادي تو اينترنت داره و ... ولي يه مشکل داره و اون کامپوننت هاي دلفي هست. اگر شما يه برنامه ساده رو هم با سي شارپ بنويسي و هم با دلفي و بعد اونها رو به کاربر بدي، قطعا برنامه سي شارپي رو ترجيح ميده، منظورم ظاهر نيست بلکه عمکرد کامپوننت ها هست، به عنوان نمونه نحوه عمکرد scrollbar در يک پنل رو در اين دو برنامه ميتونيد مقايسه کنيد.

سي پلاس پلاس: شما به عنوان يه برنامه نويس بايد به اين زبان تسلط داشته باشي چون توي هر زباني وقتي به آخرش ميرسي و ميخواي يه کار حسابي انجام بدي، راه حلش استفاده از سي پلاس پلاس هست.

کيوتي: کيوتي در واقع يک فريم ورک براي سي پلاس پلاس هست که استفاده از اون مزاياي زيادي داره. اوليش اينکه توي لينوکس هم اجرا ميشه و فقط کافيه يه بار کامپايل بشه. دوم اينکه يه فايل native به شما ميده و براي همين شما ميتوني سراغ قفل نرم افزاري و اين جور چيزا هم بري، سوم اينکه با طراحي يک فريم ورک خوب تونسته برنامه نويسي با سي پلاس پلاس رو خيلي ساده کنه، چهارم اينکه ... فقط يه مشکل داره و اون اين هست که از اونجايي که تمام کامپوننت ها در اين زبان دوباره ساخته ميشن شايد گاهي اوقات در زمان اجرا کند عمل کنه (البته اين موضوع خيلي به ندرت اتفاق ميفته). البته من شديدا به آينده کيوتي اميدوار هستم و ميدونم که روز به روز داره بهتر ميشه و داره روي performance اون کار ميشه.

و اما در مورد يادگيري يه زبان، به نظر من شما از سي پلاس پلاس شروع کن، چون اگر اون رو بلد باشي تقريبا تمام زبان ها رو بلدي، بعد برو سراغ سي شارپ و از اونجايي که سي شارپ يک کپي از جاوا هست، خيلي سريع جاوا رو هم ياد ميگيري و بعد برو سراغ زبان هاي ديگه.

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

----------


## voiceman

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

----------


## JaguarXF

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

برای یک مثال کاملا دم دستی : http://www.barnamenevis.org/sh...d.php?t=189375

----------


## kiuhnmgtrdcv

سلام
برای برنامه نویسی تحت ویندوز و پایگاه داده و طراحی وب با asp.net و برنامه نویسی شبکه شدیدا یادگیری #c توصیه میشود
چون سی شارپ از دات نت فریمورک استفاده میکند این موضوع در بعضی از جاها مفید و در بعضی از جاها مفید نیست ولی من دلفی بخاطر code native بودنش که به دات نت وابسته نیست دوست دارم 
من از جاوا برای برنامه نویسی های موبایل استفاده میکنم چون مثل سی شارپ به ویندوز موبایل محدود نمیشه ولی اگر بخواین تحت ویندوز با جاوا برنامه های دسکتاپ بنویسید جز در مواردی مثل این میمونه که لقمه دور سرتون بچرخونید 
هر کدام از اینها برای کاربردهایی تعبیه شده و با توجه به کاربردها هر کدام توی زمینه ای مفید هستند و اگر مدتی کار کنید از هر چیزی برای کاربردی استفاده میکنید

----------


## smile17

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

----------


## amir-yeketaz

خواهشا بیشتر در مورد این دو زبان بحث کنید 
در ضمن ترم 2 که باید سی پلاس پلاسو پاس کنیم پس تا اون موقع سی پلاس پلاسو خوندیم 
خیلی ممنون  :لبخند گشاده!:  :لبخند گشاده!:

----------


## smile17

> در ضمن ترم 2 که باید سی پلاس پلاسو پاس کنیم پس تا اون موقع سی پلاس پلاسو خوندیم


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

----------


## amir-yeketaz

ببین دوست عزیز منظورم از اون پاسخ این بود که شما در نظر بگیرین که من سی پلاس پلاسو بلدم 
و حالا میخوام بین این دوتا زبون یعنی جاوا و سی شارپ یکی رو انتخاب کنم

----------


## amir-yeketaz

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

----------


## smile17

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

----------


## amir-yeketaz

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

----------


## JaguarXF

بستگی داره به اینکه بخوای واسه خودت کار کنی یا توی شرکتها کار کنی.
واسه خودت کار کنی، تا آخر عمرت هیچ پروژه Enterprise ئئ نمیتونی یک نفره بنویسی . ولی میتونی با همون زبونی که بلدی همه شون رو بنویسی . که دات نت سریعتر هست از این نظر. 

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

----------


## smile17

پروژه های بسیار بزرگ رو معمولا چند نفره انجام میدن
بنده هم پروژه های بسیار بزرگ زیادی رو دیدم که با جاوا انجام شده ولی هیچ دلیلی مبنی بر کم توانی سی شارپ در این ضمینه ندیدم
از دوستان اگه کسی میتونه مثالی بزنه

----------


## amir-yeketaz

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


ببخشید منظورتون رو درست متوجه نمیشم؟؟ 
میشه بهتر توضیح بدین!!!

----------


## powerboy2988

مقایسه این 2 تا کاره کاملا اشتباهی ... تا حالا هم n بار در مورد بحث شده....

این 2تا جفشون ابزار هستند برای پیاده سازی....

نسبت به scale پروژه تصمیم میگیری که از کدومشون استفاده کنی..

مثلا برای سیستم کتابخانه کسی نمیاد با java برنامه نویسی کنه... خیلی راحت با #C این کار رو انجام میده....

یا مثلا واسه سیستم های خیلی بزرگ مثل فرودگاه ... میان با java کار می کنند..

در مورد زبان های دیگه هم همین جوریه...

شما باید باید مفهوم های برنامه نویسی آشنا باشی.... زبان های برنامه نویسی همه ابزار هستند برای اینکه شما چیزی رو که تو ذهن دارین رو پیاده سازی کنید....

----------


## amir-yeketaz

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

----------


## powerboy2988

> ببخشید یعنی با این حساب که شما میگین در کل مهم نیست که کدوم زبانو انتخاب کنیم؟؟؟
> میخواستم بدونم چرا طرفدارایه سی شاپ بیشترن تو ایران 
> چون که تو ایران کارش بیشتره 
> یا به خاطر مایکروسافته که ایرانو قورت داده؟!!
> یا اینکه سی شارپ راحت تره 
> یا شایدم سی شارپ بهتره؟؟


دقیقا مهم نیست....

یک جمله ی هست که میگه : همه با #C می تونند یک سری کارهای خاص انجام بدن ... و یک سری می تونند با Java هر کاری انجام بدن.

#C راحت تره کار کردن باهاش نسبت به java‌ اما به درد یک سری پروژه ها می خوره ....
java هم دقیقا همین جوریه....

مثلا برنامه های کار با سیستم رو با ++VC می نویسند چون از بقیه زبان ها تو این زمینه قویتره....

افرادی که با ++VC برنامه نویسی می کنند هم خیلی کمه.....

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


منظورمو درست رسوندم؟؟

----------


## amir-yeketaz

ببخشین میتونین یه توضیحی در مورد کارایی هر کدوم از زبونا یعنی قویتر بودنشون در یه  زمینه توضیح بدین 
مثه همین که گفتین 
خیلی ممنون

----------


## اوبالیت به بو

> ببخشین میتونین یه توضیحی در مورد کارایی هر کدوم از زبونا یعنی قویتر بودنشون در یه  زمینه توضیح بدین


من تاحالا رنگ جاوا رو هم ندیدم اما با افرادی که با جاوا کار کردن در ارتباط بودم. این چیزهایی بوده که ازشون شنیدم و فقط با دهن گشاد و باز نگاشون کردم که چی می گن.
اوج قدرت جاوا تو پروژه های Enterprise هستش که تا دات نت بخواد یه Solution واسه پروژه های Enterprise بده جاوا رفته تو فضا و مریخ یعنی حالا حالا ها باید زنبیلش رو بذاره تو صف.
تو پروژه هایی که transaction ها زیاد هستش دات نت به هیچ وجه نمی تونه پاسخ گو باشه برای همین از پلت فرم جاوا استفاده می کنن. مثل بانک ها، بیمه ها، سیستم های رزرو بلیط که در ساعت بالای 1000 تا transaction رخ می ده (عمق فاجعه رو حس می کنی که). جاوا تقریباً تمام function های C رو پشتیبانی می کنه چون خودش اساسا با C نوشته شده.
جاوا رو هم بخوای یاد بگیری باید یه برنامه 5 ساله بریزی. تازه اون موقع می فهمی جاوا چی هست و اصلاً قراره چی کار بکنی (گستردگی کار بسیار بالاست.) چیزی در حدود 130 تا پلت فرم جاوا وجود داره (عمق فاجعه رو اینجا لمس کن) و خلاصه اینکه کاره یک شب و دو شب نیست.
اما این رو بدون جاوا رو که یاد بگیری می شی یه آدمی که مستقل از پلت فرم کار می کنه یعنی دیگه برات مهم نیست که با چی کار کنی، مهم برات performance کار هستش چون تو این مدت کاملاً موهات به رنگ سفید درومده و خسته ی خسته....
از لحاظ درآمد هم که بالاترین درآمد رو تو برنامه نویس ها داشته باشن اما خوب جونشون(در اینجا جون همون پدره) درومده.

----------


## nama62

سلام دوستان عزيز

من دانشجوي کارداني IT دانشگاه علمي-کاربردي هستم.
به ميزان خيلي کمي با زبان ++C تو دانشگاه آشنا شدم.

تصميم گرفتم که برنامه نويسي رو به طور جدي دنبال کنم و البته ميخوام از همين اول انرژي و تمرکزم رو روي جاوا بذارم عليرغم اينکه ميدونم کمي کارم سخته.

البته تازگي ها شروع کردم به يادگيري PHP و براي جاوا هم ميخوام  برم به سمت برنامه نويسي وب.

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

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

 من الان که از جاوا چيزي نميدونم ولي کمي که راه افتادم نیاز دارم به جايي که بتونم تجربه کسب کنم و آموخته هام رو تثبيت کنم وگرنه برنامه نويسي صرفا با کلاس و کتاب نميشه.
من کتاب جاواي  ديتل-ديتل رو هم تهيه کردم تازگي ها.

ممنون ميشم که کمکم کنين.


آي-دي من:   nama62_m

----------


## amir-yeketaz

> من تاحالا رنگ جاوا رو هم ندیدم اما با افرادی که با جاوا کار کردن در ارتباط بودم. این چیزهایی بوده که ازشون شنیدم و فقط با دهن گشاد و باز نگاشون کردم که چی می گن.
> اوج قدرت جاوا تو پروژه های Enterprise هستش که تا دات نت بخواد یه Solution واسه پروژه های Enterprise بده جاوا رفته تو فضا و مریخ یعنی حالا حالا ها باید زنبیلش رو بذاره تو صف.
> تو پروژه هایی که transaction ها زیاد هستش دات نت به هیچ وجه نمی تونه پاسخ گو باشه برای همین از پلت فرم جاوا استفاده می کنن. مثل بانک ها، بیمه ها، سیستم های رزرو بلیط که در ساعت بالای 1000 تا transaction رخ می ده (عمق فاجعه رو حس می کنی که). جاوا تقریباً تمام function های C رو پشتیبانی می کنه چون خودش اساسا با C نوشته شده.
> جاوا رو هم بخوای یاد بگیری باید یه برنامه 5 ساله بریزی. تازه اون موقع می فهمی جاوا چی هست و اصلاً قراره چی کار بکنی (گستردگی کار بسیار بالاست.) چیزی در حدود 130 تا پلت فرم جاوا وجود داره (عمق فاجعه رو اینجا لمس کن) و خلاصه اینکه کاره یک شب و دو شب نیست.
> اما این رو بدون جاوا رو که یاد بگیری می شی یه آدمی که مستقل از پلت فرم کار می کنه یعنی دیگه برات مهم نیست که با چی کار کنی، مهم برات performance کار هستش چون تو این مدت کاملاً موهات به رنگ سفید درومده و خسته ی خسته....
> از لحاظ درآمد هم که بالاترین درآمد رو تو برنامه نویس ها داشته باشن اما خوب جونشون(در اینجا جون همون پدره) درومده.


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

----------


## softkadeh

سلام

فکر میکنم دیگه واضحه که چیکار باید بکنید . 

خود C#‎ از جاوا و C گرفته شده پس باید اول C#‎ رو شروع کنی و بعد بری سراغ جاوا .

جاوا خودش یه پا کامپیوتره .

سراغش نرو که پیر میشی . 

C#‎ هم بازار داره هم داره پیشرفت میکنه هم ساده تره هم خوش دست تره هم قشنگتره هم نازتره .

مطمئنأ شما با هواپیمای شخصی (جاوا ) نمیری 2 تا تخم مرغ بخری و از همون دوچرخه ( C#‎ ) استفاده میکنی .

حالا اگه واقعأ با هواپیما میری تخم مرغ بخری همون جاوا رو انتخاب کن .

آدم باید برنامه نویسی رو یاد بگیره نه C#‎ یا جاوا یا VB یا ... .

جاوا یا سی شارپ جمله اشتباهیه .

به جز VB و اسمبلی تقریبأ سینتکس همه یکیه ولی قدرتاشون فرق میکنه . شما برنامه نویسی رو یاد بگیر نه زبان برنامه نویسی رو .

حرف آخر این که : C شارپ بهتره چون راحت تره و محبوب تره توی ایران و بازارش بهتره و اینکه میتونی یاد بگیریش . ولی جاوا نه سخته - قویه - توی ایران بازارش مثل سی شارپ نیست .

باز انتخاب با خودته . سی شارپ مقدمه است بر جاوا .

با تشکر و پوزش بخاطر قاشق نشسته بودنم .

----------


## powerboy2988

> من تاحالا رنگ جاوا رو هم ندیدم اما با افرادی که با جاوا کار کردن در ارتباط بودم. این چیزهایی بوده که ازشون شنیدم و فقط با دهن گشاد و باز نگاشون کردم که چی می گن.
> اوج قدرت جاوا تو پروژه های Enterprise هستش که تا دات نت بخواد یه Solution واسه پروژه های Enterprise بده جاوا رفته تو فضا و مریخ یعنی حالا حالا ها باید زنبیلش رو بذاره تو صف.
> تو پروژه هایی که transaction ها زیاد هستش دات نت به هیچ وجه نمی تونه پاسخ گو باشه برای همین از پلت فرم جاوا استفاده می کنن. مثل بانک ها، بیمه ها، سیستم های رزرو بلیط که در ساعت بالای 1000 تا transaction رخ می ده (عمق فاجعه رو حس می کنی که). جاوا تقریباً تمام function های C رو پشتیبانی می کنه چون خودش اساسا با C نوشته شده.
> جاوا رو هم بخوای یاد بگیری باید یه برنامه 5 ساله بریزی. تازه اون موقع می فهمی جاوا چی هست و اصلاً قراره چی کار بکنی (گستردگی کار بسیار بالاست.) چیزی در حدود 130 تا پلت فرم جاوا وجود داره (عمق فاجعه رو اینجا لمس کن) و خلاصه اینکه کاره یک شب و دو شب نیست.
> اما این رو بدون جاوا رو که یاد بگیری می شی یه آدمی که مستقل از پلت فرم کار می کنه یعنی دیگه برات مهم نیست که با چی کار کنی، مهم برات performance کار هستش چون تو این مدت کاملاً موهات به رنگ سفید درومده و خسته ی خسته....
> از لحاظ درآمد هم که بالاترین درآمد رو تو برنامه نویس ها داشته باشن اما خوب جونشون(در اینجا جون همون پدره) درومده.


كاملا با حرفات موافقم دوست عزيز.... 
ولي اينقدر هم سخت نيست كه ميگي  :چشمک:  :چشمک:  
كلي لذت مي بري باهاش...

من الان تو يك شركتي كار مي كنم كه در روز بيشتر از 8 ساعت درگير با جاوا هستم و وقتي هم خونه ميام يا با C#‎‎‎ يا با VB كار مي كنم... هيچ كدوم آدم رو خسته نمي كنه..... :خجالت: 
چون لذت ياد گرفتن رو خيلي خوب فهميدم...




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


چرا بيخيال شي.... كلا دارم ميگم كه مهم نيست با چه زباني كار مي كني... مهم اينه كه بدوني چه كاري داري انجام ميدي بعد ببين كدوم زبان امكانات بهتري واست در اختيار مي ذاره...

كلا تجربه اي كه كسب كردم اينكه شما اگر مي خواي به صورت انفرادي كار كني با C#‎‎‎  كار كني بهتره... اما تنهايي با جاوا بخواي كار كني خسته ميشي.....

قبل از شروع كردن با هر كدوم يك سري مفاهيم رو حتما مطالعه كن :

شي گرايي..
platform 
framework
آشنايي با الگوريتم هاي برنامه نويسي
مهندسي نرم افزار
ساختمان داده ها
پايگاه داده ها
كمي هم تحليل و طراحي.




> سلام
> 
> خود C#‎‎‎‎ از جاوا و C گرفته شده پس باید اول C#‎‎‎‎ رو شروع کنی و بعد بری سراغ جاوا .
>  سراغش نرو که پیر میشی . 
>  C#‎‎‎‎ هم بازار داره هم داره پیشرفت میکنه هم ساده تره هم خوش دست تره هم قشنگتره هم نازتره .
>  مطمئنأ شما با هواپیمای شخصی (جاوا ) نمیری 2 تا تخم مرغ بخری و از همون دوچرخه ( C#‎‎‎‎ ) استفاده میکنی .
>  حالا اگه واقعأ با هواپیما میری تخم مرغ بخری همون جاوا رو انتخاب کن .
>  آدم باید برنامه نویسی رو یاد بگیره نه C#‎‎‎‎ یا جاوا یا VB یا ... .
>  جاوا یا سی شارپ جمله اشتباهیه .
> ...


كي گفته كسي كه مي خواد جاوا كار كنه بايد از C#‎‎‎ شروع كنه؟؟؟

C#‎‎‎ تو ايران زياد طرفدار داره چون همچيش آمادست اما تو جاوا همه چيز رو خودت بايد پياده سازي كني...

اينقدر هم تفاوت مثل دوچرخه و هواپيما ندارند دوست عزيز....

و C#‎‎‎ هم مقدمه جاوا نيست.......

موفق باشي

----------


## amir-yeketaz

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

----------


## powerboy2988

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


آره ما هم تو دانشگاه از اين بحث ها مي كرديم... دليلش اين بود كه ما واقعا سوادشو نداشتيم ... اما با چند نفري كه هم تو جاوا و هم تو #C حرفه اي بودند برخورد داشتم خيلي طرز فكرم عوض شد و هيچ تعصبي در مورد زبان هاي برنامه نويسي ندارم...

من با ++C و ++VC و VB و #VC و Java و php و jsp و... كار كردم.... هر كردوم تو يك جايي به دردم خوردند .. الان تو شركت چون تو دارند با سيستم هاي بزرگ تو پلت فرم هاي متفاوت كار مي كنند بر اساس منطق دارند با جاوا كار مي كنند...

اما خودم چندتا پروژه دارم كه خيلي راحت دارم با #C پياده سازي مي كنم..

يك پروژه هم از قبل داشتم كه با vb بود و هنوز هم دارم روش كار مي كنم...

ببين كلا سياست مايكروسافت اينه كه مياد از يك تكنولوژي ايده براي مي كنه و همون رو به صورت خيلي بهتر پياده سازي مي كنه....

همون طور كه همه مي دونند ويندوز رو از سيستم عامل Mac كپي كرد... 
و دليل اينكه خيلي سود داره يكي اينكه محصولاتش خيلي user friendly هستند و ديليل ديگه اينكه هوش business ي خيلي خفني داره...

يك پيشنهاد ديگه اي كه برات دارم اينكه بري تو يك شركت شروع به كار كني تا ببيني اوضاع از چه قراره...

تا كار نكي خيلي چيزها رو نمي توني كامل درك كني(مثل من :لبخند گشاده!: ) 
مطمئن باش اون موقعه ديگه درگير اينجور چيزها نميشي (منم قبلا مثل شما بودم) خيلي راحت كاراتو مي كني و ميبيني كه اگر يك زبان شي گرايي رو بلد باشي خيلي راحت مي توي بري تو زبان هاي برنامه نويسي شي گرايي ديگه كار كني...
چون خيلي از مفهوم ها رو فهميدي و دركت از زبانها خيلي بيشتر شده

----------


## Felony

> همون طور كه همه مي دونند ويندوز رو از سيستم عامل Mac كپي كرد...


 :متفکر:  عجب !

----------


## powerboy2988

> عجب !


چرا عجب؟  :متفکر:

----------


## Felony

> چرا عجب؟


چون اون زمانی که ویندوز بود مک اصلا وجود نداشت .

----------


## JaguarXF

> تو پروژه هایی که transaction ها زیاد هستش دات نت به هیچ وجه نمی تونه پاسخ گو باشه برای همین از پلت فرم جاوا استفاده می کنن. مثل بانک ها، بیمه ها، سیستم های رزرو بلیط


درست. ولی تا اونجا خیلی راه داره. میشه با همین سی شارپ هم یک کارهایی کرد. ولی از طرف Back-end .
برای مثال یک سری  از برنامه های ما که سی شارپه نهایتا روی AIX میره .  ( قابلیتهاش رو مختصرا توی ویکی نوشته چه اوضاع خفنی رو میتونه اداره کنه ) . برای اینکه بار رو کم کنیم ، فرض کن وقتی یک Order قرار داده میشه روی سیستم ، خود این Order رو هدایت میکنه به سرور های شماره 45 که اون خودش مثلا چهار تا نود داره که اگه یکی سنگین شد ، لود رو میفرسته روی نود بعدیش . پس همیشه خود Order ها هدایت میشوند به سرورهای 45 .  حالا هر order خودش میتونه اجزایی داشته باشه ( مثل فاکتور و سربرگ فاکتور ) . اجزا رو میفرستیم روی سرورهای مثلا 67 .که اونهم فرضا 3 تا کامپیوتر داره که لود بلنسینگ کنه  .  و غیره ...

----------


## powerboy2988

> چون اون زمانی که ویندوز بود مک اصلا وجود نداشت .


پس UI ویندوز 98 ایده اش از کجا اومد؟؟؟؟

----------


## JaguarXF

دوستان لطفا بحث رو به انحراف نکشونید.
/
p.s : مک و ویندوز ، هر دو ایده هاشون رو از خواهر پدر من ، کش رفته اند . دعوا نکنید

----------


## amir-yeketaz

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

----------


## powerboy2988

> ببخشید ولی هنوز جواب منو ندادین که آیا تا شش هفت سال دیگه مایکروسافت تو کشور ما این اقتدارو خواهد داشت یا نه 
> اگه قرار باشه ما عضو تجارت جهانی بشیم و قانون کپی رایت بیاد آیا باز هم کسی با ویندوز کار میکنه با قیمت بالایه صد دلار 
> مسلما اکثرا از لینوکس استفاده میکنن-نه؟ 
> تازه شنیدم که تیم شریف داره رو سیستم عامل فارسیه که از روی لینوکس نوشته شده کار میکنه تا به عنوان سیستم عامل اول تو ایران کار کنه 
> آیا واقعیت داره 
> اگه اینا اتفاق بیفته مسلما اوضاع خیلی فرق میکنه؟نه؟ 
> اگه بازم اشتباه میکنم منو راهنمایی کنین؟ 
> ولی حرفه شما رو قبول دارم 
> ولی خداییش خیلی ها رو تو همین سایت دیدم که با اصطلاح "همه رو بلدم ولی انگار هیچی بلد نیستم" تقاضایه کمک میکنن 
> پس با این اوصاف نباید یه زبانو برایه حرفه ای شدن انتخاب کرد ؟؟؟!!!


اینقدر قوانین تو ایران داره تغییر می کنه که آدم از فرداش خبر نداره چه برسه به چند سال دیگه...

تیم شریف رو خیلی وقته شنیدم که قرار این سیستم رو ارائه بدن!!!!

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

----------


## MIDOSE

> اگه قرار باشه ما عضو تجارت جهانی بشیم و قانون کپی رایت بیاد آیا باز هم کسی با ویندوز کار میکنه با قیمت بالایه صد دلار 
> مسلما اکثرا از لینوکس استفاده میکنن-نه؟


ایران برای عضویت در تجارت جهانی هنوز امادگی نداره و به نظر من اگر با این روند پیش بریم تا ده سال اینده هم نباید منتظر این اتفاق بود.

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

پس با این اوضاع می توان تا پنج سال را تضمین و تا ده سال اینده را با احتمال پیش بینی کرد که نیازی به نگرانی نیست(البته با این روند).




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


تیم شریف دارند روی بومی سازی لینوکس کار می کنند که به نسبت زمان و هزینه های پرداخت شده در حدی که انتظار می رفت کار نتیجه نداد(شایدم انتظار ما بالا است). در اصل کار به اهل فن سپرده نشد تا با ضمانتی نسبی شاهد موفقیتی بیشتر از حالا باشیم.




> اگه اینا اتفاق بیفته مسلما اوضاع خیلی فرق میکنه؟نه؟ 
> اگه بازم اشتباه میکنم منو راهنمایی کنین؟


اگر واقعن کار برای جامعه قابل قبول باشه اوضاع فرق می کنه ولی نه به اون شکلی که یک شبه همه تغییر جهت بدند. برای مثال :مطمئنن منی که پنج میلیون  برای اموزش افرادم  هزینه کردم حاضر نیستم تا زمانی که می تونم استفاده ی لازمه را ببرم تغییر جهت بدم.




> ولی خداییش خیلی ها رو تو همین سایت دیدم که با اصطلاح "همه رو بلدم ولی انگار هیچی بلد نیستم" تقاضایه کمک میکنن 
> پس با این اوصاف نباید یه زبانو برایه حرفه ای شدن انتخاب کرد ؟؟؟!!!


هیچ وقت کسی را ندیدم که بگه من در کار با اچار حرفه ای هستم ولی همه ی ما لوله کشی را دیده ایم که در کار با اچار حرفه ایست در حالی که در کار با سایر وسایل نیز قدرتمند(مسلط) است.

----------


## amir-yeketaz

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

----------


## softkadeh

سلام

شما برنامه نویسی رو یاد بگیر بهت قول میدم همه زبون ها کاملأ شبیه هم هستند .

چرا میگید که C#‎ کپی شده از جاوا ؟
نگید اینطوری . فقط تنها شباهت اینا اینه که چون سازندشون 1 نفر بوده کدهاش وSyntax شون شبیه به همه .

C#‎ ماله من نیست که بخوام ازش تعریف کنم و اونو تبلیغ کنم . من فقط میگم برای شروع بهتره . هدف برنامه نویسیه نه زبان برنامه نویسی . 

کسی که برنامه نویسی رو بلده دیگه براش مهم نیست که زبون چی باشه . اون موقع است که یه پروژه متوسط بهش پیشنهاد میشه و خیلی بهتره که با C#‎ بنویسه و یک موقع هم یه پروژه بزرگ با امکانات بالا و سنگین بهش پیشنهاد میشه و بهتره که با جاوا بنویسه .

"""""" یاد گیری برنامه نویسی مهم است نه یاد گیری زبان خاص """"""

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

وقتی هم که اینقدر آینده نگری و میخوای تا مراتب بالا بری جاوا رو انتخاب کن . تمام دنیا میدونن که توی برنامه نویسی هیچ زبونی به غولهایی مثل C - Java نمیرسه .

ولی چیزی که مشخصه اینه که C#‎ الان خیلی هوادار داره .

منم برنامه نویسی بلد نیستم ولی این بود اطلاعات ناقص بنده .

با تشکر - بهنام

----------


## cups_of_java

> نوشته شده توسط *SilverSoft*  
> _چون اون زمانی که ویندوز بود مک اصلا وجود نداشت ._


اطلاعات خودتون رو با مطالعه اینترنتی کامل کنید. مک اولین PC دنیا بوده. مک اولین سیستم عامل بوده، مک اولین سیستم عامل گرافیکی بوده و مفهوم ویندو و موس اصلن توسط Apple ابداع شده. (اوخر دهه ۸۰) اطلاعات کسب کنید بعد اظهار نظر کنید دوست عزیز.




> چرا میگید که C#‎‎‎‎ کپی شده از جاوا ؟
> نگید اینطوری . فقط تنها شباهت اینا اینه که چون سازندشون 1 نفر بوده کدهاش وSyntax شون شبیه به همه .


سازنده جاوا و سی شارپ یک نفر نبوده. سازنده جاوا یک گروه بوده به رهبری *James* *Gosling* و سازنده سی شارپ هم آقای *Anders Hejlsberg* بوده که ایشون سازنده Delphi بوده و در Borland کار می کرده که بعدن توسط مایکروسافت استخدام شد و سی شارپ را طراحی کرد.
زبان سی شارپ به خاطر موقعیت زمانی که توش ساخته شد، از جاوا خیلی ایده گرفت و خیلی از مسایل رو شبیه جاوا پیاده سازی کرد. همین طور حتی کتابخانه های سی شارپ خیلی (حتی از نظر اسم گذاری)‌شبیه جاوا هستند. 
اسم این کار کپ زدن یا الگو گرفتن (در بهترین حالت) هستش. این کار ذاتن ایرادی نداره! اما به شرطی که شرکت سازنده اینقدر مخلصانه برخورد کنه که به زبونش بیاره نه اینکه ...

این موضوع رو حتی برخی از افرادی که طراح مایکروسافت هستند و در خارج بودن هم تعیید می کنند.


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

----------


## amir-yeketaz

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


ببخشید ولی هنوز کسی جواب این سوال مارو نداد

----------


## cups_of_java

> ببخشید ولی هنوز کسی جواب این سوال مارو نداد


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

----------


## Exception

> اطلاعات خودتون رو با مطالعه اینترنتی کامل کنید. مک اولین PC دنیا بوده. مک اولین سیستم عامل بوده، مک اولین سیستم عامل گرافیکی بوده و مفهوم ویندو و موس اصلن توسط Apple ابداع شده. (اوخر دهه ۸۰) اطلاعات کسب کنید بعد اظهار نظر کنید دوست عزیز.


البته مواردی که شما هم مطرح کردید، هیچ کدوم درست نیستند!
مک اولین PC نبوده! شاید بشه گفت اولین PC که به تولید انبوه رسیده و محبوب شده مک بوده، ولی قطعا اولین PC مک نبوده! در این مورد، میتونید اینجا رو ببینید: http://www.blinkenlights.com/pc.shtml
مک اولین سیستم عامل گرافیکی هم نبوده! اولین سیتم عامل گرافیکی رو Imlac PDS-1 داشته ولی البته خیلی معروف نبوده. معروفتر از اون Alto بوده (تولید شده توسط Xerox) که خود استیو جابز هم (همونطور که خودش هم میگه) ایده سیستم عامل گرافیکی رو از همین Alto گرفته.
ماوس هم یکی از اعضای همین پروژه Alto در همون پروژه طراحی کرده بود و اون رو هم استیو جابز از اونجا برداشته بود. اینجا رو هم ببینید: http://en.wikipedia.org/wiki/Xerox_Alto

پیشنهاد میکنم درباره Alto بیشتر مطالعه کنید. در این پروژه بسیاری از مفاهیم پیشرفته در سیستمهای امروزی رو در سال 1972 ارایه کرده بودند. بجز قضیه سیستم عامل های گرافیکی و ماوس، موارد مهمی چون برنامه نویسی شیء گرا و حتی مفهوم شبکه و ایمیل هم همون سال در این سیستم دیده شده بود!

----------


## cups_of_java

> البته مواردی که شما هم مطرح کردید، هیچ کدوم درست نیستند!
> مک اولین PC نبوده! شاید بشه گفت اولین PC که به تولید انبوه رسیده و محبوب شده مک بوده، ولی قطعا اولین PC مک نبوده! در این مورد، میتونید اینجا رو ببینید: http://www.blinkenlights.com/pc.shtml
> مک اولین سیستم عامل گرافیکی هم نبوده! اولین سیتم عامل گرافیکی رو Imlac PDS-1 داشته ولی البته خیلی معروف نبوده. معروفتر از اون Alto بوده (تولید شده توسط Xerox) که خود استیو جابز هم (همونطور که خودش هم میگه) ایده سیستم عامل گرافیکی رو از همین Alto گرفته.
> ماوس هم یکی از اعضای همین پروژه Alto در همون پروژه طراحی کرده بود و اون رو هم استیو جابز از اونجا برداشته بود. اینجا رو هم ببینید: http://en.wikipedia.org/wiki/Xerox_Alto
> 
> پیشنهاد میکنم درباره Alto بیشتر مطالعه کنید. در این پروژه بسیاری از مفاهیم پیشرفته در سیستمهای امروزی رو در سال 1972 ارایه کرده بودند. بجز قضیه سیستم عامل های گرافیکی و ماوس، موارد مهمی چون برنامه نویسی شیء گرا و حتی مفهوم شبکه و ایمیل هم همون سال در این سیستم دیده شده بود!


ممنون. بله، درسته. اما این سیستم ها تجاری نشدند هیچوقت. شدند؟ Apple تونست به بازار این سیستم رو عرضه کنه و در واقع از دید کاریری من عرض کردم که اولین بوده! 

نکته جالب اینکه حداقل آقای جایز مثل آقای گیتز دزدی نکرده! گفته که ایده از کجا اومده. :D

----------


## amir-yeketaz

> *برنا مه نویس جاوا راحت تر می تونه به سمت سی شارپ بره ولی برنامه نویس سی شارپ به راحتی نمی تونه بره سمت جاوا*
> !


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

----------


## Felony

> اطلاعات خودتون رو با مطالعه اینترنتی کامل کنید. مک اولین PC دنیا بوده. مک اولین سیستم عامل بوده، مک اولین سیستم عامل گرافیکی بوده و مفهوم ویندو و موس اصلن توسط Apple ابداع شده. (اوخر دهه ۸۰) اطلاعات کسب کنید بعد اظهار نظر کنید دوست عزیز.


 من کاری به اینکه مک اول موس معرفی کرد یا ... ندارم ، تو ویکی پدیا بگرد ببین اول ایده ی کدوم سیستم عامل مطرح شد ، درضمن دوستانی که بحث علمی میکنن کمی معرفت در گفتار خودشون رو بالا ببرن ، کم کم بعضی کاربران اینجا رو با میدان جنگ اشتباه میگیرن ، اگر کسی درمقابل سخنان شما ادب به خرج میده دلیل به ناتوانی اون شخص در پاسخگویی شما نیست !!!

----------


## softkadeh

سلام

بابا به این دوستمون کمک کنید که انتخاب خوبی بکنه . اینجا که بحث سیستم عامل نیست .

دوست عزیز جاوا سخته سی شارپ محبوب . جاوا قویه سی شارپ آسون تر .

باید برنامه نویسی یاد بگیری نه زبونشو . این زبون فقط یه ابزاره واسه پیاده سازی فکر روی ماشین .

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

من که باشم لذت استفاده از VS رو با هیچی عوض نمیکنم . ( البته تا جای امکان )

با تشکر . بهنام

----------


## cups_of_java

> من کاری به اینکه مک اول موس معرفی کرد یا ... ندارم ، تو ویکی پدیا بگرد ببین اول ایده ی کدوم سیستم عامل مطرح شد ، درضمن دوستانی که بحث علمی میکنن کمی معرفت در گفتار خودشون رو بالا ببرن ، کم کم بعضی کاربران اینجا رو با میدان جنگ اشتباه میگیرن ، اگر کسی درمقابل سخنان شما ادب به خرج میده دلیل به ناتوانی اون شخص در پاسخگویی شما نیست !!!


شما همون کاری به این کار ها نداشته باش. ویکی پدیا گویای امر هست. صراحت بیان هم معادل با میدان چنگ نیست. من هم بی ادبی نکردم به کسی. حرف علمی رو میشه جواب علمی بهش داد. اما حرف تو حاشیه رو ترجیح می دم با صراحت و تو حاشیه جواب بدم.

----------


## cups_of_java

> میشه این تیکه رو بیشتر توضیح بدین؟؟؟!!!


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

همین مسائل باعث میشه در ابتدای شروع جاوا هر چی میرید جلو باز هم مطلب هست که یاد بگیرید اما در سی شارپ و دات نت اینطور نیست. (این در واقع به معنی سخت تر بودن جاوا نیست.)

من تا به حال چندین برنامه نویس دات نت دیدم که به بعد از چندین سال برنامه نویسی و کار به سمت جاوا اومدن تا خودشون رو ارضا کنن و با جاوا راضی تر بودن.
اما تا حالا جاوا کاری ندیدم که بره سمت دات نت! (جز یک مورد که ایشون هم به اقتضای کسب و کار در شرایط خاصی این کار رو انجام داد)

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

تو ایران هم به همون اندازه که دات نت کار هست جاوا کار هم هست. فرصت های شغلیش زیاده و بسیار هم پروژه های خوبی باهاش انجام میشه.
اتفاقن اکثر پروژه های بزرگ و ملی تو ایران با جاوا انجام شده در این 5 سال اخیر... (شما به سایت برنامه نویس نگاه نکنید که تعداد (و فعالیت) اعضای دانت نتی و دلفی کار توش خیلی بیشتره و فروم جاواش مسکوته، این نشاندهنده وضعیت کنونی بازار جاوا در ایران نیست. من این موضوع رو 6 سال هست که زیر نظر دارم. شما جاوا کار ها رو ندیدید. این دلیل نمی شه که اون ها نیستند یا کمند. برای یک نمونه می تونید به گروه j2eelist در یاهو سر بزنید و ببینید اوضاع چطوره اونجا...)

حالا دیگه با توجه به شناختی که از روحبات خودتون دارید خودتون می دونید...

----------


## powerboy2988

> سی شارپی ها چیزی برایه گفتن ندارن؟؟!!


يعني چي چيزي براي گفتن ندارن؟؟ چه داري دادگاه راه ميندازي؟؟؟

يكي از مهمترين دلايلي كه باعث شده تو ايران Net. زياد باشه اينكه اين محصول تو ايران داره رايگان ارزه مي شه...

جاوا به مراتب بهتره از #C .... و خيلي قدرتمند تره....
اما تو پروژه هاي متوسط بهتره كه از #C استفاده بشه تا جاوا.. چون كسي نمياد با جاوا هزينه كنه...

اين تالار ديگه داره به انحراف كشيده ميشه... احساس مي كنم كه تا الان جوابتونو گرفتين...

از مديران سايت هم درخواست مي كنم كه اين تاپيك رو قفل كنند

----------


## vcldeveloper

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


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

زبان جاوا مزیت خاصی نسبت به زبان #C نداره، چون جاوا سال ها قبل از طراحی زبان #C وجود داشته، و نقاط ضعف و قوت آن بارها مورد توجه و بررسی قرار گرفته بوده. طراح زبان #C هم فردی هست که ابتدا Turbo Pascal را بوجود آورد، سپس Delphi، سپس به مایکروسافت  پیوست و بر روی #J که نسخه ایی مایکروسافتی از جاوا بود کار کرد، و سپس #C را طراحی کرد. پس در طراحی زبان #C سعی شده تا حد امکان از مزیت های جاوا استفاده بشه، و از ضعف های آن پرهیز بشه. از نظر زبانی شما نمی تونید به همین راحتی مدعی برتر بودن زبان جاوا بر زبان #C بشید.

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

البته هر دوی این پلت فرم ها Managed Code تولید می کنند که بحث Managed Code در قیاس با Native Code خودش یک بحث مفصل و دنباله دار هست، و مربوط به این تاپیک نمیشه.

جاوا و دات هر دو با هدف توسعه نرم افزارهای سازمانی (Enterprise) شکل گرفتند. در زمانی که جاوا عرضه شد، در این زمینه خلاء بزرگی وجود داشت. جاوا سعی کرد نقاط ضعف زبان های برنامه نویسی Nativeایی مثل C و ++C را در حوزه توسعه نرم افزارهای سازمانی، برطرف کنه. برای این منظور هم زبان مورد استفاده مطلقا شی گرا شد، و بسیاری از امور مهم، ولی خطرناک مثل مدیریت حافظه، از اختیار کامل برنامه نویس خارج شد، و با توجه به نیاز نرم افزارهای سازمانی برای اجرا بر روی سکوهای مختلف، تولید کد برای یک ماشین مجازی به جای تولید کد Native در آن مورد توجه قرار گرفت. با توجه به اینکه جاوا خلاء بسیار بزرگی را پر می کرد، به سرعت مورد توجه قرار گرفت، بخصوص از طرف شرکت هایی که در عرصه تولید نرم افزارهای سازمانی فعالیت می کردند، از همین رو شرکت هایی مثل IBM یا Oracle به پشتیبانی و حمایت گسترده از آن پرداختند. به تدریج ابزارها و کتابخانه های مختلفی برای جاوا تولید شدند، و تا به امروز بسیاری از آنها به پایداری و ثبات قابل توجه ایی رسیدند.

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

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

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

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

اینکه در دانشگاه ها بیشتر جاوا تدریس می شود هم بخاطر اولا قدمت بیشتر جاوا هست، ثانیا منابع آزاد در ارتباط با جاوا بسیار بیشتر هستند، و ثالثا ابزارها و کتابخانه های آزاد و رایگان بسیار بیشتری برای آن موجود هستند؛ البته در مقایسه با دات نت و زبان #C.

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

----------


## cups_of_java

> زبان جاوا داریم، و پلت فرم جاوا، شما دارید پلت فرم جاوا را با زبان C#‎‎ مقایسه می کنید که کلا مقایسه باطلی هست. باید پلت فرم جاوا را با پلت فرم دات نت مقایسه کنید، یا زبان جاوا را با زبان C#‎‎.


حرف شما درسته اما نکته مد نظر من این هست که دات نت در مقابل جاوا فقط یک محیط برنامه نویسی هست و بس! یعنی شما چند تا زبان رو بر اساس یک محیط اجرای یکسان در اختیار دارید. اما در مقابل دنیایی از استاندارد ها (Specifications) و تکنولوژی ها دارید زیر سایه یک اسم: Java! من اسم دومی رو platform بزرگتری میزارم در حالی که اولی platform کوچکتری به نظر میرسه. می تونید یک معادل برای این بیارین؟ و در کجای دات نت و یا مایکروسافت می تونم چنین چیزی رو پیدا کنم؟




> زبان جاوا مزیت خاصی نسبت به زبان C#‎‎ نداره، چون جاوا سال ها قبل از طراحی زبان C#‎‎ وجود داشته، و نقاط ضعف و قوت آن بارها مورد توجه و بررسی قرار گرفته بوده. طراح زبان C#‎‎ هم فردی هست که ابتدا Turbo Pascal را بوجود آورد، سپس Delphi، سپس به مایکروسافت  پیوست و بر روی #J که نسخه ایی مایکروسافتی از جاوا بود کار کرد، و سپس C#‎‎ را طراحی کرد. پس در طراحی زبان C#‎‎ سعی شده تا حد امکان از مزیت های جاوا استفاده بشه، و از ضعف های آن پرهیز بشه. از نظر زبانی شما نمی تونید به همین راحتی مدعی برتر بودن زبان جاوا بر زبان C#‎‎ بشید.


دقیقن. به این راحتیها نمیشه این دو زبان رو (در سطح زبان برنامه نویسی) با هم قیاس کرد و باید مقاله های فنی زیادی رو خوند (من خودم به زمانش خوندم چون علاقه داشتم) و اتفاقن در موارد زیادی تفاوت ها سلیقه ای هست و کلیشه ای... اما مواردی هم هست که میشه روشون حرف زد.




> اما بحثی که همواره مطرح بوده، بحث زبان جاوا یا زبان C#‎‎ نبوده، بلکه بحث پلت فرم جاوا و پلت فرم دات نت هست. از نظر ایده اولیه، در تئوری ایده دات نت قوی تر از ایده جاوا هست، چون ایده جاوا زبان محور و مستقل از سکو هست، در حالی که ایده دات نت در تئوری استقلال از زبان و سکو هست. البته در عمل دات نت بر روی استقلال از زبان تاکید میکنه، و سعی میکنه با توجه به نقش مایکروسافت در ارائه سکوی ویندوز، برنامه نویسی برای سایر سکوها را فقط تا حدی که موجب محبوبیت دات نت، و حفظ بازار ویندوز بشه، حمایت میکنه؛ یعنی تاکید اصلی بر روی پلت فرم ویندوز هست، و پشتیبانی از سایر پلت فرم ها فقط تا حدی از نظر مایکروسافت منطقی هست که منجر به رویگردان شدن کاربران از ویندوز نشه.


مایکروسافت در دات نت (سال 2001) یه ایده ای داد اما خودشم توش موند چون انحصار طلب بوده همیشه. شما یک بار متنی که نوشتید رو بخونید متوجه تناقضی که در مورد مستقل از سکو بودن در متن خودتون دارید میشید. جاوا واقعن مستقل از سکوست اما سی شارپ این طور نیست! محیط اجرا و بستری که همه  کتابخانه ها و کدهاش بر اساس dll و...ها هستند چطور می تونن مستقل از سکو باشن؟ کی هست که ادعا کنه dllها موجودات دوست داشتنی ای هستند؟ کی هست که دچار مشکل dll hell نشده باشه در طول توسعه نرم افزار و ...




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


بهترین انتخاب برای برنامه های (desktop) تحت ویندوز دات نت هست. اما آیا صنعت یک کشور و محصولات نرم افزاری فقط همین دسته هستند؟ اون هم زمانی که سرویس های روی شبکه وب غوغا می کنند...





> در جاوا همچین یکپارچگی بین ابزارها و کتابخانه ها وجود نداره، چون این ابزارها و کتابخانه ها توسط شرکت ها و افراد مختلفی توسعه داده شدند، ولی بازیگران مهم عرصه جاوا مثل IBM، SUN یا Oracle سعی کردند تا حد امکان بین جاوا و محصولات خودشان یکپارچگی مناسبی بوجود بیاورند.


هیچ بزرگی بی هزینه نیست. و این آزادی عمل از همین جا بدست می اد. در حال حاضر البته یکپارچگی خوب و عمیقی در سکوی جاوا وجود داره بین همه محصولات...





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


به دلیل قدمت نیست. (5 سال زمان زیادی نیست.) به دلیل فرهنگ سکوی جاوا و متن باز بودن جاوا این اتفاق افتاده. سازمان ها بیشتر به دنبال راه حل های اثبات شده، استفاده شده، محبوب، و حتی کم هزینه!!! هستند. بهترین سرور ها رو شما به صورت متن باز و رایگان سمت جاوا داری (مثلن سرور JBoss که یکی از سرور های برنامه های تحت وب غول هست با امکانات در کلاس سازمانی و تجاری و با پایداری (stability) بالا که با نصب شدن روی یک linux نمی شه با یک IIS روی سرور ویندوز مقایسش کرد.
جالب اینجاست که غیر از مسائل فنی و پایداری و ... حتی مدیریت (administration) چنین سیستمی بسیار ساده تر از معادل ویندوزی انجام میشه که نهایت پیغام خطایی که میده این هست که: "Contact Your Administrator!"
کمی وارد جزییات شدم تا بگم دلیل اون امر قدمت نیست، بحث transaction هم نیست.





> اینکه در دانشگاه ها بیشتر جاوا تدریس می شود هم بخاطر اولا قدمت بیشتر جاوا هست، ثانیا منابع آزاد در ارتباط با جاوا بسیار بیشتر هستند، و ثالثا ابزارها و کتابخانه های آزاد و رایگان بسیار بیشتری برای آن موجود هستند؛ البته در مقایسه با دات نت و زبان C#‎‎.


این مسئله هم صرفن به خاطر متن باز بودن و open بودن سکوی جاواست. کدوم دانشگاه میاد برای هر آزمایشگاهش پول بده یک نسخه دات نت بخره؟ تازه بخره که محدود بشه به کتابخانه های مابکروسافت؟ جالبه بدونیم که اکثر پروژه های تحقیقاتی یا جاوا هستند یا زبان های دیگه... ولی سی شارپ یا دات نت نیستند! 



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

----------


## mazdadoost

> مایکروسافت در دات نت (سال 2001) یه ایده ای داد اما خودشم توش موند چون انحصار طلب بوده همیشه. شما یک بار متنی که نوشتید رو بخونید متوجه تناقضی که در مورد مستقل از سکو بودن در متن خودتون دارید میشید. جاوا واقعن مستقل از سکوست اما سی شارپ این طور نیست! محیط اجرا و بستری که همه  کتابخانه ها و کدهاش بر اساس dll و...ها هستند چطور می تونن مستقل از سکو باشن؟ کی هست که ادعا کنه dllها موجودات دوست داشتنی ای هستند؟ کی هست که دچار مشکل dll hell نشده باشه در طول توسعه نرم افزار و ...


دوست عزیز : JAR HELL
البته بنده در مورد مطالب این تاپیک مفصل تر پست میزنم.

----------


## cups_of_java

> دوست عزیز : JAR HELL
> البته بنده در مورد مطالب این تاپیک مفصل تر پست میزنم.


مرسی. یه قسمت اساسی این داستان بر میگرده به بحث مدیریت وابستگی ها (Dependency) که این مجزا از زبان هست و در هر دو زبان وجود داره. طبیعی هم هست. البته هر دو با پیشرفت در تعریف متا دیتا و استاندارد دارن این مشکل رو حل می کنن.
اما یه نکته هست اونم اینه که در محیط های native ما مرحله لینک داریم. و این مرحله لینک هست که یه سری مشکلات رو ایجاد می کنه. dllها هم همین جا مطرح می تونن باشن. اما در محیط اجرای جاوا ما مرحله link نداریم. یعنی شما کدت رو کامپایل می کنی و بعد مستقیمن اجرا می کنی. این وظیفه loader هست که برات کد های مورد نیاز رو پیدا کنه و این کد ها بر اساس اسمشون در loader ایجاد میشن. حداقل اینه که این ها کد هایی که در kernele سیستم بارگذاری شده باشن و قابل دستکاری (پاک کردن) نباشن، نیستند. و اینکه من نمی دونم dllها رو چطور ثبت می کنند اما بالاخره اسم dllها مهمه! نیست؟ 
از طرفی مدیریت پکیچ شده ( که توش جار هست) راحت تره تا فایل های dll سراسری تو سیستم! 
خلاصه می خواستم بگم که مدل اجرا چون native هست و سنتی یک سری مشکلات بیشتره... نمی خواستم یگم طرف جاوا هیچ مشکلی نیست!

----------


## cups_of_java

> زبان جاوا مزیت خاصی نسبت به زبان C#‎‎‎ نداره، چون جاوا سال ها قبل از طراحی زبان C#‎‎‎ وجود داشته، و نقاط ضعف و قوت آن بارها مورد توجه و بررسی قرار گرفته بوده. طراح زبان C#‎‎‎ هم فردی هست که ابتدا Turbo Pascal را بوجود آورد، سپس Delphi، سپس به مایکروسافت پیوست و بر روی #J که نسخه ایی مایکروسافتی از جاوا بود کار کرد، و سپس C#‎‎‎ را طراحی کرد. پس در طراحی زبان C#‎‎‎ سعی شده تا حد امکان از مزیت های جاوا استفاده بشه، و از ضعف های آن پرهیز بشه. از نظر زبانی شما نمی تونید به همین راحتی مدعی برتر بودن زبان جاوا بر زبان C#‎‎‎ بشید.
> 			
> 		
> 
> دقیقن. به این راحتیها نمیشه این دو زبان رو (در سطح زبان برنامه نویسی) با هم قیاس کرد و باید مقاله های فنی زیادی رو خوند (من خودم به زمانش خوندم چون علاقه داشتم) و اتفاقن در موارد زیادی تفاوت ها سلیقه ای هست و کلیشه ای... اما مواردی هم هست که میشه روشون حرف زد.


حیفم اومد این موضوع رو اشاره نکنم که: یکی از نکات بارزی که توی مقایسه زبان مهم می دونن این هست که یک زبان برای چه هدفی؟ با چه ملاحظاتی؟ ساخته شده و اینکه چقدر به اهداف و ملاحظاتی که داشته وفادار بوده. این موضوع برتری میاره چون به برنامه نویس اون زبان کمک می کنه که یک درک و دید واحد داشته باشه. دنیاش رو یک جور ببینه و دچار شلوغ کاری و پراکندگی فکری نشه.
جاوا زمانی که در حال بوجود اومدن بود، اولین کاری که کرد این بود که اهداف خودش رو مشخص کرد! جاوا از روی رقابت بوجود نیومد؛ جاوا بوجود اومد چون بهش نیاز (چه نیازی؟) بود. افرادی احساس کمبود هایی کردند و اتفاقن افراد دانشمندی هم بودند؛ پس دست به طراحی یک زبان زدند و این براشون هدف تعریف میکرد. یکی از اهداف این بود که جاوا باید ساده باشه! برنامه نویس رو درگیر با حاشیه ها نکنه! یکی از این حاشیه ها مدیریت حافظه بود. پس از برنامه نویس اشاره گر ها رو گرفت و سپرد دست خود محیط اجرا. حالا خدا هم پایین می اومد هیچ دلیل کاری و تجاری نمی تونست باعث شه این ها تو جاوا کدهای unmanaged رو راه بدن. از طرفی باید کد ها safe می بودن چون جاوا هدفش این بود که robust باشه. پس در راستای این هدف گام برداشت حالا ممکن بود چیزهایی رو هم از دست بده! می خوام بگم این وفادار بودن به هدف خیلی مهمه! 
اتفاقن همین به مرور زمان باعث شد برنامه نویس های جاوا همه یک جور و امن برنامه بنویسن. اثری از اشاره گر هیچ جا نباشه و ... خب کسی که بخواد بخواد native کار کنه میره سراغ سی یا سی پلاس پلاس! نمیره سراغ جاوا! جاوا هدفش چیز دیگه ای بود. 
حالا سی شارپ رو بررسی کنیم، می بینیم که سی شارپ (البته به دلایلی) همچی رو راه داده! هم اشاره گر داره، هم نداره! با توجه به حرف های بالا این خوبه؟ این یعنی غنی بودن یک زبان!؟ طراحان زبان این تعریف رو ارایه نمی دن!

تو شی گرایی نگاه کنیم، می بینیم جاوا گفته من فقط شی گرا هستم! پس چیزی به نام ارجاع به عملیات (delegate) براش بی معنی میشه! خود مایکروسافت با جاوایی ها چقدر دعوا کردن اون زمان که بگن شما delegate ندارین! جاوایی ها هم گفتن نداریم چون خلاف شی گرایی (بر ضد encapsulation) هستش. در عوض راهکار دیگه ای داریم که این کار رو میشه باهاش انجام داد و البته کدش در مقابل delegateها چندین خط بیشتر و در ظاهر شلوغ تر بود! خوب!؟ این برمی گرده به اون هدف! کسی نمی گه تو قدم اول که delegate چبز بدیه! اما هدفی بوده که گفته خلوص شی گرایی در برنامه ها و کد، به مرور زمان نگهداری و تغییر نرم افزار رو راحت تر میکنه. وگرنه delegateها اتفاقن موجودات قدرت مندی هستند. اینطور نگاه کنیم باید بریم سراغ Higher Order Functionها که تو زبان های Functional پیدا میشن. سی شارپ می خواد اضافشون کنه! یعنی می خواد functional هم بشه! جاوا فکر نمی کنم همچین نظری داشته باشه بخاطر همون هدف اولیه! یعنی ساخت ساده سیستم های سازمانی قدرت مند و robust! 
تازه این واقعن سوالیه که باید تو چند سال آینده بهش پاسخ داده بشه و اون اینه که آینده زبان های برنامه نویسی داره به کجا میره؟ آیا زبان های همه کاره گنده بوجود خواهند امد؟ این خوبه؟ بده؟ یا اینکه زبان های مختلف برای هر کار  تخصصی ولی با استاندارد هایی برای اتصال و تعامل بین زبان ها!
من جوابم دومی هستش.

ببخشید که از بحث خارج شدم...

----------


## mazdadoost

با سلام خدمت دوستان . فارغ  از بحث و گفتگو های انجام شده در این تاپیک و درستی و نادرستی آنها چند نکته در باره موضوع این تاپیک به ذهنم آمد که برای دوستان بازگو  می کنم :( امید وارم دوستان حوصله مطالعه این مطلب را داشته باشند .) 1.انتخاب زبان بر خلاف نظر بعضی از مهندسان نرم افزار که می گویند : انتخاب مهمی نمی باشد و به معماری پروژه وابسته است از نظر بنده امری مهم است . چرا ؟ 2.با انتخاب یک زبان برنامه نویسی ما قبل از اینکه یک چیز جدید برای یادگیری انتخاب کنیم در حال ورود به جامعه ای جدید هستیم . هر جامعه ای دارای مختصات خاص خود است . جوامعی که بر پایه یک زبان برنامه نویسی شکل می گیرند نیز خصوصیات ویژه خود را دارا می باشند . افراد قبل از برسی مزایا و معایب فنی یک زبان جذب خصوصیات جوامعی می شوند که پیرامون آن زبان برنامه نویسی نزج گرفته است . به عبارتی اغلب این برسی فنی و مو به موی ویژه گی های فنی زبان ها (و پلت فرم های مربوطه) نیست که انتخاب اولیه افراد برای جذب شدن به یک زبان برنامه نویسی را شکل می دهد بلکه مسائلی است که به جوامع پیرامونی آن زبان مرتبط است. 3.مسائل پیرامونی اغلب شامل موارد زیر می شود : a. اندازه جامعه : هر چه قدر جامعه مورد نظر بزرگتر باشد احتمال جذب فرد بیشتر است . افراد این مسئله را معمولا از برسی اطراف خود به شکل آگاهانه یا نا خودآگاه کسب می کنند .مثلا در انتخاب تیم فوتبال مورد علاقه احتمالا به سمت تیمی با بیشترین طرفدار (چه در مقیاس محلی و یا در صورت کسب دانش به صورت گلوبال) سوق خواهد یافت البته گاهی هم اندازه جامعه در افرادی که روحیه رادیکال تری دارند باعث نتیجه عکس می و به عبارتی شخص بر خلاف حالت قبل به سمت جوامع کوچکتر سوق پیدا می کند . b.شور و نشاط و رفاه : هر چقدر جامعه شور و نشاط بیشتری از خود نشان دهد افراد بیشتری راجذب خود می کند . به عبارتی در یک زبان فرقی نمی کند که چقدر از لحاظ اکادمیک بروی کاغذ خوب و کامل باشد یا یک پلت فرم چه دامنه ای از گستردگی را فراهم آورد , آنچه دید اولیه فرد را در جذب شدن به زبان سوق می دهد مشاهده شور رو اشتیاق و میزان رضایت سایر افراد جوامعی است که حول یک زبان برنامه نویسی و پلت فرم شکل گرفته است که این نوید اینده ای روشن برای او در رشد و ارتقاء در آن جامعه خواهد بود . وجود امکانات رفاهی نیز می تواند عاملی مهم در کنار آموزش مناسب برای جذب شخص باشد . c.وجود افراد نخبه و بارز در آن جامعه : که می تواند سر منشاء ورود یک شخص را به آن جامعه از طریق مسائلی مانند :مدعی بهترین بودن آن زبان,بیان ویژگی های مثبت ان زبان و همچنین راهنمایی به جا و به موقع شخص در یادگیری آن زبان خود را نشان دهد .  d.در هر جامعه ای به مرور پدیده طرفداری (Fans) پیش می آید . وجود این فن ها خود در جوامع یکی از عوامل منحرف کننده انتخاب فنی و درست فرد را در ورود به آن جامعه به شکل منطقی و مطابق با ادله علمی موجب می شود . 4.پس از ورود فرد به جامعه بسته به میزان استعداد و داشته های قبلی (دانش و تجربه) شخص به مرور در جامعه پیشرفت کرده و با مختصات جامعه تحت پارادایم شخصی خود (منظور این است که در این جا بر اساس نیاز عده ای خصوصیتی خوب و عده ای دیگر همان خصوصیت بد پنداشته می شود) با مختصات واقعی آن جامعه آشنا می شود . این مسئله تابع همانطور که گفته شد در درجه اول شامل خصوصیات فرد شامل استعداد-هوش-دانش و تجربه قبلی و در درجه های بعدی شامل شور ,نشاط , رفاه و آموزش به جا و کافی در جامعه مورد نظر است .  5.از این مرحله به بعد افراد ممکن است به دلایلی چون عدم ارضای نیاز های اساسی یا بوجود آمدن نیاز های جدیدی که جامعه قادر به پاسخگویی آن نیست, کمبود های عمده در کیفیت تولیدی جامعه , بی اعتباری جامعه سلیقه شخصی و غیره تصمیم به خروج از آن جامعه بگیرد یا در عین عضویت در یک جامعه به عضویت جامعه جدیدی در بگیرد . 6.افراد معمولا با طی مراحل فوق در انتخاب زبان جدید , جامعه جدید دقت بیشتری به خرج داده به مسائل را به شکل بهتری مورد برسی قرار داده یا اغلب به جامعه جدید می پیوندد که مطابق با نیاز های آنها باشد یا در معدود مواردی زبان و پلت فرم خاص خود را ایجاد می کنند . با توجه به مطالبی که در بالا به آن اشاره کردم در مورد سوال پرسش اصلی تاپبک و جواب های مختلف : 1.فردی که با یک زبان آشنایی دارد (اینکه درجه آشنایی در چه حد است را نمیدانم حتی در حد یک کتاب و یک دوره آموزشی) یعنیCPP در حال حاضر عضوی از یک جامعه است . پس خواه نا خواه باید دارای دلیلی برای ورود به جامعه جدید تر باشد . این که این دلیل چه می تواند باشد مثلما مشخص کننده جامعه بعدی برای شخص خواهد بود . در مورد ما (پرسشگر!) ظاهرا ناگذیر بودن از انتخاب واحد C#‎‎  و Java . و اینکه این فرصتی است که در حال حاضر دارا میباشد .اما چه فرصتی ؟چه پرسشی؟ انتخاب زبان امر مهمی است . این کار حداقل یک بار توسط پرسشگر انجام شده (CPP). حالا باید دید ایشان کدام ملاک را در انتخاب جامعه قبلی خود داشته اند؟کدام ملاک ایشان ارضا نشده ؟ و جواب این سوال ها قطعا مشخص کننده جواب ایشان در انتخاب بعدی ایشان خواهد بود . و چه کسی بهتر از ایشان ملاک های ایشان را می شناسد . قطعا ایشان خود بهتر از بنده و فلانی در ای فروم ملاک های خود را میشناسند . 2.همانطور که عرض شد روش های مختلفی برای شناخت یک جامعه وجود دارد . مطالعه کتب , گفتگو با افراد ( طبعا به علت وجود دوره های جاوا و سی شارپ در دانشگاه مورد نظر هم جاوا کا و هم دات  نت کار در اطراف ایشان وجود دارد ) برسی دقیق بازار کار به شکل عینی در جامعه محلی و ..... به نظر می رسد طرح چنین سوالی با وجود این همه منابع در این تاپیک با این چنین وضعی عملی بیهوده برای ایشان خواهد بود .هر چند که منابعی که در عرایضم به آن اشاراه کردم به مراتب ارجح تر و به مراتب تعیین کننده تر خواهد بود . البته این دیگر با خود ایشان خواهد بود. 3.به فرض که ایشان بین C#‎‎  و Java  یک مورد را بر اساس مطالب فنی گفته شده (!)در مورد جاوا و C#‎‎ با طرح سوالاتی همچون C#‎‎ کار ها حرفی برای گفتن ندارند انتخاب کنند . آیا پس از رفتن به راه یکی دیگر توانایی و الزام ورود به دیگری و یا سایر زبان ها برای ایشان پیش نخواهد آمد؟ شاید در نهایت پس از کلی بحث فنی و انتخاب یکی سلیقه ایشان با این اتتخاب هماهنگ نشود . 4.دوستان از لحاظ فنی به مطالب مختلفی اشاره کردند و بنده نیز چند کلمه در ادامه می آورم : در کل در بین قطب جاوا و دات نت به عنوان پلت فرم مسائل تعیین کنند از نظر نگاه اول شامل این موارد است : a.هر دو زبان دارای زبان های مختلفی هستند :Java=java-Groovy-jRuby-BeanShell-jRuby-   و غیره که شامل انواع روش های کدینگ می شود : Static Typing-Dynamic Typing-Functional Programming-Object Oriented Programming  و غیره . در بین همه اینها هم بایت کد های جاوا به عنوان دستور مشترک قابلیت ارتباط را فراهم می آورند . در سمت دات نت نیز همه پارادایم های برنامه نویسی فوق علاوه با زبان های F#‎-C#‎‎-Jscript-VB.net و غیره از طریق زبان مشترک MSIL  با یکدیگر در ارتباط می باشند. b.هر دو در محیط VM اجرا می شوند . کلاس ها native برای JVM  و اسمبلی ها native برای CLR .  c.هر دو دارای ابزار ها و فریم ورک های بسیار با کیفیت می باشند . d.سرعت ,کارایی , مقیاس پذیری ,قابلیت اعتماد و سایر مقولات کیفی تولیدات این دو پلت فرم به شدت تابع پلت فرم های نرم افزاری (سیستم عامل- مولفه های نرم افزاری مثل کیفیت Clustering  نرم افزاری – load balancer  - فناوری پایگاه داده – زیر ساخت های  Transaction  -ORM   و ....) و سخت افزاری (از انواع CPU ها تا ابزار ذخیره سازی تا نوع معماری کامپیوتر و .....) متفاوت است. به عبارتی نمی توان عنوان کرد JVM  از CLR کند تر است و یا برعکس. e.از نظر کتابخانه های پایه هر دو به شکل بسیار غنی بوده و جوامع آنها نیز به شکل گسترده ای کتابخانه های جدیدی توسعه می دهند. در این زمینه جامعه جاوا به علت باز تر بودن فناوری های سان و مسقل از سکو بودن و نیز قدمت بیشتر حجم بالاتری از کتابخانه ها و Framework  ها در جامعه خود انباشته است. f.طبیعت باز جاوا موجب ایجاد استاندارد های رسمی و غیر رسمی در جامعه جاوا شده است که این امر برای جامعه جاوا این امکان را فراهم می آورد که در عین برخورداری از یک چهارچوب استاندارد به یک منبع واحد برای فناوری وابسته نبوده روش هایی را بر طبق سلیقه خود به شکل استاندارد غیر رسمی پدون نگرانی از عدم سازگاری پیش بگیرند.در جامعه .Net  این جوامع غیر رسمی یا وجود ندارد یا به شکل بسیار محدودی شکل گرفته است. g.به لحاظ مولفه هایی مانند بزرگی جوامع و بازار کار طبق آمار هایی( به همین سایت و منابع دیگر مراجعه شود ) به شکل محلی در ایران و به شکل جهانی به ترتیب .Net و java  قرار می گیرند .  h.در جاوا به شاهد پیاده سازی های مختلفی از SPC های Sun  به شکل تجاری و Open Sourceو Free Software  هستیم که در مقایسه با .Net  در مقیاس جهانی Licensing  گسترده تری را فراهم می آورد . در آخر باید از کسانی که حوصله کردنند و مطالب بنده رو با دقت دنبال کردند تشکر کنم . همونطور که مشاهده می کنیم جواب چنین سوالات گسترده ای رو نه تنها در این تاپیک بلکه در تاپیک های بیشتری نمی توان پوشش داد . چرا که جدای از گسردگی سوال و به تبع جواب این سوالات می تواند زمینه ساز سوء برداشت, سوء تفاهم و در نهایت دلخوری دوستانی بشه که درگیر این بحث ها می شوند . امید است طی تغیراتی موجبات ممنوعیت سوالاتی کلی مانند بهترین ..../ زیباترین ...../ قویرین ...../سریعترین....../X بهتر است یا Y.....و.... در سایت فراهم گردد. با تشکر . موفق و موید باشید.

----------


## amir-yeketaz

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

----------


## vcldeveloper

> مایکروسافت در دات نت (سال 2001) یه ایده ای داد اما خودشم توش موند چون انحصار طلب بوده همیشه.


یعنی شما فکر کردید SUN بخاطر رضای خدا جاوا را عرضه کرد؟ SUN در رقابت شدید با مایکروسافت، سعی کرد با کمک رقبای دیرین مایکروسافت مثل IBM، انحصار را از دست مایکروسافت خارج کند، و در دستان خودش بگیرد. البته نهایتا موفق شد مایکروسافت را وادار به واکنش و انتخاذ تصمیم جدید بکند، ولی به انحصار مایکروسافت در برخی صحنه ها لطمه جدی وارد نشد.
همه این شرکت ها دنبال انحصار طلبی هستند، نه اینکه یکی انحصار طلب باشه، و مابقی دلسوز مردم! تا زمانی که یکی بالای هرم هستند، آنهایی که دست شان به آن نقطه نمی رسد، برای خالی کردن زیر پای وی تلاش می کنند، و آن فرد بالای هرم هم برای مستحکم کردن جایگاه خود از طریق ایجاد وابستگی و انحصار تلاش می کند. شما فکر کردید IBM یا Google یا همین SUN اندیشه های انحصار طلبانه نداشتند، و ندارند؟!




> شما یک بار متنی که نوشتید رو بخونید متوجه تناقضی که در مورد مستقل از سکو بودن در متن خودتون دارید میشید. جاوا واقعن مستقل از سکوست اما سی شارپ این طور نیست! محیط اجرا و بستری که همه کتابخانه ها و کدهاش بر اساس dll و...ها هستند چطور می تونن مستقل از سکو باشن؟ کی هست که ادعا کنه dllها موجودات دوست داشتنی ای هستند؟ کی هست که دچار مشکل dll hell نشده باشه در طول توسعه نرم افزار و ...


این چه ربطی به دات نت داره؟! DLL Hell موضوعی در Native Code ویندوز هست، به دات نت چه ربطی داره؟!
DLLها یک ظرف برای ماجولار کردن نرم افزارها در سیستم عامل ویندوز هستند؛ این چه ربطی به مستقل از سکو بودن داره؟! CLI دات نت با استاندارد باز منتشر شده، و هر کسی میتونه آن را در سیستم عامل مدنظرش پیاده سازی کنه، و در این صورت، برنامه دات نت نوشته قابل اجرا بر روی آن سیستم عامل خواهد بود. همین کار رو  ماشین مجازی جاوا انجام میده. چطور به این نتیجه رسیدید که ماشین مجازی Sun مستقل از سکو هست، ولی ماشین مجازی مایکروسافت نیست؟! بله، از نظر تجاری، مایکروسافت سعی میکنه روند کار را به سمتی پیش ببره که نهایتا به نفع سیستم عامل ویندوز تمام بشه، اما این به معنی آن نیست که از نظر فنی CLI دات نت مستقل از سکو نیست. الان پروژه هایی مثل MONO از همین مستندات آزاد CLI منتشر شده توسط مایکروسافت برای پیاده سازی CLI بر روی لینوکس و مک استفاده می کنند، اما پشتیبانی مایکروسافت از آنها فقط در حدی هست که خطر جدیی متوجه سیستم عامل ویندوز نشه. SUN این دغدغه رو نداشت، چون گستردگی استفاده، و سودآوری Solaris اصلا با ویندوز قابل مقایسه نبود.




> بهترین انتخاب برای برنامه های (desktop) تحت ویندوز دات نت هست. اما آیا صنعت یک کشور و محصولات نرم افزاری فقط همین دسته هستند؟ اون هم زمانی که سرویس های روی شبکه وب غوغا می کنند...


اتفاقا این جمله غلط هست؛ یکی از بزرگترین ضعف های دات نت در پیاده سازی WinForms هست، که باعث شده دات نت عمدتا در نرم افزارهای تحت وب، و سازمانی بر روی سکوی ویندوز بکار گرفته بشه. برای کاربردهای دسکتاپ در ویندوز گزینه های بهتری از دات نت وجود دارند. درباره سرویس های روی شبکه، یا سرویس های وب، دات نت کتابخانه ها و ابزارهای جامعی داره، و از WebServiceها پشتیبانی خوبی میکنه. درباره توسعه نرم افزار تحت وب هم ASP.NET قابلیت های بسیار خوبی ارائه میکنه، و میشه گفت در حال حاضر قوی ترین و پر استفاده ترین کاربرد دات نتی هست که توسط برنامه نویسان دات نت مورد استفاده قرار میگیره.




> به دلیل قدمت نیست. (5 سال زمان زیادی نیست.) به دلیل فرهنگ سکوی جاوا و متن باز بودن جاوا این اتفاق افتاده. سازمان ها بیشتر به دنبال راه حل های اثبات شده، استفاده شده، محبوب، و حتی کم هزینه!!! هستند.


اتفاقا 5 سال زمان زیادی هست، چون همانطور که در پست قبلی ذکر کردم، تا قبل از جاوا یک خلاء عمده احساس می شد. با ظهور جاوا بالافاصله شرکت ها و برنامه نویسان سازمانی به سمت آن حرکت کردند تا این خلاء پر شود. زمانی که دات نت  متولد شد، این خلاء تا حد زیادی توسط جاوا جواب داده شده بود، و دات نت اولین پلت فرم برای پاسخگویی به این خلاء نبود. اتفاقا بحث اینکه شرکت ها به دنبال راه حل های اثبات شده هستند هم در همین چارچوب میگنجه؛ زمانی که دات نت متولد شد، آنقدر استفاده از جاوا در نرم افزارهای سازمانی گسترش پیدا کرده بود، و ابزارهای آن به ثبات قابل قبولی رسیده بودند، که مهاجرت به دات نت برای این شرکت ها توجیه نداشت، چون دات نت قابلیت بزرگی که در تصمیم این شرکت ها تاثیر گزار باشه، در برابر جاوا ارائه نمی کرد. یک پلت فرم برنامه نویسی بود، مثل جاوا.




> این مسئله هم صرفن به خاطر متن باز بودن و open بودن سکوی جاواست.


تا جایی که خاطرم هست، جاوا همین یکی دو سال اخیر کاملا توسط Sun اوپن سورس شد، و تا قبل از آن، بسیاری از امور کلیدی آن در انحصار Sun بود.




> کدوم دانشگاه میاد برای هر آزمایشگاهش پول بده یک نسخه دات نت بخره؟


اولا چارچوب دات نت رایگان هست، و نیازی به هزینه نداره. نسخه های Express از تمامی محصولات مرتبط با برنامه نویسی مایکروسافت هم رایگان هستند، از طرف دیگه، مایکروسافت برای ترویج محصولات خودش، نسخه های تجاری این محصولات را هم به آموزشگاه ها و دانشگاه ها رایگان ارائه میکنه.
ولی باز به همان بحث قبل بر می گردیم، دات نت قابلیت منحصر به فردی که دانشگاه ها را ملزم به تغییر رویه کند، ارائه نمی کند. دانشگاهی که چند سالی هست در آن جاوا تدریس میشه، لزومی نمیبینه که به دات نت مهاجرت کنه، حتی اگر دات نت رایگان باشه؛ چون در نهایت دات نت سعی دارد همان نقش جاوا در نرم افزارهای سازمانی را بازی کند. اگر کسی بخواهد از اول، بین دات نت یا جاوا یکی را برای شروع انتخاب کند، با مشکل مواجه می شود و نیاز به بحث و گفتگو دارد، ولی اونی که از مدت ها قبل جاوا کار می کرده، احساس نیاز به مهاجرت به دات نت نمیکنه، چون همان کار را می تواند با ابزاری که مدت ها به آن عادت کرده، انجام دهد.




> جاوا زمانی که در حال بوجود اومدن بود، اولین کاری که کرد این بود که اهداف خودش رو مشخص کرد! جاوا از روی رقابت بوجود نیومد؛ جاوا بوجود اومد چون بهش نیاز (چه نیازی؟) بود. افرادی احساس کمبود هایی کردند و اتفاقن افراد دانشمندی هم بودند؛ پس دست به طراحی یک زبان زدند و این براشون هدف تعریف میکرد. یکی از اهداف این بود که جاوا باید ساده باشه! برنامه نویس رو درگیر با حاشیه ها نکنه! یکی از این حاشیه ها مدیریت حافظه بود. پس از برنامه نویس اشاره گر ها رو گرفت و سپرد دست خود محیط اجرا. حالا خدا هم پایین می اومد هیچ دلیل کاری و تجاری نمی تونست باعث شه این ها تو جاوا کدهای unmanaged رو راه بدن. از طرفی باید کد ها safe می بودن چون جاوا هدفش این بود که robust باشه. پس در راستای این هدف گام برداشت حالا ممکن بود چیزهایی رو هم از دست بده! می خوام بگم این وفادار بودن به هدف خیلی مهمه!


اتفاقا اینطور نیست. مشکل شما این هست که تصور کردید هدف همانی هست که جاوا میگه! #C در شرایطی بوجود آمد که انبوهی از سرویس های COM و کدهای ++VC برای ویندوز، چه در محصولات مایکروسافت، و چه در سایر محصولات مرتبط با ویندوز وجود داشتند، و امکان جدا کردن آنها وجود نداشت، پس یکی از اهداف #C این بود که بتواند برای ارتباط با این کدها و Backward Compatibility قابلیت استفاده از unmanaged کد را داشته باشد. این هم لزوما چیزی بدی نیست، و ابزاری هست که می توان با آن در برخی پروژه های خاص بدون نیاز به نوشتن بخشی از کد با زبان های Native، قابلیت مورد نظر را با کد #C بدست آورد. مشابه همین مسئله را ما در طراحی ++C هم داشتیم. ++C قرار بود شی گرا باشد، ولی برای Backward Compatibility با C، این زبان بصورت Hybrid طراحی شد. اصولا هر چه یک محصول عقبه بزرگتر و استفاده کنندگان بیشتری داشته باشد، Backward Compatibility مهم تر خواهد بود.




> اما هدفی بوده که گفته خلوص شی گرایی در برنامه ها و کد، به مرور زمان نگهداری و تغییر نرم افزار رو راحت تر میکنه. وگرنه delegateها اتفاقن موجودات قدرت مندی هستند. اینطور نگاه کنیم باید بریم سراغ Higher Order Functionها که تو زبان های Functional پیدا میشن. سی شارپ می خواد اضافشون کنه! یعنی می خواد functional هم بشه! جاوا فکر نمی کنم همچین نظری داشته باشه بخاطر همون هدف اولیه! یعنی ساخت ساده سیستم های سازمانی قدرت مند و robust!


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

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

----------


## arta.nasiri

سلام

من داخل یکی از همین پست ها دیدم که دوستان گفته بودن برنامه نویسیت رو قوی کن نه زبان برنامه نویسیت رو! 
حالا ما از کجا میتونیم این برنامه نویسی رو قوی کنیم آیا کتابی یا یه چیزی هست که با خوندن اون دیدمون و تفکرمون نسبت به برنامه نویسی باز بشه ؟

----------


## MIDOSE

> حالا ما از کجا میتونیم این برنامه نویسی رو قوی کنیم آیا کتابی یا یه چیزی هست که با خوندن اون دیدمون و تفکرمون نسبت به برنامه نویسی باز بشه ؟


اینجا، یه نمونه نسبتن جالب و مرتبط، البته زبان اصلی هست.

اف:ده بار wheel ماوسم چرخید تا رسیدم به اخر صفحه.

----------


## cups_of_java

ای کاش فرصتی بود که این گپ من و شما انجام میشد و این تاپیک به حاشیه نمی رفت. جواب سوال ایشون این مطالب نیست. گیج میشه بنده خدا! 





> یعنی شما فکر کردید SUN بخاطر رضای خدا جاوا را عرضه کرد؟ SUN در رقابت شدید با مایکروسافت، سعی کرد با کمک رقبای دیرین مایکروسافت مثل IBM، انحصار را از دست مایکروسافت خارج کند، و در دستان خودش بگیرد. البته نهایتا موفق شد مایکروسافت را وادار به واکنش و انتخاذ تصمیم جدید بکند، ولی به انحصار مایکروسافت در برخی صحنه ها لطمه جدی وارد نشد.
> همه این شرکت ها دنبال انحصار طلبی هستند، نه اینکه یکی انحصار طلب باشه، و مابقی دلسوز مردم! تا زمانی که یکی بالای هرم هستند، آنهایی که دست شان به آن نقطه نمی رسد، برای خالی کردن زیر پای وی تلاش می کنند، و آن فرد بالای هرم هم برای مستحکم کردن جایگاه خود از طریق ایجاد وابستگی و انحصار تلاش می کند. شما فکر کردید IBM یا Google یا همین SUN اندیشه های انحصار طلبانه نداشتند، و ندارند؟!


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

[quote]





> همین کار رو  ماشین مجازی جاوا انجام میده. چطور به این نتیجه رسیدید که ماشین مجازی Sun مستقل از سکو هست، ولی ماشین مجازی مایکروسافت نیست؟! بله، از نظر تجاری، مایکروسافت سعی میکنه روند کار را به سمتی پیش ببره که نهایتا به نفع سیستم عامل ویندوز تمام بشه، اما این به معنی آن نیست که از نظر فنی CLI دات نت مستقل از سکو نیست. الان پروژه هایی مثل MONO از همین مستندات آزاد CLI منتشر شده توسط مایکروسافت برای پیاده سازی CLI بر روی لینوکس و مک استفاده می کنند، اما پشتیبانی مایکروسافت از آنها فقط در حدی هست که خطر جدیی متوجه سیستم عامل ویندوز نشه. SUN این دغدغه رو نداشت، چون گستردگی استفاده، و سودآوری Solaris اصلا با ویندوز قابل مقایسه نبود.


ما با تئوری زندگی نمی کنیم. در عمل شما ماشین مجازی جاوا رو واسه همه محیط ها می بینیم. برای هر محیط هم تنوعی از پیاده سازی ها... حالا یه Mono ای هم ایجاد شد که پیشرفت هاشون هم چشم گیر نبود! چند تا شرکت داره ASP.NET رو روی لینوکس هاست می کنه!؟ چند تا شرکت داره راه حل های high-tec محیط های مخابراتی (telecom) رو روی دات نت میده؟ چند تا شرکت اومده پیاده سازی دات نت اصلن روی همون ویندوز نوشته که بشه با هم مقایسشون کرد؟ و و و 
من بر اساس داشته ها و وضعیت تکنولوژی ها حرف می زنم. وقتی برید بررسی کنید میبینید که چرا اوضاع اینطور هست! و باور کنید دلیلش زمان و اینکه دات نت دیر تر اومد نیست!






> تا جایی که خاطرم هست، جاوا همین یکی دو سال اخیر کاملا توسط Sun اوپن سورس شد، و تا قبل از آن، بسیاری از امور کلیدی آن در انحصار Sun بود.


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





> ولی باز به همان بحث قبل بر می گردیم، دات نت قابلیت منحصر به فردی که دانشگاه ها را ملزم به تغییر رویه کند، ارائه نمی کند. دانشگاهی که چند سالی هست در آن جاوا تدریس میشه، لزومی نمیبینه که به دات نت مهاجرت کنه، حتی اگر دات نت رایگان باشه؛ چون در نهایت دات نت سعی دارد همان نقش جاوا در نرم افزارهای سازمانی را بازی کند. اگر کسی بخواهد از اول، بین دات نت یا جاوا یکی را برای شروع انتخاب کند، با مشکل مواجه می شود و نیاز به بحث و گفتگو دارد، ولی اونی که از مدت ها قبل جاوا کار می کرده، احساس نیاز به مهاجرت به دات نت نمیکنه، چون همان کار را می تواند با ابزاری که مدت ها به آن عادت کرده، انجام دهد.


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





> مسئله این هست که مایکروسافت هدف نهایی برای خودش را جاوا ترسیم نکرده؛ یعنی هدف این نیست که پلت فرمی با تمام قابلیت های جاوا تولید شود. اگر اینطور بود، اصلا مهاجرت به دات نت برای هیچکسی توجیه نداشت. اگر قرار بود مایکروسافت فقط یک پلت فرم ایجاد کند که کار فعلی جاوا را انجام دهد، چرا باید برنامه نویسان از جاوا به دات نت مهاجرت کنند؟ اصلا دلیل منطقی برای مهاجرت وجود نخواهد داشت. دات نت در یک وجهه خود با جاوا به رقابت پرداخته، و کاملا مشخص هست که مایکروسافت سعی دارد آن را در وجوه مختلفی گسترش دهد، تا نه فقط در نرم افزارهای سازمانی، بلکه در مجموعه ایی از کاربردهای مختلف استفاده شود؛ یعنی بطور خلاصه، هدفی که مایکروسافت برای دات نت ترسیم کرده، رسیدن به جاوا نیست، بلکه عبور از جاوا هست.


متاسفم اما مجبورم رک حرف بزنم امیدوارم دوستان مایکروسافتی ناراحت نشن. همه ما برای همدیگر محترم هستیم حتی اگر دیدگاه های فنی همدیگه رو قبول نداشته باشیم. اما مایکروسافت خواب رسیدن به تکنولوژی های برتر رو هم نمیبینه!  شما مثل اینکه اون لینکی که دادم (Java Concept Map) رو ندیدید! ای کاش میدیدید! این نقشه توسط صد ها شرکت غول پیکر نرم افزاری ایجاد شده. مایکروسافت چطور میخواد تک و تنها مبارزه کنه؟ جز این هست که باید به مرور زمان دائمن چاق تر و فربه تر بشه؟ یک غول هرچقدر بخواد خودش رو غنی کنه تا یه جایی ظرفیت داره! یه جا می ترکه! شما ببین یک هفته نمیشه گوگل سیستم عامل سبک خودش رو ارایه داده! اصلن بی خیال جاوا شو ( تازه چون جاوا استاندارد باز هست و از گوشی موبایل گرفته تا ... روی همه سیستم عامل ها نصب میشه همیشه سر خود توسط کاربران پشتیبانی میشه نه شرکت سازنده) در سال های آینده دنیا برای مایکروسافت تیره و تار خواهد شد! مایکروسافت یا باید خودش رو به شرکت های بزرگ تقسیم کنه! (مثلن شرکت های بزرگ رو بخره) یا اینکه بترکه و به دیگران بپیونده! این بنده خدا نمیدونه رو سیستم عاملش رقابت کنه!؟ رو دات نتش؟ روی Enterprise Portalesh? روی سرویس های اینترنتی و شبکش؟ روی Officeاش؟ اخیرن هم که سرشو توی telecom وارد کرده بود و ... 
خلاصه من همیشه اعتقاد دارم تخصص حرف اول رو میزنه. اینکه آچار فرانسه باشیم درست نیست. باور کنید مایکروسافت هم در مقیاس بزرگ همین داستان آچار فرانسه رو داشته. 
این ها رو میگم چون مایکروسافتی ها خودشون این داستان ها رو شروع می کنند وگرنه نمیشه از محصولات خوبش مثل Exchange Server یا Directory Server و یا Office گذشت. اما باور کنید نمونه های به مراتب قوی تر از این محصولات در جامعه متن باز وجود داره! مایکروسافت هی زور زده ویندوزش رو زنده نگه داره! که من به شخصه اعتقاد دارم در آینده نه چندان دور از رایج بودن ویندوز کاسته خواهد شد! 
مایکروسافت یک زمانی با جفت کردن تمام محصولاتش با ویندوز می تونست حرف اول رو بزنه چون بقیه دنیا چفت نبودن. الان دنیای تکنولوژی های نرم افزاری خیلی عوض شده و داره میشه! اینقدر این دایره داره بزرگ میشه که دیگه یه سیستم نمی تونه قدرت رو دستش بگیره. توزیع میشه دست همه. دنیای محاسبات در حال تغییرات هست.  مایکروسافت هم یه قدرت مثل بقیه! دنیا داره به سمتی میره که استاندارد های open حرف اول رو بزنن. همه قدرت ها بر اساس این استاندارد ها با هم تعامل کنن. زنده بمونن سرویس هم بدن. شما نمی تونی تو چنین دنیایی هی از خودت پروتکل در کنی و بگی ویندوز بخر! همه این چیزا در کنارش هست! بدون اینکه بفهمی اینا چفت میشن. همه چی راحت بهم وصل میشه، تو هم لازم نیست چیزی از توش بدونی (به خیال خودت user friendly شده) و... به نظر من این روش درست نیست چون مخالف پیشرفت توزیع شده و تقسیم درست فکر و انرژی هست.
 اون وقت هست که همه می تونیم دنیا رو واقعی ببنیم یعنی مجموعه از غول های نرم افزاری، مایکروسافت هم حتمن یکیشون خواهد بود. همونطور که بقیه هستن. در کنارشون! نه در مقابلشون.

----------


## cups_of_java

> سلام
> 
> من داخل یکی از همین پست ها دیدم که دوستان گفته بودن برنامه نویسیت رو قوی کن نه زبان برنامه نویسیت رو! 
> حالا ما از کجا میتونیم این برنامه نویسی رو قوی کنیم آیا کتابی یا یه چیزی هست که با خوندن اون دیدمون و تفکرمون نسبت به برنامه نویسی باز بشه ؟


از نظر تئوری و معلومات:
شما اصول طراحی زبان های برنامه نویسی رو خوب درک کنید. 
شما اصول شی گرایی رو خوب یاد بگیرید.
شما الگو های طراحی رو یاد بگیرید.
شما برای زبان مورد علاقتون الگو های کد نویسی (Idioms) رو مطالعه کنید.
شما اصول کد نویسی خوانا و مهندسی شده رو یاد بگیرید.

هر کدوم از این مطالب کتاب داره، اکثرشون به زبان برنامه نویسی هم وابسته هستند یعنی هر کتابی با یه زبان خاص اینا رو یاد میده. 
به طور کلی کتاب هایی مثل Clean Code، Implementation Patterns هستند اما اگه زبانتون رو بگید میشه لیست کامل تری هم بهتون معرفی کرد.


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

----------


## vcldeveloper

> ما با تئوری زندگی نمی کنیم. در عمل شما ماشین مجازی جاوا رو واسه همه محیط ها می بینیم. برای هر محیط هم تنوعی از پیاده سازی ها... حالا یه Mono ای هم ایجاد شد که پیشرفت هاشون هم چشم گیر نبود! چند تا شرکت داره ASP.NET رو روی لینوکس هاست می کنه!؟ چند تا شرکت داره راه حل های high-tec محیط های مخابراتی (telecom) رو روی دات نت میده؟ چند تا شرکت اومده پیاده سازی دات نت اصلن روی همون ویندوز نوشته که بشه با هم مقایسشون کرد؟ و و و 
> من بر اساس داشته ها و وضعیت تکنولوژی ها حرف می زنم. وقتی برید بررسی کنید میبینید که چرا اوضاع اینطور هست! و باور کنید دلیلش زمان و اینکه دات نت دیر تر اومد نیست!


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



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


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




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


عزیز جان، حرف احساسی نزنید؛ دات نت هم استاندارد باز هست. برای دات نت هم علاوه بر Windows Mobile، پیاده سازی برای Symbian وجود دارد، و اتفاقا توسط مایکروسافت هم عرضه نشده، بلکه یک شرکت آفریقایی آن را عرضه کرده.




> مایکروسافت یا باید خودش رو به شرکت های بزرگ تقسیم کنه! (مثلن شرکت های بزرگ رو بخره) یا اینکه بترکه و به دیگران بپیونده! این بنده خدا نمیدونه رو سیستم عاملش رقابت کنه!؟ رو دات نتش؟ روی Enterprise Portalesh? روی سرویس های اینترنتی و شبکش؟ روی Officeاش؟ اخیرن هم که سرشو توی telecom وارد کرده بود و ... 
> خلاصه من همیشه اعتقاد دارم تخصص حرف اول رو میزنه.


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

اتفاقا مایکروسافت سابقه خوبی در هماهنگ کردن خود با تغییرات در دنیای IT و کسب سود از آن برخوردار است، و مثل SUN یا IBM در مقاطع مختلف دچار بحران های کمرشکن تجاری نشده است.





> دنیا داره به سمتی میره که استاندارد های open حرف اول رو بزنن. همه قدرت ها بر اساس این استاندارد ها با هم تعامل کنن. زنده بمونن سرویس هم بدن. شما نمی تونی تو چنین دنیایی هی از خودت پروتکل در کنی و بگی ویندوز بخر! همه این چیزا در کنارش هست! بدون اینکه بفهمی اینا چفت میشن. همه چی راحت بهم وصل میشه، تو هم لازم نیست چیزی از توش بدونی (به خیال خودت user friendly شده) و... به نظر من این روش درست نیست چون مخالف پیشرفت توزیع شده و تقسیم درست فکر و انرژی هست.
>  اون وقت هست که همه می تونیم دنیا رو واقعی ببنیم یعنی مجموعه از غول های نرم افزاری، مایکروسافت هم حتمن یکیشون خواهد بود. همونطور که بقیه هستن. در کنارشون! نه در مقابلشون.


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




> این ها رو میگم چون مایکروسافتی ها خودشون این داستان ها رو شروع می کنند


کدوم داستان را شروع می کنند؟! من مایکروسافتی نیستم، و فکر می کنم خیلی بیشتر از شما بر علیه برخی سیاست های مایکروسافت در همین سایت پست ارسال کردم؛ ولی این دلیل نمیشه که هر کی هر چی بر علیه مایکروسافت، یا محصولات آن گفت، به صرف اینکه بر علیه مایکروسافت هست، من قبول کنم! شما دائما از یک شاخه به شاخه دیگه در بحث می پرید، و برخی از مطالبی که برای اثبات برتری جاوا بر دات نت مطرح می کنید، غیر فنی و احساسی هستند، مثل همون بحث DLL Hell ایی که مطرح کردید و ربطی به دات نت نداشت، یا بحثی که درباره Managed Code و Unmanaged Code در دات نت مطرح کردید.

دیدگاه شما از منظر یک طرفدار جاوا هست، ولی دیدگاه من از منظر کسی هست که طرفدار خاص جاوا یا دات نت یا بطور کلی Managed Code نیست. ولی اگر من طرفدار Managed Code نیستم، دلیل نمی شود که قابلیت های مثبت آن را نبینم، و فقط بر روی قابلیت های مثبت Native Code مانور بدم، یا بیشتر بودن تعداد برنامه های نوشته شده بصورت Native را دلیلی بر برتر بودن Native Code از Managed Code از نظر فنی بدانم!

----------


## cups_of_java

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


شما حرف های من رو میچرخونید تا حرف خودتون رو به کرسی بنشونید!
ما هم اینا رو گفتیم تا *هر کسی که می خواد شروع کنه بدونه* *که* در سمت جاوا با محیط بازتری آشنا میشه، قابلیت های بیشتری رو یاد میگیره، تاکید بیشتری روی خیلی از مسائل توسعه نرم افزار به صورت متن باز حس می کنه، وارد فرهنگ متفاوتی میشه،  می تونه دنیای بزرگتری رو در تحت شعاع خودش قرار بده (از سیستم های تجاری و اداری گرفته تا سیستم های پیشرفته مخابراتی (Telecom، VOIP و ...) و صنعتی. این به این معنی نیست که در دات نت این کارها انجام نمیشه اما به خیلی از دلایل سازمانی مقیاسش کوچکتر و تعدادش کمتر هست. در مواردی هم که دات نت خیلی حرفی واسه گفتن نداره متاسفانه مثل VOIP! 
بدونه اکثر پروژه های ملی داره روی جاوا انجام میشه. (چراش رو هم گفتیم)
بدونه با جاوا می تونه تو دامنه وسیعی از موارد فعالین کنه، از توسعه روی ویندوز گرفته تا توسعه روی لینوکس، توسعه پورتال های سازمانی، توسعه ESBها و نرم افزار های بین سازمانی و ...
حالا شما اگه نظرت اینه که چون جاوا بوده و داشته پاسخ نیاز ها رو میداده کسی نرفته سراغ دات نت من دیگه حرفی ندارم. این موضوع به نظر نمی رسه ربطی به کسی که می خواد تازه شروع کنه داشته باشه.





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


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





> عزیز جان، حرف احساسی نزنید؛ دات نت هم استاندارد باز هست. برای دات نت هم علاوه بر Windows Mobile، پیاده سازی برای Symbian وجود دارد، و اتفاقا توسط مایکروسافت هم عرضه نشده، بلکه یک شرکت آفریقایی آن را عرضه کرده.


شما در مورد لینکی که من دادم فقط سکوت می کنید. 
چند مورد می تونین در مورد هزاران مورد نام ببرید؟ استاندارد؟ معنی استاندارد چیست؟ استانداردی که یک شرکت تعیین کنه بدونه ارائه جزییات!؟ و نهایتن نشه در چسبوندن تکنولوژی ها به هم توفیقی داشت؟ وقتی از مایکروسافت حرف میزنیم دیگه فقط دات نت نیست! من کلی تر نگاه می کنم (البته این همون حاشیه هست که به بحث دوستمون ربطی نداره.) شما جز IIS کدوم سرورهای معروف و پر کاربر ASP.NET رو داری؟ چند نفر به طور حرفه ای میدونن که چطور میشه تعدادی IIS رو cluster کرد و به طور دلخواه پیکر بندی کرد و به صورت stable نگهداری کرد؟ چقدر مستندات می تونید روی نت پیدا کنید ازش؟ این ها استاندارد هاست؟ مثال های خیلی بیشتری میشه زد!





> اتفاقا مایکروسافت سابقه خوبی در هماهنگ کردن خود با تغییرات در دنیای IT و کسب سود از آن برخوردار است، و مثل SUN یا IBM در مقاطع مختلف دچار بحران های کمرشکن تجاری نشده است.


مثل اواخر دهه 90 که به چالش افتاد. مجبور به تولید دات نت شد و در اوایل 2000 که دادگاه انحصارطلبی و کله شقی در مورد جاوا رو به سان واگذار کرد؟ نمیشد آبرو ریزی نکنه، خودش رو سنگین نگه داره تا پیشه همه محترم و خوشنام بمونه؟ 





> نه لزوما؛ به نظر میرسه دنیای IT داره به سمت افزایش پردازش در سمت سرور و کاهش پردازش در سمت کلاینت میره.


کاملن موافقتم.




> با توجه به همین حرکت هم شرکت های دخیل در IT در حال ایجاد انحصارهای جدید هستند، مثلا یک نمونه آن شرکت گوگل هست که هر چه پردازش های سمت سرور افزایش پیدا کنند، انحصار آن گسترده تر می شود. در این حالت، انتشار سورس یک مرورگر اینترنتی، یا یک سیستم عامل که صرفا یک کلاینت ساده برای سرور های گوگل محسوب میشه، به معنی استانداردهای باز، یا دنیای آزاد نیست! بلکه در اون حالت ابزارهای سمت کلاینت ارزشی بسیار بسیار کمتر از نرم افزارهای سمت سرور پیدا می کنند، و شرکت هایی مثل گوگل با ارائه نرم افزارهای کلاینت خود بصورت آزاد یا سورس باز، نرم افزارهای سمت سرور خود را در انحصار خود نگه می دارند، و شکل جدیدی از انحصار را بوجود می آورند.


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




> شما دائما از یک شاخه به شاخه دیگه در بحث می پرید، و برخی از مطالبی که برای اثبات برتری جاوا بر دات نت مطرح می کنید، غیر فنی و احساسی هستند، مثل همون بحث DLL Hell ایی که مطرح کردید و ربطی به دات نت نداشت، یا بحثی که درباره Managed Code و Unmanaged Code در دات نت مطرح کردید.


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





> دیدگاه شما از منظر یک طرفدار جاوا هست، ولی دیدگاه من از منظر کسی هست که طرفدار خاص جاوا یا دات نت یا بطور کلی Managed Code نیست.


من در مقابل مایکروسافت و دات نت (به طور خاص) طرفدار جاوا هستم (البته من عنوان دات نت رو (از نظر سکو) در مقیاس جاوا نمی دونم - لطفن لینکی که دادم رو نگاه کنید) و از اصولش و فرهنگش (نه نامش) دفاع می کنم. اما در مواردی هم هست که جاوا رو نمی پسندم و گزینه های بهتری دارم. اما برا کسی که بین دات نت و جاوا مونده و دوست داره در آینده پیشرفت بیشتری داشته باشه، صراحتن جاوا رو پیشنهاد می کنم. حالا هرقدر هم حاشیه بریم، کج سلیقگی کنیم یا نکنیم، طرفداری کنیم یا نکنیم. بدون تعصب باید بگم این راهیه که خودم رفتم، ازش راضیم، دات نت کارها و جاوا کار های زیادی هم دیدم، نظرات اون ها رو هم شنیدم و ... ماهسل تجربه میگه جاوا اگه دوست داری پشرفت کنی و چالش پذیر هستی و میگه دات نت اگه دوست داری یه نرم افزار رو باز کنی، راحت (و در موارد زیادی هرتی!) کد بزنی (با کلیک کردن و drag&drop نرم افزار بسازی) (این سادگی تو پروژه های بزرگ پذیرفته نیست)، همه کارتو اون تو بکنی، یه MSDN هم کنارت باشه، بخونیش هرجا گیر کردی و همین!_ (بی احترامی نشه، در مورد افراد حرف نمیزنم!_)
*مهم این هست که دات نت راه رو برای این فرهنگ باز کرده! (اصلن مایکروسافت عاشق این فرهنگه) اما جاوا ذاتن اینطور نیست!*

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

----------


## amir-yeketaz

> اما باور کنید اگه کمرش نشکنه، درجا میزنه. و از طرفی داریم دوستان دات نت کار بسیار قوی، با دید باز، فهمیده و ...! پس اونچه مهم هست افراد نیستند! ما اینجا از گروه و افراد حرف نمی زنیم.


منظورتون رو از این جمله درست متوجه نمیشم 
میشه بیشتر توضیح بدین!؟

----------


## cups_of_java

> سلام دوست عزیز
> من هم دقیقا مثل شما آینده نگر هستم و نزدیک به 2 سال تحقیق کردم!
> مطمئن باش از هر نظر به این نتیجه رسیدم که *جاوا* بهترین و کاملترین زبان برنامه نویسی دنیاست وآینده با جاواست!!!
> واقعا کاملترین زبان برنامه نویسی دنیاست! جاوا فراتر از یک زبان ، بلکه یک پلتفرم هست!
> یک زبان یاد بگیر باهاش واسه موبایل ، نت ، سیستم عامل و دستگاههای سخت افزاری برنامه بنویس!
> اینایی که می گم فقط حرف نیستن
> خودم همه این کارا رو باهاش انجام دادم!
> اگه خواستی میتونی از طریق میلم باهام در ارتباط باشی
> java_pack@yahoo.com


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

----------


## cups_of_java

> منظورتون رو از این جمله درست متوجه نمیشم 
> میشه بیشتر توضیح بدین!؟


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

----------


## amir-yeketaz

> خیلی از کار ها هست که اصلن با جاوا نمی شه انجام داد (یعنی بهینه و به صرفه نیست و مثل پریدن تو دره می مونه)


مثلا چی؟؟؟ 
این مشکل با کدوم زبون حل میشه؟

----------


## Armin060

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


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

حالا من کار ندارم که امکانات آدم رو تنبل میکنه یا نه ولی این رو میدونم که هر آدم عاقلی که بخواد مثلا سوپ بخوره و چنگال و قاشق داشته باشه، با قاشق میخوره.

----------


## cups_of_java

> قبلا هم یکی رو میشناختم که با vb6 کار میکرد و ازش سوال 
> میکردم چرا دات نت کار نمیکنه، میگفت آخه دات نت آدم رو تنبل میکنه


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




> این جملات مفهوم زیر رو می رسونن :
> "استفاده از امکانات آدم رو تنبل میکنه"


1. این شما هستید که این مفهوم رو برداشت می کنید.
2. لغت امکانات رو باید معنی کنید. "امکانات یعنی چی؟" امکانات برای مهندس نرم افزار چی میتونه باشه؟ چه تاثیری روی کارش و عملکردش میزاره؟ چه تاثیری روی دانشش داره؟ و...

سعی کنید به جای بازی با لغات، فنی و علمی صحبت کنید. 





> حالا من کار ندارم که امکانات آدم رو تنبل میکنه یا نه ولی این رو میدونم که هر آدم عاقلی که بخواد مثلا سوپ بخوره و چنگال و قاشق داشته باشه، با قاشق میخوره.


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

----------


## cups_of_java

> مثلا چی؟؟؟ 
> این مشکل با کدوم زبون حل میشه؟


نکته اول اینکه همون طور که قبلن هم گفتم شما سعی کن با این بحث های ما به حاشیه نری! متاسفانه هر وقت سوال هایی با این عناوین پرسیده میشه این بحث ها پیش میاد. البته تا جایی که افراد منطقی باشن جذاب هم هست.
پس فکر خودت رو مشغول نکن. یکی از جاهایی که این انتخاب رو افراد انجام میدن موسسه Aptech هستش. من افراد زیادی رو میشناسم که این انتخاب رو انجام دادن و راضی هستند. شما به شخصیت خودت نگاه کن. ببین توقعت از خودت و آیندت چیه! بعد یکی رو انتخاب کن. پس می خوام بگم این انتخاب به افراد وابستست. هست آدمی که دات نت رو انتخاب کنه و همیشه هم راضی باشه. 
اما من با سماجتی که در شما می بینم و دقتی که داری توصیه می کنم اگه به این داستان ها علاقه مندی، اگه سرت برای یادگیری درد می کنه، اگه دوست داری بعد از چندین سال یادگیری امکان آشناییت با مطالب جدید مرتبط با فعالیتت باشه و این موضوع هیجان زدت می کنه جاوا رو انتخاب کن. شک هم نکن. مشکلی هم پیش نمیاد. سخت و سنگین هم نیست. فقط مسئله اینه که دوره آموزشت بلند مدت و با حوصله ای رو می طلبه.
اما اگه حوصله نداری، می خوای بشینی به قول دوستمون با امکانات واسط جدولی برای دیتابیس بسازی و حوصلت از یکنواختی سر نمیره و ... دات نت رو انتخاب کن.
نهایتن!* دات نت انتخاب خوبی برای راحت پول دراوردن هست.*
*اما جاوا انتخاب خوبی برای بالا بردن دانش، امکان بالاتر تجریه های بزرگ و بیشتر پول دراوردن هست.*

الان توی اکثر دانشگاه های معتبر ایران جاوا تدریس میشه (نه سی شارپ) و دانشجو باید این زبان رو یاد بگیره. این زبان و سکو دیگه حالت تجاری نداره! برای هر مهندس نرم افزار واجبه!

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

----------


## Armin060

> متوجه نمیشم مثال سوپ و قاشق و چنگال چه ربطی به این مباحث داره؟ سوپ رو با قاشق میخوریم، سیب زمینی رو هم با چنگال! (حالا یکی دوست داشت میتونه سیب زمینیش رو هم با قاشق بخوره! مشکلی در رسیدن به هدفش پیش نمیاد، فقط ممکنه بهش بخندن.)


بگید ببینم اگه یه بحثی بشه که توش بگن دیگه خیلی دیر شده و طرف مقابل هم بگه که ماهی رو هر وقت از آب بگیری تازه هست، شما میگید ماهی چه ربطی به بحث ما داره؟




> اینجا کسی نیومده بپرسه که من می خوام سوپ بخورم، با چی بخورم!؟ که ما هم بگیم چنگال یا قاشق! ما اینجا داریم میگیم از قاشق چه استفاده هایی می تونه ببره، از چنگال چه استفاده هایی می تونه ببره، تا افرادی کی می خوان در شروع یکی رو انتخاب کنن و بخرن، انتخابشون رو آگاهانه و آزادانه انجام بدن.


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




> حالا یکی دوست داشت میتونه سیب زمینیش رو هم با قاشق بخوره! مشکلی در رسیدن به هدفش پیش نمیاد، فقط ممکنه بهش بخندن


سیب زمینی چند حالت داره، در یه حالت ممکنه با قاشق راحتر باشه و در حالت دیگه ممکنه با چنگال.
بگذریم، مسئله این نیست که کی حالا می خواد سیب زمینی رو با چنگال بخوره یا با قاشق، اصلا بره بریزه تو لیوان و بعد مثل آب بخوره. در ضمن مشکل این نیست کسی بهش میخنده یا نمیخنده، و در هر حالت به هدفش که خوردن سیب زمینی باشه میرسه. اما کدوم راحتر، سریع تر و در کل مزایا ی بیشتری نسبت به مابقی حالات و معایب کمتری نسبت به باقی داشته باشه مهم هست. این میتونه برای هر انسان متفاوت باشه.
من یه چیزی تو Java مینویسم و از نظر من این طور راحتر و بهتر هست و دیگری همون رو با C#‎‎‎‎ مینویسه. حالا اینجا هم مسائل زیادی وجود داره، ممکنه راهی در C#‎‎‎‎ بدونه که بهتر باشه تا Java یا حالات بیشتر دیگر.

در کل میخوام بگم که اگر آدم با C#‎‎‎‎ کار کنه تنبل و با Java کار کنه به C#‎‎‎‎ لبخند میزنه ( از نظر من که شاید اشتباه باشه ) مزخرف هست.
شاید این مثال منظور من رو بهتر روشن کنه :
مثلا یکی میخواد یه درخت رو قطع کنه ( که البته باز اینجا حالات زیادی وجود داره، اما منظور من یه درخت نسبتا بزرگ هست ) و چهار تا ابزار داره، دست، اره، اره برقی و تراکتور.
خوب هر کدوم از این ابزار ها برای کاری ساخته شدند. اما احتمالا اینجا بهترین گزینه اره برقی هست. اما آیا اگر ما از اره برقی در اینجا استفاده کنیم باعث میشه که ما تنبل بشیم و باید با دست اون درخت رو قطع کنیم تا تنبل نشیم؟ خوب واقعا این جمله مزخرف هست.
همونطور هم که مشخص هست در واقع اینجا ما از دو ابزار اره برقی و دست استفاده کردیم. پس گاهی اوقات ممکنه که برای یک پروژه هم از Java استفاده بشه و هم از C#‎‎‎‎ و هم از زبان های دیگر ...
گاهی ممکنه که با یک زبان به هیچ عنوان نشه کاری رو انجام داد. مثل اینکه اره برقی داریم ولی دست نداریم. حالا بیا با پا اره برقی رو بگیر و درخت رو قطع کن!!!


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

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

اما چند پست قبل هم که دوستمون سوالی کردند و شاید جواب خودشون رو گرفتن، من هم یه نظری دارم میگم، که باز هم یه جمله معروفی هست که میگه :
"علمی که امروز جدید است، فردا کهنه" ( و علمی که فردا جدید است، فردایی دیگر کهنه )
پس انسان امروز علم جدید و بهتر رو یاد میگیره و اگر فردا علمی بهتر اومد اون رو یاد میگیره.




> _هر دیدی 100درصد آنچه در واقعیت هست، نیست! اما می تونه خیلی به واقعیت نزدیک باشه!_


این حرفتون هم حرف نداشت، من هم همین جا همین رو میگم.

----------


## cups_of_java

> مثلا چی؟؟؟ 
> این مشکل با کدوم زبون حل میشه؟



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

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

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

کمتر پیش میاد با جاوا سیستم های خبره و بی درنگ نوشته بشه.

کسی که می خواد یه پروسه در حال اجرای مادام العمر داشته باشه و بتونه در زمانی که در حال اجراست تغییرش بده و بتونه سیستم رو به روز کنه، نمی تونه از جاوا استفاده کنه! (این کاربرد توی نرم افزار های مخابراتی، امنیتی و mission critical مطرح هست.)

کسی که می خواد یه بازی قوی تحت ویندوز بنویسه از جاوا استفاده نمی کنه.

و و و (الان چیزی به ذهنم نمیرسه)

----------


## cups_of_java

> من یه چیزی تو Java مینویسم و از نظر من این طور راحتر و بهتر هست و دیگری همون رو با C#‎‎‎‎‎ مینویسه. حالا اینجا هم مسائل زیادی وجود داره، ممکنه راهی در C#‎‎‎‎‎ بدونه که بهتر باشه تا Java یا حالات بیشتر دیگر.


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




> یخوام بگم که اگر آدم با C#‎‎‎‎‎ کار کنه تنبل و با Java کار کنه به C#‎‎‎‎‎ لبخند میزنه ( از نظر من که شاید اشتباه باشه ) مزخرف هست.
> شاید این مثال منظور من رو بهتر روشن کنه : ...


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


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

----------


## vcldeveloper

> چند مورد می تونین در مورد هزاران مورد نام ببرید؟ استاندارد؟ معنی استاندارد چیست؟ استانداردی که یک شرکت تعیین کنه بدونه ارائه جزییات!؟ و نهایتن نشه در چسبوندن تکنولوژی ها به هم توفیقی داشت؟


خوب این بخاطر این هست که شما دید جامعی نسبت به مطلبی که درباره ویندوز یا دات نت مطرح می کنید، ندارید. مایکروسافت CLI دات نت، و زبان #C را به عنوان استاندارد باز به موسسات ISO و ECMA ارائه کرده، و تمامی جزئیات آنها در این موسسات موجود هست، و هر کسی میتونه براساس آن پیاده سازی خودش از CLI یا #C را ارائه کنه. پس هم استاندارد هست، هم جزئیاتش بطور کامل منتشر شده. خودِ مایکروسافت هم پیاده سازی تجاری خودش از CLI را که در سکوی ویندوز انجام شده، بر اساس همین استاندارد ارائه کرده، یعنی یک محصول تجاری را برپایه یک استاندارد باز ارائه کرده.




> مثل اواخر دهه 90 که به چالش افتاد. مجبور به تولید دات نت شد و در اوایل 2000 که دادگاه انحصارطلبی و کله شقی در مورد جاوا رو به سان واگذار کرد؟ نمیشد آبرو ریزی نکنه، خودش رو سنگین نگه داره تا پیشه همه محترم و خوشنام بمونه؟


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




> ماهسل تجربه میگه جاوا اگه دوست داری پشرفت کنی و چالش پذیر هستی و میگه دات نت اگه دوست داری یه نرم افزار رو باز کنی، راحت (و در موارد زیادی هرتی!) کد بزنی (با کلیک کردن و drag&drop نرم افزار بسازی) (این سادگی تو پروژه های بزرگ پذیرفته نیست)، همه کارتو اون تو بکنی، یه MSDN هم کنارت باشه، بخونیش هرجا گیر کردی و همین!_ (بی احترامی نشه، در مورد افراد حرف نمیزنم!_)
> *مهم این هست که دات نت راه رو برای این فرهنگ باز کرده! (اصلن مایکروسافت عاشق این فرهنگه) اما جاوا ذاتن اینطور نیست!*


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

در هر زبانی Abstraction بخاطر رسیدن به یک سری اهداف مشخص ایجاد شده، و وجود این Abstraction برای آن اهداف مشخص شده مفید، و گاها برای برخی اهداف دیگه غیر مفید هست. این هم مختص دات نت نیست.




> ما هم اینا رو گفتیم تا *هر کسی که می خواد شروع کنه بدونه* *که* در سمت جاوا با محیط بازتری آشنا میشه، قابلیت های بیشتری رو یاد میگیره، تاکید بیشتری روی خیلی از مسائل توسعه نرم افزار به صورت متن باز حس می کنه، وارد فرهنگ متفاوتی میشه، می تونه دنیای بزرگتری رو در تحت شعاع خودش قرار بده (از سیستم های تجاری و اداری گرفته تا سیستم های پیشرفته مخابراتی (Telecom، VOIP و ...) و صنعتی.


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

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

----------


## cups_of_java

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


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




> مایکروسافت CLI دات نت، و زبان C#‎‎ را به عنوان استاندارد باز به موسسات ISO و ECMA ارائه کرده، و تمامی جزئیات آنها در این موسسات موجود هست، و هر کسی میتونه براساس آن پیاده سازی خودش از CLI یا C#‎‎ را ارائه کنه. پس هم استاندارد هست، هم جزئیاتش بطور کامل منتشر شده. خودِ مایکروسافت هم پیاده سازی تجاری خودش از CLI را که در سکوی ویندوز انجام شده، بر اساس همین استاندارد ارائه کرده، یعنی یک محصول تجاری را برپایه یک استاندارد باز ارائه کرده.


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




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


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

نهایتن اینکه بزرگی ابزار می خواد! شما نمی تونی انتظار داشته باشی با چند تا drag&drop بتونی یه سیستم توزیع شده مدیریت محصولات فروشگاه زنجیره ای بسازی! ما هم میگیم اسکلت جاوا این امکان رو به سادگی به شما میده، اما در دات نت حد و مرز واسط ها با کاربر طوریست (تجرید ها به شکلی انجام شده) که برنامه نویس به سادگی کارهای کوچک رو انجام میده اما در عوض از کار های بزرگ وا می مونه!




> من هم باید از دید یک برنامه نویس Native، همین اتهامات را به جاوا وارد کنم، و مثلا مدعی بشم مدیریت خودکار حافظه در جاوا بچه بازی هست، و اگر کسی واقعا میخواد برنامه نویس بشه، و روحیه چالش پذیر داره، باید همه مدیریت حافظه را خودش انجام بده!


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





> در هر زبانی Abstraction بخاطر رسیدن به یک سری اهداف مشخص ایجاد شده، و وجود این Abstraction برای آن اهداف مشخص شده مفید، و گاها برای برخی اهداف دیگه غیر مفید هست. این هم مختص دات نت نیست.


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

در سمت دات نت این 


> قابلیت نفی نشده، ولی از آنجایی که مایکروسافت عمده ترین بازیگر عرصه هست، و کاربرانش را با قابلیت های جدید بمباران میکنه


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




> و برنامه نویس اگر میخواد در این دام نیافته، باید نگاهی فرا مایکروسافتی به دات نت داشته باشه.


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

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

----------


## vcldeveloper

> با حرف هایی که زدیم، از شما انتظار داشتم پلت فرم جاوا رو با CLI و دات نت مقایسه نکنید. CLI رو با ماشین مجازی جاوا مقایسه کنید و استاندارد مربوط به اون.


عزیز جان، شما مدعی بودید که دات نت استاندارد نیست، و جزئیات آن مبهم و ناشناخته هست. اینها CLI رو با استاندارد باز منتشر کردند، زبان C#‎‎ را هم با استاندارد باز منتشر کردند، سورس کد Class Library دات نت را هم برای کاربران منتشر کردند، برای ارتباط لایه های مختلف نرم افزار هم بر خلاف COM که در گذشته در ویندوز استفاده می شد، بر روی WebServices در دات نت تاکید کردند. ماشین مجازی جاوا بخشی (میشه گفت مهمترین عنصر) از جاوا محسوب میشه، و سایر عناصر جاوا حول آن شکل می گیرند. زبان جاوا هم بخشی از پلت فرم جاوا هست، که C#‎‎ در مقابل آن قرار میگیره، و هر دو بر اساس استانداردهای باز هستند.



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


با کدوم استدلال؟ شما مدعی هستید از نظر فنی، Abstraction جاوا بهتر از دات نت هست؛ خب با چه دلیلی؟ دلیل تان فقط همین هست که جاوا کاربران بیشتری داره، یا کتابخانه های بیشتری براش نوشته شده؟! یا اینکه نه، دلیل علمی دارید که در Abstraction در دات نت این n مشکل وجود دارد، و در جاوا این مشکلات وجود ندارد؟



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


اتفاقا مباحث حول Garbage Collection  اونقدر که شما فکر می کنید ساده و حل شده نیست که از نظر فنی گفته بشه Garbage Collection در زمان توسعه 60 صرفه جویی ایجاد میکنه، پس ابزار فوق العاده مفیدی هست! اتفاقا  Garbage Collection از جمله مسائلی هست که افراد مختلف از دیدگاه های مختلف به آن پرداختند و به نقاط  ضعف و قوت مختلفی درباره آن اشاره کردند. Garbage Collection برای محیط های Managed شده یک "باید" هست، ولی در محیط های Native مجادله بر سر نقاط ضعف و قوت آن بسیار بیشتر هست، بطوری که خودم یادم هست چند وقت پیش در یک نظر سنجی درباره ایجاد Garbage Collection در دلفی، عموم برنامه نویسان دلفی به این گزینه رای دادند که یا GC وجود نداشته باشه، یا اگر قرار هست وجود داشته باشه، کاملا Optional باشه. پس شما تصور نکنید که GC یک مقوله جا افتاده در برنامه نویسی هست، و هر زبانی GC داشته باشه، لزوما پیشرفته تر هست، و زمان توسعه آن 60 درصد کمتر هست! در بعضی از محیط ها و بعضی از سناریوها نقاط ضعف GC بیشتر از نقاط قوت آن هست. بگذریم، این ربطی به بحث این تاپیک نداشت.




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


دوست عزیز، بزار خیالت رو راحت کنم، من هیچ برنامه تجاری با دات نت ننوشتم، و تنها نسخه ایی از Visual Studio که در سیستم من نصب بوده، نسخه 2005 آن بوده که سال ها پیش نصب کرده بودم (اون هم الان نصب نیست). شما اگر دات نت را بکوبی، یا بهش مدال افتخار بدی، نه چیزی از من کم میشه، نه چیزی به من اضافه میشه که بخوام از خودم (!!) دفاع کنم. اکثر دوستانی که با فعالیت من در این سایت آشنا هستند، یا نظرات من را شنیدند، می دانند که من رویکرد مثبتی نسبت به دات نت ندارم، و هنوز هم خیلی ها بحث هایی که پارسال در نمایشگاه الکامپ درباره دات نت کردیم را یادشان هست؛ ولی اگر من دات نت کار نمی کنم، دلیل نمیشه که هیچ اطلاعی ازش نداشته باشم، و هر کس هر دلیلی بر ضدش ارائه کرد، براش کف بزنم!

در پست قبل هم مطرح کردم که شما دارید از دید یک جاوا کار به این مقایسه نگاه می کنید، و البته شاید از دید فردی که در حوزه IT از مایکروسافت متنفر هست؛ ولی من از دید فردی به این مقایسه نگاه می کنم که نه دلبستگی به جاوا یا شرکت SUN دارم، نه دلبستگی به دات نت و مایکروسافت؛ و البته مواضع منفی که من در این سایت بر ضد سیاست های مایکروسافت و یا دات نت داشتم، بسیار بیشتر از مواضع منفی بر ضد جاوا بوده (اصلا من در این سایت تا بحال پستی بر ضد جاوا یا Sun ارسال نکردم)؛ یعنی اگر میخواستم بر اساس تمایلات شخصی و احساسات خودم پست ارسال کنم، الان باید زیر همه پست های شما "تشکر" می زدم، و از شما بابت انتقاد از مایکروسافت و دات نت تشکر می کردم!

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

شما اگر زبان جاوا را با C#‎‎، یا ماشین مجازی جاوا را با ماشین مجازی دات نت، یا امنیت در جاوا را با امنیت در دات نت، یا پیاده سازی ماشین مجازی جاوا در یک سیستم عامل را با پیاده سازی ماشین مجازی دات نت در همان سیستم عامل، یا مستندات جاوا را با مستندات دات نت، یا کتابخانه کلاس های اولیه جاوا را با کتابخانه کلاس های اولیه دات نت، و غیره مقایسه می کردید؛ بحثی نبود.

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

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

اما وقتی شما اطلاع ندارید که زبان C#‎‎ هم مثل زبان جاوا open standard هست، یا اینکه CLI دات نت مثل ماشین مجازی جاوا open standard هست، یا اینکه اصلا بحث DLL Hell در دات نت مفهومی ندارد، و مربوط به Native Code در ویندوز هست، یا از دلایل واقعی وجود امکان Unmanaged Code در C#‎‎ بی اطلاع هستید، اون وقت دیگه در جایگاهی نیستید که بتونید این پلت فرم را با هم مقایسه کنید، چون مقایسه شما از دید فردی هست که اولا به جاوا علاقه دارد، ثانیا مدت ها ست با جاوا کار می کند، و ثالثا اطلاعات درست و دقیقی از دات نت ندارد. خب، مسلم هست که نتیجه این مقایسه علمی و منطبق بر واقعیات نیست.




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


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

----------


## cups_of_java

من سال 80 آموزش جاوا رو شروع کردم و سال 81 سمت پلت فرم جاوا رفتم و نهایتن سال 82 کار با J2EE رو شروع کردم. البته الان با جاوا کار نمی کنم. اما تو همه این سال ها از اینکه جاوا رو انتخاب کردم خوشحال بودم! چرا؟ 
چراش رو من خیلی عامیانه و سطح بالا برای دوستان توضیح دادم ولی فکر نمی کردم شما با هدف کوچک و خوار کردن افراد و البته فریاد بی طرفی سعی کنید این صحبت ها رو منحرف کنید. من تو حرف هام از جاوا طرفداری متعصبانه نکردم. من نگفتم طرفدار شرکت خاصی هستم (اگر باشم طرفدار گوگل هستم) ولی گفتم از شرکت مایکروسافت متنفرم. من نگفتم جاوا رو شربت زندگی میدونم اما گفتم اصلن با دات نت حال نمی کنم. چرا؟ 
حرف های من کلی بوده! من گفتم یه جاوا کار حالش بد میشه بره سمت دات نت! ولی برعکسش اینطور نیست. (لازمه دوباره تکرار کنم که هیچ دیدی 100درصد واقعیت نیست؟ تا کسی بر من خرده نگیره؟)

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

منم تو اول راه همش فکر می کردم که مقایسه زبان ها با هم عامل اصلیه! ولی بعدن فهمیدم که اینا اکثرش بازی های هیجان انگیزه و نه بیشتر! مهم پشتیبانی و فرهنگ غالب بر پلت فرم هست. 
کاری نداریم که از CLI کسی پیاده سازی نداده ولی از ماشین جاوا به وفور پیاده سازی یافت میشه (این خودش نشون دهنده داستان هایی هست.) مهم اینه که تعداد استاندارد هایی که جاوا برای انجام کارها داره (فراگیری) جاوا به مراتب بیشتر هست. این قدر بیشتر هست که کسی نتونست یک معادل برای Java Concept Mapی که گفتم بیاره. (بابا من از جاوا طرفداری نمی کنم! جاوا این ویژگی ها رو داره منم دارم مطرح می کنم.)
تعداد ویکی ها و نمونه کد ها و فروم ها و فریم ورک های اپن سورس ( که حتی مجانی شما رو پشتیبانی میکنند) اینقدر زیاده که... لازمه بازم توضیح بدم؟
حالا باز شما گیر به این بده که CG تو محیط native بدرد بخور نیست. خب بله که نیست! توی زبان اسمبلی ها لازم نیست! آبا بحث ما این بوده؟ موضوع اینه اصلن؟ اگه بحث سر این باشه که جاوا محیط native نداره (ماهیتن نداره ولی نمشه گفت اصلن نداره) و اینکه این موضوع می تونه یک معبار در انتخاب باشه اون وقت می تونیم روش به طور خاص بحث کنیم. من گفتم که بحثمون از فنی بودن خودش خارج شده. حرف شما رو هم میپذیرم که کلی گویی شده اما اینکه من رو به انحراف می کشید برام پذیرفته نیست. 
من در ابتدا سعی کردم کلی حرف بزنم و یک تصویر کلی بسازم از فرهنگی که مناسب تر می دونم برای مهندسین نرم افزار و برنامه نویس ها

----------


## amir-yeketaz

خیلی ممنون از اطلاعاتی که دادین 
خوب حالا فرض کنید  دو راه برایه من وجود داره 
از اونجایی که من الان تو فکر اینم که با دو زبان(شایدم دو ابزار) کار کنم و بلد باشم دو راه برام تو دوره دانشگاهی پیش میاد 
البته فعلا دارم اینجوری فکر میکنم!!!؟؟؟
1-اول سی شارپو یاد بگیرم و بعد برم سراغ جاوا 
2-اول جاوا رو یاد بگیرم و بعد برم سراغ سی شارپ 
خوب راه اول خوبش اینه که سی شارپ رو به راحتی میشه یاد گرفت و فکر نکنم مشکلی داشته باشم وبدیش اینه که برایه رفتن به سمت جاوا مشکل به وجود میاد و نیاز به کار داره (طبق فرمایشات شما) 
خوبی را دومم اینه که جاوا رو که خوب بلد باشی خیلی راحتتر میتونی سی شارپو بلد بشی 
و باهاش کار کنی ولی بدیش اینه که اول جاوا سخته و کار کردن با یه زبان از ابتدا حرفه ای و وارد شدن به اون شاید مشکل باشه(بازم طبق فرمایشات شما)  
به هر حال
فرض میکنیم یکی رو می خوایم انتخاب کنیم 
به نظر شما کدوم راه درست تره؟؟؟
بازم خیلی ممنون که تجربه هاتون در اختیار ما میذارین

----------


## amir-yeketaz

ببخشید کسی نمی خواد جواب این سوال ما رو بده 
خواهشا تاپیکر نیمه کاره ول نکنید برین؟؟!!
ممنون میشم اگه کسی جواب این سوال منو بده

----------


## MIDOSE

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

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

موفق باشید،
MIDOSE

----------

