سوال جواب: توسعه چند پلتفرمی

مسعود پرسیده:

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

پس من یک زبان می خوام که نیازی به نصب برنامه اضافی توسط کاربرا نداشته باشه مثل جاوا ! امکان خروجی گرفتن برای ویندوز ، ویندوز فون ، iOS ، اندروید رو داشته باشه و بشه باهاش یک سایت راه انداخت! که منبع اطلاعات همگی از یک سرور باشه! نظر خود من روی پایتونه با فریموورک های Kivy و Django ه! ولی فریموورک های معروف دیگه ای رو هم شنیدم مثل phonegap یا Haxe که به نظر میاد خوب باشن مخصوصا haxe که خودش یه زبان مجزاش و شما یه برنامه باهاش مینوسی و چند تا خروجی متفاوت برای پلتفرم های مختلف بهت میده!

چون جواب از تخصص من خارج بود، گفتم بذارم اینجا تا شاید کسی بتونه راهنمایی مناسبی بکنه.

  • واقعاً بستگی به خصوصیات فردی اون آدم داره. ولی از اون‌جا که خودش پایتون رو پیشنهاد کرده ، به نظرم همین پایتون گزینه‌ی خیلی خوبی می‌تونه باشه. هرچند نباید توان و دسترسی‌پذیری بالای HTML5 یعنی جاوااسکریپت و… رو هم اصلاً دست کم گرفت.

  • سی کیوت همه چیزهایی که خواسته شده رو جواب میده.
    Haxe خیلی دردسر داره کار کردم باهاش اما میتونه گزینه مناسبی باشه.
    phonegap و آپاچی کوردوا هم سرعت اجرای خیلی خیلی پایینی داره من سمتش نمیرم :)

  • عبدوول

    پایتون و node.js

  • نظر من اینه که شما همیشه با یه آچار نمیتونی با یه پیچ کار کنی، برای هر پیچی نیاز به آچار خاص خودش هست.

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

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

    امیدوارم منظورم را رسونده باشم. :D

  • علی

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

  • محمد

    به قول دوستمون میلاد، نمیتونیم هر پیچی رو با هر آچاری باز کنیم.
    ما داری در مورد چندین مورد سیستم صحبت کنیم.
    ۱- مبایل
    ۲- وب
    ۳- دسکتاپ
    هر کدوم این تکنولوژی ها نیاز به ساختار و زبان های برنامه نویسی مربوط به خودشون هستند. و برای هرکدوم باید به شما یک پاسخ داد.
    برای مبایل من پیشنهاد می کنم از phonegap شروع کنین. برای phonegap فریم ورکهای خوبی هستند که آماده استفاده هستند و خیلی خوب مستند شدند. مثل http://ionicframework.com و چندین تای دیگه الان تو ذهنم نیست و به راحتی با یه گوگل ساده می تونی پیداشون کنی. اما بعدا حتما به سمت نوشتن برنامه با x-code و android sdk برین.
    برای وب، من php رو پیشنهاد می دم به دو دلیل چون اولا خیلی پروژه های آماده ای وجود داره که به راحتی می تونی به عنوان نمونه ازشون ایده بگیری و دوم اینکه نیروی متخصص تو این حوزه بیشتر از بقیه بخشاست و به راحتی می تونی آدمهایی رو پیدا کنی که می تونن جواب سوالاتت رو بدن.
    برای دسکتاپ نظر خاصی ندارم. برای ویندوز من WPF که همچنین ساده نیست رو پیشنهاد می دم برای mac جز x-code چندین تا دیگه هم هست که خیلی دوسشون ندارم.

  • اشکان

    من هم با میلاد موافقم که نمیتونی با یک ابزار همه کارا رو به خوبی انجام بدی
    ولی به هر حال فک کنم سی شارپ بهترین گزینت باشه
    .NET franework for windows
    XAMARIN framework for iOS and Android
    ASP.NET for webserver
    ولی در نظر داشته باش که خیلی از ابزارهای native اندروید و ios گزینه های خیلی بهتر و سریعتر با امکانات بهتر هستند
    Asp.net نسبتا پیچیده تر از فریمورک های مشابه مثلا جانگو در پایتون هست
    و خوب بهترین گزینه برای ویندوز و ویندوز فون سی شارپ و .net هست
    اینم در نظر بگیر که یادگرفتن همه فریمورک ها و تولید محصول خوب بسیار بسیار زمان بره. این که فقط یه زبان استفاده میکنی لزوما کارتو خیلی راحت تر یا سریع تر نمیکنه.
    و در نهایت داری یه یخچال میخری که در عین حال قهوه ساز، ماشین ظرفشویی، تستر و تلوزیونه :) انتظاراتتو رو تنظیم کن!

    • میلاد

      اینجا صحبت کردن از دات نت شبیه اینه که توی مسلمونا از خوبی دین یهود بگی ((:

      • دات نت هم مسلمون شده برادر، ريسيست نباش. اپن سورس، مالتى پلتفرم و دولوپر فرندلى.

        • میلاد

          مگه فقط شما اینو بگید (:
          روی ویندوز هم کار کنه جای شکر داره!

  • مهران

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

  • من در مجموع با نظر دوستایی که میگم با یه آچار نمی تونی لزوما همه پیچها رو باز کنی موافقم در واقع آی تی داره هر روز تخصصی تر میشه خود من یه زمانیمی گفتم من خدای شبکه رو برنامه نویسی و وب هستم ولی بعدا اولش مجبور شدم بی خیال شبکه بشم بعد به تدریج برنامه نویسی هم محدود شد مثلا الان یه عده کلا FrontEnd مینویسن مثل برنامه برای موبایل یا وبسایتهای SPA خفن (Angularjs…) یه عده دیگه مثل من Backend کار می کنن یعنی کد هایی توی سرور (معمولا به صورت وب سرویس) می نویسن که اونب رنامه موبایل بتونه صداشون کنه یا کدهای جاوا اسکریت توی صفحه صداشون کنه. برای هر کدوم از یان شاخه ها یه زبانی مناسبه ولی در مجموع من می تونم بگن پایتون برای Backend می تونه عالی باشه خوب برای FrontEnd ممکنه بتونی از همین زبون با کمک Kivy اسفتاده کنی ولی کیفیتی که زبان اصلی بهت میده چیز دیگه هستش اما من به عنوان کسی که سالها پایتون و Backend کار کرده هیچ مشکلی باهاش نداشتم و در جواب اون دوستمون اتفاقا مطلب هم بسیار زیاد توش هست توی StackOverFlow هم زبان دوم هستش و توی ایران هم من هم خیلی از شرکتها باهاش برنامه های بزرگ کاربری خوبی نوشتن مثل پارس پویش با IBS.

  • قطعا توصیه من C++ هست نه C++ که پدرهای ما می نوشتن
    C++11/14 که بهش می گن Modern C++

    من با C++/Qt برنامه های مبتنی بر پلتفرم های Android, iOS, Windows Phone, Mac OS X, Windows, Linux, FreeBSDm, BlackBerry رو از یک سورس کامپایل می گیرم تقریبا ۹۰٪ کد روی همه پلتفرم های یکی هست و یه جاهائی ممکنه من نیاز باشه که یه مقدار کد Native یه پلتفرم رو بنویسی مثلا روی اندروید برای استفاده از API سیستم عامل یه لایه سبک با JNI. نکته اینه که ۱۰۰٪ بی نیاز نمی شی اما مثلا می تونم توی جاوا گلیم خودم رو بیرون بکشم یا C# یا Objective-C
    می تونید برای UI Development هم توی Qt از QML استفاده کنید که کاملا با OpenGL روی GPU رندر می شه و واقعا سریع هست و Syntax بسیار ساده ای هم داره.

    این ویدیو رو ببنید
    http://channel9.msdn.com/events/Visual-Studio/Connect-event-2014/311
    توی این ویدیو Herb Sutter دو تا ویدیوی دیگه که یکیش ۲ ساعت و یکی ۱ ساعت رو معرفی می کنه که چطور Microsoft و Dropbox برنامه هاشون رو با C++ روی همه پلتفرم ها از یک سورس نوشتن و کامپایل کردن

    من حتی وب سایت رو هم با این مینویسم که C++ هست تنها Framework هست که به صورت پیش فرض وب سوکت هست اگر Browser ساپورت نکنه Fallback می کنه روی Ajax اون هم ساپورت نشه Fallback می کنه روی Plain HTML مثلا برای موتورهای جشتجو. شما وب سایت رو مثه یک برنامه دسکتاپ طراحی می کنی با این فریم ورک که شدیدا شبیه Qt هست منتها برخلاف Qt کاملا C++ هست و برای Signal/Slot هم از Boost استفاده می کنه.
    http://www.webtoolkit.eu/wt/blog/2009/12/17/facebook__php__is_not_very_kopenhagen
    من سایت جشنواره تلویزیون های هوشمند سامسونگ رو کامل با یه CMS با این فریم ورک نوشتم.

    اینهم ویدیوی معرفی C++11 توسط Herb Sutter ;i که به قضیه دهه گمشده در دنیای برنامه نویسی اشاره می کنه و یه مقاله هم که یه ایرانیه هم توش بوده رو معرفی می کنه در زمینه اینکه چرا زبان های Native مثه C++ مهم هستن
    http://channel9.msdn.com/events/Build/BUILD2011/TOOL-835T

    فقط یه نکته C++ یادگیریش به خاطر Learning Curve پیچیده اش مطمئنا ۳ سال زمان می بره ولی میارزه
    حتی دستمزده ها هم خیلی بیشتره برای برنامه نویس های C++

  • من نظرم رو جاواست. شاید چون تخصص خودم جاواست اینو میگم، اما خب براش دلایلی هم دارم:

    دسکتاپ: با جاوا میتونی یه برنامه بنویسی و روی تمام سیستم عامل ها ران کنی. اگر مشکلت اینه که کاربر برای اجرای نرم افزارت به چیز دیگه ای نیاز داره ( jre )، میتونی اونو تو فایل نصب برنامه قرار بدی تا همراه برنامه‌ت نصب بشه.
    موبایل : برای اندروید که خب بهترین تکنولوژوی همون جاواست که تمام APIهای اندروید هم به همین زبون نوشته شده‌اند.
    وب :‌برای وب چی قدرتمند تر از جاوا ؟ فقط ممکنه اولش کمی سخت باشه ( همین دلیل باعث میشه من خودم برای توسعه برنامه های ساده تحت وب php رو انتخاب کنم ) اما خب وقتی که یاد بگیریش همه چیز ساده میشه و لذتبخش.

  • سعید

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

  • من قبلا توی این پست در موردش نوشتم. فکر کنم بتونه ایده‌ای رو منتقل کنه.
    به‌فارسی هم ‪‬این‌جا هست.

    البته این پارادایم‌ها وب و متخلفاتش رو به‌طور خیلی محدودی پوشش میدن.

  • مسعود (پرسشگر)

    واو! نظرات غافل گیرم کرد! الان با کلی اسم رو به رو ام که خیلی تصمیم گیری رو سخت کرد!
    اولا خیلی خوشحالم که سوالم رو جای درستی مطرح کردم!
    دوما خدا رو شکر زبان انگلیسی ام از متوسط بالاتره و خیلی نیاز هام رو رفع می کنه من جمله مطالعه مستندات یادگیری زبان های برنامه نویسی!
    سوما من خودم هم همسو با میلاد عزیز فکر می کنم و به این قضیه اگاهم! ولی سختی پیدا کردن همراه در یک شهر کوچیک منو در این تنگنا قرار داده!
    پیشنهادات واقعا عالی بودند! فکر کنم باید یکبار دیگه همه پاسخ ها رو ببینم و روشون فکر کنم! کلی لینک هست و ویدیو که باید ببینمشون!
    ولی اون چیزی که تا حالا نتیجه گرفته ام اینه که اول بهتره از یک پلتفرم شروع کنم و نظر خودم روی وب هست ! اما از طرفی می خوام اون زبانی که باهاش طرح اولیه رو میزنم قابلیت گسترش به پلتفرم های دیگه رو هم داشته باشخ تا بعدا مثلا اگر خواستم برنامه دسکتاپ یا موبایل بنویسم نیاز به یادگیری زبان جدید نباشه! این کل منظور من بود!
    اما نظر محمد عزیز در مورد C++ و ارش عزیز در مورد جاوا هم توجه من رو زیاد جلب کرد!
    در هر صورت از اینکه نظراتتون رو به اشتراک گذاشتید ممنونم! واقعا!
    امیدوارم بودم بتونم ارتباط بیشتری با همه دوستان بگیرم!
    بازهم متشکرم
    اگر اطلاعات بیشتری داشتید و دوس داشتید که با من به اشتراک بگذارید خوشحال میشم
    Mamos98(at)gmail.com

    و یک تشکر مخصوص برای جادی که فردا هم تولدشه!

  • Hadi

    به نظر من شما برو C# یاد بگیر. با سی شارپ برای ویندوز و ویندوز فون که میشه راحت برنامه نوشت. با پلاگین XAMARIN هم میشه توی همون ویژوال بیسیک با سی شارپ برای اندروید و آی او اس هم برنامه بنویسی. کنارش برای سایت ساختن هم میتونی از همین سی شارپی که یاد میگیری تو ASP.Net استفاده کنی.

  • علی امینی

    میتونی با تبدیل شدن به یه کدنویس و برنامه نویس تحت وب به همه ی اینا برسی. پیشنهاد من Node.js هست. Node.js یک زبان سرور ساید هست که از موتور V8 جاوا اسکریپت کروم استفاده میکنه. ابتدا باید جاوا اسکریپت رو یادبگیری و بعد بری سراغ Node.js و برای خروجی کدهاتم میتونی از زبون های CSS و HTML استفاده کنی.
    و برای گرفتن خروجی برای پلتفرم های مختلف باید نسخه ند رو عوض کنی و یه تغییر کوچیک تو فایل اجرایی برنامه بدی.

  • زآبولا؛هآبولا

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

  • من شدیداً به این ایده معتقدم که زبان برنامه نویسی، برای یک برنامه نویس چندان موضوعیتی نداره.
    یعنی اگر یک برنامه نویس جاوا باشید، #C یا php برای شما چیزهای بیگانه ای نیستند، همش چند روز وقتتون رو بگیره که با سینتکس زبان جدید آشنا بشین، اما چیزی که وقت گیر هست آشنایی با پلتفرم هدف و اکوسیستم جدید هست.

    وب، موبایل و دسکتاپ دنیاهای جداگانه ای هستند.
    شما برای اینکه یک وبسایت آبرومند بسازید، باید JavaScript+CSS+HTML رو برای Front-End و یک زبان دیگه مثل پایتون یا PHP… برای Backend بلد باشید.
    خب در سمت Front-end که Twitter Bootstrap کارتون رو راحت کرده (قراره یه وبسایت برای خودت بسازی، نه که با Bootstrap بشی طراح سایت).

    موبایل دنیای دیگری هست با مشخصه های خودش، شما اگر برای یکی از سیستم عامل های مطرح (مثلاً اندروید) برنامه نوشته باشید، استفاده از Objective-C (یا Swift) برای iOS و #C برای ویندوز فون چندان دشوار نخواهد بود. اما خب Xamarin میتونه گزینه ی خوبی در این زمینه باشه که دوستان بهش اشاره کردن، البته تاکید می کنم، اگر میخوای برنامه ی موبایل خیلی خاصی داشته باشی، درنهایت مجبوری بری سمت Native هیچکدوم از فریم وورک های که قابلیت Cross-Platform رو میدن درحال حاضر نمیتونن تمام نیازها رو به خوبی پوشش بدن.

    برای دسکتاپ هم زبان هایی مثل جاوا وجود دارن که به راحتی روی هرسه پلتفرم اجرا میشن، یا ابزارهایی مثل Xojo که همین امکان + Web + iOS رو فراهم می کنن (محدودیت همیشه هست، یادت نره)
    و خب Qt هم که فکر جایگاه خودش رو داره.

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

    من برنامه نویس دسکتاپ میکردم سالها پیش که بیخیالش شدم، و الان تمرکزم روی اندروید هست.
    برای یه پروژه نیاز به وب سرویس داشتم و PHP رو انتخاب کردم (مهم نیست که ازش خوشم نمیاد، مهم اینه که نیاز من رو پوشش میده)، یکماه طول کشید تا وب سرویسم رو نوشتم و یکساله که مدام دارم با PHP کار می کنم.

    طراحی وبسایت رو قبلاً انجام داده بودن و برای من تغییرش خیلی سخت بود، از این وضعیت خسته شدم و تصمیم گرفتم خودم پنل جدید رو بسازم، رفتم سمت Bootstrap و AngularJS و خب انجامش دادم.

    اگر بخوام برای iOS برنامه بنویسم هم قطعاً میرم سمت Objective-C.

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

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

  • عیسی

    یک نکته کوچیک رو تذکر بدم
    اینکه گفته بودی: ‘پس من یک زبان می خوام که نیازی به نصب برنامه اضافی توسط کاربرا نداشته باشه مثل جاوا ‘
    و بعدش گفتی که نظرت به پایتون نزدیک تره، خب پایتون هم مثل جاوا نیاز داره که کاربر برای اجراش یه چیزی توی سیستمش نصب کنه
    و یه توصیه بکنم: هرچی دوست داری یاد بگیر، خیلی سخت نگیر که زبانی که یاد می‌گیری چقدر قابلیت های خفن داشته باشه و چه کارایی بشه باهاش کرد. از تمام زبون هایی که درنظر داری یه برنامه ساده کدباز پیدا کن و کدش رو بخون و ساختار کد هر کدوم که برات جالب تر بود رو انتخاب کن و یادش بگیر. مهمتر از اینکه یه زبون بلد باشی اینه که مفاهیم رو خیلی خوب یاد بگیری، اگه مفاهیم رو خوب درک کرده باشی خیلی راحت می‌تونی مثلا جاوا رو بذاری کنار و با C++ کد بزنی یا سوییچ کنی به پایتون. برای همین من بهت پیشنهاد می‌کنم زبانی رو یاد بگیری که حس کنی ازش خوشت میاد و میتونی خیلی سریع توش پیشرفت کنی و برنامه های عملیاتی بنویسی

  • محبت

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

  • محمد علی

    این خیلی ساده انگارانه ست که آدم فکر کنه با یاد گرفتن یه زبان برنامه نویسی، می تونه همه کاری کنه. اگر اینطور بود که این همه مهندس نرم افزار و توسعه دهنده با مهارت های مختلف وجود نداشت.
    اما به هر حال، توصیه ی من JavaScript هست. اولا زبان اصلی مهمترین پلتفرم دنیا، یعنی وب هست. سمت سرور هم با استفاده از Node.js می تونه استفاده بشه و همونطور هم که قبلا اشاره شد میتونه روی پلتفرم های موبایل با استفاده از Cordova باهاش برنامه ساخت. در کل هم یاد گیریش ساده ست و الان از هر زبان دیگه ای بیشتر resource آنلاین داره و زبانیه که بیشترین محتوای متن باز رو تولید کرده.

    اما در کل، به نظر من هنوز هم بهترین راه واسه اینکه آدم ذهن نرم افزاری پیدا کنه اینه که بشینه C++ یاد بگیره و یکی دو سالی باهاش ور بره، بعدش خودش مسیرش رو پیدا می کنه که چه زبان Abstract تر و ساده تری رو یاد بگیره. اون موقع است که switch کردن بین Java و C# و بقیه ی زبان ها چندان سخت و وقت گیر نیست.

  • مسعود (پرسشگر)

    بله من آشنایی های مختصری با PHP دارم و به خاطر کار کردن با جوملا و وردپرس و طراحی سایت با اونها کاملا با CSS و HTML آشنایی دارم!
    و یه جورایی تصمیم خودم رو گرفتم!
    فک می کنم با توجه به اصل ایده ای که توی ذهنم دارم و تجربه قبلی ام در طراحی وب بهتره اول از وب شروع کنم تا اون موقعی که بتونم حداقل یک Prototype از ایده ام بزنم نفراتی رو پیدا می کنم که بشه برای ساخت برنامه موبایل باهاشون همکاری کرد. شاید هم خودم شروع کردم به یادگیری Native هر پلتفرم! شایدم اصلا زدم به جاوا تا هم یک برنامه اندروید بنویسم هم یک وبسایت!
    اما هنوز هم به خوندن کامنت ها ادامه میدم شاید باز هم نظرم عوض شد و واقعا خوشحال شدم که این جا رو دارم تا یک سوال از خواننده هاش بپرسم!

    و بله طبق تقویم تاریخ های تولد تقویم مایکروسافت که تاریخ هارو برام از فیسبوک ایمپورت کرده فردا 15 ژانویه جادی 37 سالش میشه!

  • میلاد

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

  • سی پلاس پلاس زبانی برای تمام فصول ;)

  • Khashayar

    سلام
    ببين اگر دنبال cross platform دوره تكنولوژي هاي Microsoft حداقل فعلا خط بكش ، اگر performance برات مهم نيست از Python و كتابخانه ي kivy استفاده كن هم سادس هم ميشه با يه مفسر رو همه سيستما از جمله embedded ها اجراش كرد ولي كند و سنگينه چون قسمتي از library همراه برنامه برا موبايل attached مي كنه و كلا زباناي hybridi ام نسبت به native كارايي خوبي ندارن پس نميتوني از يكي ازين زبونا استفاده كني بعد انتظار كارايي در حد native داشته باشي Cordova يا phone gap يا همين kivy ازين دسته زبونان البته من برنامه هايي ديدم كه با hybrid نوشتن و performance خيلي خوبي داشتن ولي روي كامپيوتر اجرا مي شد كه نسبت به يك handheld system قدرت پردازش و ram بيشتري داره ، به نظر من زبون پيشنهادي نيست انتخابيه نسبت به كاري كه مي كني اگر از اول مي خواي شرو كني با c شروع كن يه كوچولو سخته و البته فقطم مختص همون ماشينيه كه روش كامپايل مي گيري ولي بعدش كه ياد گرفتي بطور پيش فرض همه زبونارو بلدي چون اكثرا از c مشتق شدن پس syntax شبيه c و چون memory managment در اين زبان دسه خودته با پيشرفتت تو c بمراتب يك مهندس نرم افزار خوب ميشي چون معماري كد و استفاده از ram تو c برا دوام برنامه خيلي مهمه كه اين امر در handheld system صدق مي كنه .

  • اول از همه من هم نظر همه دوستاني كه گفتن سعي كن زبون مناسب هر پلتفرمي رو ياد بگير رو تاييد ميكنم. پس دنبال همه كاره نگرد.
    خب حتما ميگي پس چيكار كنم. پيشنهاد من اينه. اصلا مهم نيست چي بلد باشي. مهم اينه برنامه نويسي + توانايي ياد گرفتن رو بلد باشي
    مخصوصا تو موبايل اپليكيشن ها، خود زبان نيست كه وقت مي بره. تجربه شخصيم يادگيري زبان swift تو تايم مطالعه دوشب بود.

    البته شروع مهمه، مهمه كه خسته نشي زده نشي و واسه همين من گزينه سي++ رو مناسب نميدونم. پيتون عاليه برو سمتش. نسبتا همه كارست و يادگيريش لذت بخشه.
    دركنار اون جاوا اسكريپت يه must have محسوب ميشه. Nodejs هم همونه تقريبا.
    اگه يه وقت خواستي بري سراغ چيزايي مثل phonegap به جاش اپ هيبريد (وب اپ تو شيكم اپ native ) خودت بساز. محدود تره ولي كراس پلتفرم ترين حالتشه. بستگي به نوع كار داره. الان با angular.js ميشه آپولو هوا كرد.

    البته اگه دو سال بعد مي پرسيدي روم به ديوار ميگفتم #C. همون اصلحه همه كاره اي كه رو خر سواره ( دوتا پست پايين تر) الان توبه كرده تازه فهميدن بايد چيكارش كنن براش تانك خريدن. اپن سورس و مالتي پلتفرم شده زبون كاملي هم هست انصافا خيلي خوبه. ولي الان نه.

  • اول از همه من هم نظر همه دوستاني كه گفتن سعي كن زبون مناسب هر پلتفرمي رو ياد بگير رو تاييد ميكنم. پس دنبال همه كاره نگرد.
    خب حتما ميگي پس چيكار كنم. پيشنهاد من اينه. اصلا مهم نيست چي بلد باشي. مهم اينه برنامه نويسي + توانايي ياد گرفتن رو بلد باشي
    مخصوصا تو موبايل اپليكيشن ها، خود زبان نيست كه وقت مي بره. تجربه شخصيم يادگيري زبان swift تو تايم مطالعه دوشب بود.

    البته شروع مهمه، مهمه كه خسته نشي زده نشي و واسه همين من گزينه سي++ رو مناسب نميدونم. پيتون عاليه برو سمتش. نسبتا همه كارست و يادگيريش لذت بخشه.
    دركنار اون جاوا اسكريپت يه must have محسوب ميشه. بعدش هم Nodejs .
    اگه يه وقت خواستي بري سراغ چيزايي مثل phonegap به جاش اپ هيبريد (وب اپ تو شيكم اپ native ) خودت بساز. محدود تره ولي كراس پلتفرم ترين حالتشه. بستگي به نوع كار داره. الان با angular.js ميشه آپولو هوا كرد.

    البته اگه دو سال بعد مي پرسيدي روم به ديوار ميگفتم #C. همون اصلحه همه كاره اي كه رو خر سواره ( دوتا پست پايين تر) الان توبه كرده تازه فهميدن بايد چيكارش كنن براش تانك خريدن. اپن سورس و مالتي پلتفرم شده زبون كاملي هم هست انصافا خيلي خوبه. ولي الان نه.

  • نکته ای که شرکت ما درمورد یکی از محصولاتش بهش رسیده اینه که تمرکزش رو بزاره توی وب و توی محصولات دیگه تا میتونه از WebView استفاده کنه. پشتیبانی یه برنامه برای اندروید و مک و آی‌فون و ویندوز فون و … خیلی وحشتناکه.
    شخصا کسی رو از نزدیک ندیدم که به صورت جدی از چیزی مثل PhoneGap یا Xamarin و غیره استفاده کنه.

  • geeekfa

    درسته که خیلی از دوستان به درستی اشاره می کنند که ” یاد گیری اصول برنامه نویسی مهمه نه یک زبان خاص ” ، اما به نظر من باید به این نکته مهم نیز توجه کرد که ” هر زبان برنامه نویسی علاوه بر کد ، یک فلسفه هم داره ” .
    زبان برنامه نویسی شبیه دین یا مذهبه . شبیه مکتب و جهان بینیه . به عبارتی بازی فوتبال تو همه جای دنیا به یه شکل بازی میشه . اما آیا مکتب فوتبال آمریکای جنوبی شبیه مکتب فوتبال اروپاست ؟
    اگه syntax زبان های C ، JAVA ، PHP و چند زبان دیگر خیلی به هم نزدیکه ، هی نگیم ” یکیشونو که یاد گرفتی بقیه رو هم به سرعت یاد میگیری ” . اصلا فرض کنید Syntax جاوا و سی شارپ 100% شبیه هم دیگس .آیا نگاه یک جاوا کار و یک سی شارپ کار شبیهه ؟
    من هر دوشو کار کردم ولی جهان بینی ( نگاه برنامه نویسی ) که جاوا به من داد C# نداد .
    درسته جاوا برای اجرا شدن روی هر کامپیوتر به JRE نیاز داره . اما این نقطه ضعف نیست !! . نقطه قوت هم نیست . یه پیش نیازه . همین ! اونقدر هم چیز خفنی نیست که برنامه ریزی های من برنامه نویس رو به هم بریزه و بخوام قید جاوا رو بزنم .
    ” یه بار بنویس همه جا استفاده کن ” یکی از شعار های جاواست . با جاوا برای 1. دسکتاپ 2 . وب 3 . اندروید میشه برنامه نوشت . اگه جاوا رو یاد بگیری ( منظورم فلسفه است نه syntax) اونوقت توهر پلتفرمی میتونی مانور بدی .
    اگه ما ایرانی ها جاوا بلد نیستیم تقصیر جاوا نیست .
    ” گل بی عیب هم خداست ” . جاوا هم مشکلات خاص خودشو داره مث هر زبان دیگه ای .
    در مورد RIA ( Rich Interface Application) هم تکنولوژی JavaFX داره به خوبی جلو میره . حتما یه نگاه بهش بنداز .

  • بهسود

    با یک نوع مصالح خانه ساختن، میشه بتونی و یا کاه گلی

  • ATA

    همه گزینه هایی که دوستان معرفی کردند گزینه های خوبی هست.
    ولی به نظر من گزینه های اصلی پیش روی شما Java , Python و Qt هستش.من جاوا کار کردم.یادگیریش آسونه .روی همه پلتفرم ها هم کار میکنه.ولی یه چیز کلی بگم اینکه زبانهای چند پلتفرمی معمولا سرعت اجرای پایینی دارن چون به اصطلاح Native نیستند.البته کیوت ++C از این قضیه مستثناست ولی به دلیل کمبود منابع آموزشی و جامعه کوچیک برنامه نویسیش یادگیریش سخته.ولی اگه یاد بگیری تقریبا آچار همه کاره میشه برات.
    چیزی که شما خواستید جواب دادنش سخته.مثلا اگه جاوا برای دستکتاپ رو یاد بگیری برای برنامه نویسی با وب مجبوری یه چیزایی یاد بگیری که به اندازه یادگیری یه زبان جدید وقت میبره.
    میدونم وسط ۱۰۰ راهی موندی نمدونی کدوم زبان مناسبه ولی میتونی به برنامه های چند پلتقرمی که الان دارن استفاده میشن مثل تلگرام یا وایبر نگاه کنی و ببینی از چه زبانی استفاده کردند.
    البته یه گزینه دیگه هم ” PHP Desktop” هست.

  • شاهد

    در تشکر از همه‌ی دوستانی که نظر دادن، و مهم‌تر از همه خود جادی، نمی‌شه حق مطلب رو ادا کرد واقعاً. من به عنوان یه تازه‌کار و یه علاقه‌مند از همه تشکر می‌کنم.
    من از چند ماه قبل به هسکل علاقه‌مند شدم و شروع به یادگیری‌ش کردم. علاقه‌م هم در گذر زمان مدام بیشتر شده. ممنون می‌شم اگه دوستان نظری در مورد این زبان دارن هم بنویسن.

  • سلام. از همه دوستان و مخصوصا جادی ممنونم. این کامنت برای تشکر و پیگیری احتمالی ادامه کامنت هاست :D
    :)