PDA

View Full Version : حرفه ای: برنامه نویسی شبکه وایرلس یا #C یا JAVA ؟؟



sobhan1990
چهارشنبه 17 خرداد 1391, 21:44 عصر
سلام به همه دوستان برنامه نویس

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

در ضمن قراره پروژه پایانیم باشه.

برای اینکار کدوم زبان رو پیشنهاد میکنید و چرا؟؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 09:57 صبح
به نام تنها برنامه نويس هستي
سلام

هر كدام كه تسلط بيشتري داري ! نتيجه كار بهتره

sobhan1990
پنج شنبه 18 خرداد 1391, 13:24 عصر
سلام

سطح مهارتم در این زبانا تفاوت زیادی نداره! از نظر ارزش کار برنامه نویسی میخوام بدونم کدوم با ارزش تره؟ و توی رزومه کاری بیشتر به چشم میاد و در ارزشیابی سطح بین المللی(مثلا کشورهای دیگه) هم برام مهمه!!

ممنون بابت راهنمایی.

Direlap
پنج شنبه 18 خرداد 1391, 15:44 عصر
اگه برای ارزشیابی بین المللی بخوای برو به سمت جاوا.

ولی اگه تو ایران میخوای سی شارپ بهتره.

Saeed_m_Farid
پنج شنبه 18 خرداد 1391, 16:52 عصر
درسته اینجا جای این سوالا نیست، چون الان هست که این تاپیک بترکه و همه بیان جنگ و جدل و ... و سر و کله مدیرا پیدا بشه، تاپبک رو ببندن و ما رو دعوا کنن و ...

ولی چون گفتین سطح مهارتتون فرقی نداره! از دید اکثر درگیرهای برنامه نویسی:

#C مثل روندن اینه:

http://upload.wikimedia.org/wikipedia/commons/5/5a/Gofast.jpg

Java مثل اینه:
http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Japanese_Submarine_Oyashio_SS590.JPEG/320px-Japanese_Submarine_Oyashio_SS590.JPEG
==================
این از دیدگاههای کلیشه ای!!!
تفاوتهای جاوا و سی شارپ خیلی جاها بحث شده و برای نمونه می تونید به این مقایسه کامل (http://www.25hoursaday.com/CsharpVsJava.html) (ولی قدیمی) مراجعه کنید؛ درکل از دید من تو یه جای حرفه ای (مثلاً خارجه!) کسی شما رو با زبانی که باهاش کد می نویسی نمی سنجه، اونا خیلی فاکتورها مدنظر دارن که سوال شما، یکی از کم اهمیت ترین هاشون هست؛ بقول دوستمون شما باید ببینی با کدوم راحت تری: نه اینکه با کدوم حال میکنی! بلکه باید ببینی با کدوم می تونی سریعترین، بهترین، مطمئن ترین و تمیزترین کد رو بنویسی تا هم بعداً برای بقیه برنامه نویس ها که تو تیم کار می کنن قابل توسعه باشه و هم خیلی سریع اون چیزی رو که میخوان تحویلشون بدی! یا اینکه ببین دوست داری جذب یه سازمان بی در و پیکر بشی و اونقدر دیسیپلین اونجا حاکم باشه که کوچکترین انحرافی از استاندارد کدنویسی سازمانی، مصادف باشه با توبیخ و ... ولی در عوض تو میشی یه پروفشنال واقعی!
تو یه جایی که برنامه نویسی جای خودش رو پیدا کرده اکثر برنامه ها کاملاً مثل سایر کالاهای تکنولوژیکی هستن، یعنی خیلی زود باید بیان و بهترین جواب رو بدن و بعد از رده توسعه خارج بشن (مثل 1100 نوکیا). تو این راه زبان برنامه نویسی میتونه تو تامین این هدف ها با درنظر گرفتن نوع کدنویسی و اینکه دستتون به کدومشون بهتر و درست تر خوابیده کمک کنه؛ ولی تو همون جاها هم همونطورکه گفتم، برنامه های بسیار بزرگ مولتی پلت فرم هستن که شما فقط جزئی از میلیونها خط کدی هستی که توسعه پیدا کرده (مثل ثبت احوال!) ...

=======================
خوب جدای از جامعه شناسی زبانها! بریم تو مقایسه مستقیم: #C مزایای زیر رو برای برنامه نویس ها تامین میکنه که تا جایی که من میدونم جاوا یا نداره یا مشابه سازی هاش رو داره:


Closures (http://diditwith.net/PermaLink,guid,235646ae-3476-4893-899d-105e4d48c25b.aspx): توابع بی نام که تو Delegate ها، لینک و عبارات لامبادا و ...استفاده میشن، در عوض تو جاوا کلاسهای بی نام داریم که نوشتنشون زمانگیرتر هست و بنظرم اون کارآیی #C رو ندارن ...
Runtime generics (http://msdn.microsoft.com/en-us/library/f4a6ta2h.aspx): تا اونجایی که من میدونم تو جاوا مصیبت (http://stackoverflow.com/questions/10886577/how-does-c-sharp-do-runtime-generics) هست!
Generics of primitive types: تو جاوا برای هماهنگی با JVM اینکار مستقیماً نمی تونید (http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types) بکنید (+ (http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types)): List<byte> mylist = new List<byte>();
Delegates (http://msdn.microsoft.com/en-us/library/ms173171%28v=vs.80%29.aspx):جاوا همچین چیزی نداره (http://stackoverflow.com/questions/44912/java-delegates)، چون اون اولی رو نداشت: + (http://onjava.com/pub/a/onjava/2003/05/21/delegates.html)
(http://stackoverflow.com/questions/44912/java-delegates)
LINQ (http://msdn.microsoft.com/en-us/library/bb397926.aspx):پروژه های فرعی برای شبیه سازیش تو جاوا نوشته شده، ولی ذاتاً مشابهش تو جاوا نیست ( Coollection (http://github.com/wagnerandrade/coollection#readme)، quaere (http://xircles.codehaus.org/projects/quaere) و lambdaj) همین مزیت برای پروژه هایی که من درگیرشون هستم برای انتخاب #C کافیه! ولی بسته به پروژه فرق میکنه ...
Extension methods (http://msdn.microsoft.com/en-us/library/bb383977.aspx): جاوا does not have such feature
Operator overloading (http://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx):ممکنه واسه یکی مهم باشه و لازم! ولی جاوا نداره و دلیلش (http://java.dzone.com/articles/why-java-doesnt-need-operator)
Indexers (http://msdn.microsoft.com/en-us/library/6x16t2tx.aspx): ببینید با کدوم (http://www.javacamp.org/javavscsharp/indexer.html) راحت تر هستین؟
Anonymous types (http://msdn.microsoft.com/en-us/library/bb397696.aspx): تو جاوا اینکار به اینصورت (http://stackoverflow.com/questions/6794192/is-there-is-a-functionality-in-java-similar-to-cs-anonymous-types) هست؛ که همونطورکه می بینید، نمیشه گفت بصورت واقعی همچین امکانی داره جاوا ...
Expression trees (http://msdn.microsoft.com/en-us/library/bb397951.aspx): پیاده سازی درختی عبارات که ترکیب توابع بی نام و لامبادا هست؛ من تا حالا استفاده نکردم ولی تو جاوا نمیشه با یه خط (http://math.hws.edu/eck/cs124/javanotes3/c11/s4.html) همچین کاری کرد : Expression<Func<int, bool>> lambda = num => num < 5;
بلاک Using (http://msdn.microsoft.com/en-us/library/yh598w02.aspx): بلی، همین using که پارانتز باز میکنیم و ... همه کار رو خودش میکنه؛ تو جاوا باید (http://stackoverflow.com/questions/141241/does-java-have-a-using-clause) بصورت بلاک try...finally نوشته بشه!
نداشتن Checked exceptions (http://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions): این رو نمیشه گفت مزیت یا باگ! ولی آخر تنبلی هست، و میذارمش به عهده اساتید، چون جای بحث زیاد داره. از خود اندرس هلسبرگ (http://en.wikipedia.org/wiki/Anders_Hejlsberg) که قبله خیلی برنامه نویساس! یه مصاحبه در موردش کردن که در این قسمت از برنامه توجه شما رو به اون جلب میکنم (1 (http://www.artima.com/intv/handcuffs.html) و 2 (http://www.artima.com/intv/csdes.html))؛ می دونم که با دقت تمام مطالب رو مطالعه کردین، پس فهمیدین که ایشون هم زیاد با Checked Exceptions میونه خوبی نداره :لبخند:

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


مجانی: اولیش که زیاد در حوزهء درک ما نیست! شما برای IIS ،VS ،Windows Server و Net.خدا تومن تو همون جاهای بین المللی باید هزینه کنید ولی معادلشون یعنی Java 6 + Glassfish + Eclipse + Linux و ... یه قرون هم براتون هزینه نداره!
Cross-platform (http://en.wikipedia.org/wiki/Cross-platform#Java_platform): پاشنه آشیل دات نت، الان زود نگین دات نت هم مونو داره و ... منظور خاصیت های ذاتی زبان و پلت فرم هست، والا برای تمام موارد بالا که مزیت های #C بودن تو جاوا شبیه سازی هایی نوشته شده ...
تنوع IDE: شما از Eclipse (http://www.eclipse.org/) خوشتون نیومد از Netbeans (http://netbeans.org/) استفاده کنید؛ بازم هیچکدوم به دلتون نشست، IntelliJ (http://www.jetbrains.com/idea/) طرفدارای پروپا قرصش رو داره و الی ماشاا... (http://www.apl.jhu.edu/%7Ehall/java/IDEs.html)
قدمت و اصالت: تنوع پروژهای گسترده، محیط های متنوع توسعه و اجرا، سیستم عامل های متنوع و افراد فوق العاده کاردان و حرفه ای که عمری رو صرف برنامه نویسی و پروژه های بزرگ و فراگیر کردن و ... بدست آوردن همچین گنجینه ای سالها زمان و از خودگذشتگی میخواد که یکی اش همون مجانی بودن هست:لبخند:
enum های جاوا: عمراً اگه #C انعطاف پذیری enum های جاوا رو داشته باشه!(مقایسه (http://stackoverflow.com/questions/469287/c-sharp-vs-java-enum-for-those-new-to-c))

خلاصه اش اینکه خیلی ها #C رو نسخه فرزتر شده و سریعتر جاوا میدونن که خیلی سریع تر میشه برنامه های مطمئن و کامل رو باهاش توسعه داد ولی دقیقاً بهمین علت (جدیدتر، کوچکتر و جمع و جورتر و ...)، این رو هم باید در نظر بگیرین که جاوا برای پروژه های سازمانی و خیلی بزرگ بنظر من قطعاً گزینه مناسب تری ست، چون تو پروژه های ملی و فراملی application servers، محیط های runtime، سیستم عامل های متنوع و پروژه های گسترده متن باز، محیط های متنوع توسعه و ... قطعاً سلایق و نیازهای بیشتری رو پوشش میده ...


تمام!


منابع:


wikipedia (http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java)
stackoverflow (http://stackoverflow.com/questions/610199/the-art-of-programming-java-vs-c-sharp)
25hoursaday (http://www.25hoursaday.com/CsharpVsJava.html)