# اخبار و اعلانات > گفتگوی عمومی کامپیوتر و فناوری اطلاعات >  کدام زبان برنامه نویسی را ترجیح میدهید؟

## NASA's Spaceman

سلام به همگی
دوستان میخوام بدونم برا چه نوع پروژه هایی کدوم زبان برنامه نویسی رو به بقیه ترجیح میدین؟
با سپاس

----------


## Morteza-76

بستگی به کار و هدف پروژه داره
از نظر من :(تو حوزه دات نت)
سیستمی و کاربردی : C#‎‎‎‎‎‎‎
کاربردی : vb.net
سیستمی : C++‎‎‎‎‎‎‎
با بقیه آشنایی ندارم  :لبخند گشاده!:

----------


## NASA's Spaceman

ممنون از نظرت دوست عزیز
با سپاس

----------


## arash691

تحت دسکتاپ ( سیستم عامل ویندوز ) : C#‎‎‎‎.NET
تحت وب : php
موبایل اپلیکیشن : java 
بازی : ++C
------------------------------
اصلا" به یاد کیو تی نبودم !!! بازی + اپ موبایل + سوکت پروگرمینگ + و ... کلا" خداس  :لبخند گشاده!: 
جاوا بیشتر واسه امنیت اونم تو کارای بانکی یا برنامه نویسی تراشه های هوشمند ( کارت اعتباری ) 
جالب تر از همه اینه که همه ی اینا رو با ++C  میشه انجام داد ... یعنی قدرت این زبون بی نهایته !

----------


## NASA's Spaceman

مگه با C#‎ نمیشه بازی ساخت؟
با سپاس

----------


## hadi0x7c7

من با اینا تا حالا کار کردم
C واسه میکروکنترلر
C++‎ هیچی
Java اونم دسکتاپ، وب هم یه حدودایی کار کردم
C#‎ واسه دسکتاپ(اینو تازه شروع کردم)
pytho توی درس مبانی ولی توی خارج شدیدا کاربرد داره مخصوصا طراحی سایت با جنگو
perl دیگه قدیمی شده پایتون اومده جاش 
دلفی، VB و J# هم تاحالا ندیدم.
F#‎ هم یه زبان functional هست که زیاد اینجا کاربرد نداره ولی برنامه هایی که خیلی پارالل بودن توشون مهمه رو با این زبانای تابعی مینویسن که اونم اینجا خیلی کم کاربرد داره ولی تجربه جالبی هست کار با هر کدوم از زبانهای تابعی( پیشنهاد من Scala(

----------


## NASA's Spaceman

ممنون از نظرات و رای هاتون تا الان
من خودم میخوام فقط نرم افزار های تجاری بسازم و هوش مصنوعی کار کنم، به همین خاطر زبان C#‎ رو به همه ی زبونا ترجیح میدم
;)

----------


## مهدی اسماعیلی

*فقط Java*  :قلب: 
تا اونجایی که من کار کردم و میدونم، جاوا در ساخت برنامه های دسکتاپ (ویندوز-لینوکس-مک و...)، اندروید، بازی سازی (Unity)، وب و ... کاربرد و توانایی داره.


در ضمن، شما الان این تاپیک را توی بخش C#‎‎‎‎‎ ایجاد کرده اید و طرفدارای سی شارپ اینجا بیشتر هستند  :لبخند گشاده!:  بهتر بود این بحث را در یک مکان عمومی تر مطرح میکردید  :لبخند گشاده!:

----------


## Mousavmousab

تو ساخت برنامه های دسکتاپ هیچ موقع Java رو با #C مقایسه نکن. چون #C واقعاٌ سرعت ساخت پروژه بالاتره و همچنین کنترل های خوبی هم داره+ خیلی از دوست های خوب که همشون سی شارپ کارن و اگه مشکلی داشته باشی همه هواتو دارن.
حالا توی Java کی هست کمکت کنه؟ در مقایسه با سی شارپ خیلی کم هستند.

البته با این حال Java جای خودشو داره.

----------


## NASA's Spaceman

میشه یکم درباره java توضیح بدین؟
من چیزی درموردش نمیدونم 
و این تاپیک هم تو تمام تالار ها برگزار میکنم تا رای ها و نظرات کلی رو بدست بیارم
با سپاس

----------


## سوداگر

ویندوز (پروژه های کوچک و متوسط) و لینوکس => Qt
تحت وب => PHP و یکی از فریمورکهای  CI , Yii , laravel
موبایل Android , ios => باز هم Qt
البته اگه زمان به عقب برمی گشت فقط میرفتم سمت جاوا، حتی حاضر بودم برنامه های دسکتاپ رو هم با جاوا بنویسم  :لبخند گشاده!: 
ولی خب سرنوشت را نمیشود از سر نوشت.



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


 3Billion Devices run Java

----------


## NASA's Spaceman

> 3Billion Devices run Java


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

----------


## سوداگر

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


دات نت هم 10-12 سال سابقه داره که زمان کمی نیست اون هم برای شرکت بزرگی مثل ماکروسافت!

----------


## NASA's Spaceman

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

----------


## alireza es

> ممنون از نظرات و رای هاتون تا الان
> من خودم میخوام فقط نرم افزار های تجاری بسازم و هوش مصنوعی کار کنم، به همین خاطر زبان C#‎‎‎‎ رو به همه ی زبونا ترجیح میدم
> ;)


C#‎‎‎ هیچ برتری به جز راحتی نسبت به C++‎‎‎ نداره.دقت کن هیچ برتری.نه پرفمنس،نه قدرت(هیچ کاری نیست که با C#‎‎‎ بشه انجام داد و با C++‎‎‎ نشه ولی برعکسش درست نیست)از
لحاظ پلتفرم،از لحاظ .....
اگه به دنبال راحتی هستی C#‎‎‎ کار کن.C#‎‎‎ به قدری راحت هست که یه بچه 10 ساله میتونه توش فوق حرفه ای بشه!

----------


## Pis7Aller

> مگه با C#‎‎ نمیشه بازی ساخت؟
> با سپاس


اولا من خودم #C را ترجیح میدم به دلیل سرعت بالا و بهینه بودن برنامه هایی کهبا این زبان می نویسم  . ثانیا نوشتن game با #C مشکلات اساسی داره (البته منظورم به صورت اسکریپت انجین ها نیستش . منظورم کار کردن با DirectX هستش) چون زبان manage شده است و امکاناتی که به عنوان سود برای این زبان به حساب میاد تو زمان نوشتن بازی به شدت به ضررش تموم می شه از جمله این ها میشه به garbage collector اشاره کرد .

----------


## omidbizdotcom

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

scalaceylon

http://www.playframework.com/
http://ceylon-lang.org/
http://www.scala-lang.org/
http://akka.io/

----------


## arash691

> مگه با C#‎‎ نمیشه بازی ساخت؟
> با سپاس


چرا که نه ... میشه . ولی ++C از سرعت و قدرت بالاتری برای ساخت موتورهای بازی برخورداره ... بعلاوه قابلیت اجرا برای هر سکو هم مهمه

----------


## NASA's Spaceman

> C#‎‎‎‎ هیچ برتری به جز راحتی نسبت به C++‎‎‎‎ نداره.دقت کن هیچ برتری.نه پرفمنس،نه قدرت(هیچ کاری نیست که با C#‎‎‎‎ بشه انجام داد و با C++‎‎‎‎ نشه ولی برعکسش درست نیست)از
> لحاظ پلتفرم،از لحاظ .....
> اگه به دنبال راحتی هستی C#‎‎‎‎ کار کن.C#‎‎‎‎ به قدری راحت هست که یه بچه 10 ساله میتونه توش فوق حرفه ای بشه!


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

----------


## Jarvis

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

روز خوش

----------


## alireza es

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


دوست من میشه بگی ویندوز توی ویژگی های C++‎ چی کار میکنه؟C++‎ حتی توی FreeBsd هم کار میکنه چه برسه تو لینوکسو مک و ....
ویندوز ویژگی و محدودیت C#‎ هست(البته توی لینوکس یه زبان هست به نام mono که سینتکس و محیط مشابه C#‎ داره)
منظورت از نرم افزار تجاری چیه؟

----------


## NASA's Spaceman

نرم افزار برای شرکت های مختلف
و والا چیزی که من شنیدم میگن ویندوز رو با C++‎ نوشتن از کلی آدم پرسیدم و اینو بهم گفتن حالا اگه جریانش چیز دیگست خب ندارم
با سپاس

----------


## بابک.م.

> سلام به همگی
> دوستان میخوام بدونم برا چه نوع پروژه هایی کدوم زبان برنامه نویسی رو به بقیه ترجیح میدین؟
> با سپاس


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

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

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

----------


## BORHAN TEC

> البته توی لینوکس یه زبان هست به نام mono که سینتکس و محیط مشابه C#‎‎ داره


mono زبان برنامه نویسی نیست. بلکه یک فریم ورک هست مثل .net و ... . زبانهای مختلفی هم وجود داره که میتونه از mono استفاده کنه مثل C#‎ و Oxygene و زبانهای دیگه.

----------


## NASA's Spaceman

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

----------


## NASA's Spaceman

امار کلی که توی کلیه تالار ها تا به الان گرفتم این هست
C#‎ =23
VB = 20
Java=11
C++‎=4
Delphi=4
python=3
perl=1
C=1
F#‎=0
J#=0
با سپاس

----------


## us1234

چرا توی نظر سنجی اسمی از PHP قدرتمندترین زبان  تحت وب نیست !!!!! ؟؟

----------


## NASA's Spaceman

چون من این تاپیک رو برای زبان های وب ایجاد نکردم و امیدوارم متوجه منظور من شده باشین
فقط و فقط بحث بازی سازی و نرم افزار تجاری و سیستمی هست
با سپاس

----------


## behnam404

به دلیل حوضه کاری خودم به C++‎ رای دادم اما برای کارای دیگه ممکنه سی شارپ بهتر باشه . بستگی به نوع برنامه داره

----------


## سوداگر

> فقط و فقط بحث بازی سازی و نرم افزار تجاری و سیستمی هست


خوب این همون چیزیه که Qt در همه اون ها به خوبی استفاده میشه. میدونم Qt یک فریمورکه و زبان نیست! اما C#‎‎‎‎.Net و VB.Net هم با فریمورک دات نت قدرت میگیرند. بنابراین بهتر بود Qt رو هم اضافه میکردید. بازی Need for speed بود که دوستان رد پای Qt رو درش پیدا کردند. قدرت Qt در بازی سازی
برنامه سازی تجاری هم خیلی خوب عمل میکنه و در ویندوز و لینوکس قابل استفاده است و با QML میشه خیلی از کارهایی که با WPF انجام میشه رو انجام داد و کارهای سیستمی که با ++C انجام میشه هم قابل استفاده است و در نسخه 5.2 اون امکان برنامه نویسی برای اندروید و ios هم اضافه شده. درسته Qt در برنامه سازی تجاری حرف اول رو نمیزنه ولی لااقلش بعد از دلفی که هست! اگه قرار باشه 3 پارامتری که گفتید رو همزمان مد نظر داشته باشیم چی از Qt بهتر!

----------


## NASA's Spaceman

میشه بگین این qt چی هست؟
اولین باره که اسمش رو میشنوم
با سپاس

----------


## سوداگر

به بخش برنامه نویسی Qt و هم خانواده هایش مراجعه کنید و تاپیک زیر هم میتونه مفید باشه:
https://barnamenevis.org/showthread.p...AF%D8%A7%D9%85

https://barnamenevis.org/showthread.p...D8%B1%D9%85-Qt

داکیومنت در سایت رسمی Qt:
http://qt-project.org/doc

----------


## NASA's Spaceman

ممنون
دوستان لطفا هم رای بدین و هم نظرتون رو بگین
با سپاس

----------


## one hacker alone

یک زبان برای تمام عمر-------------------------> +   +   C

----------


## NASA's Spaceman

دوستان منتظر بقیه نظرات هم هستیم
با سپاس

----------


## NASA's Spaceman

دوستان لطفا نظرات بیشری بدین
با سپاس Spaceman

----------


## mahdikind

سوالتون درست نیست....
هر زبانی یه خاصیتی داره که بسته به اوون پروژه ای که قراره انجام بشه مشخص میشه کدوم بهتره.
من خودم نظرم اینه که برای کارهای مختلف زبان های مختلفی هم بوجود آمدند...
می تونید به سایت زیر برید درباره ی زبان های مختلف برنامه نویسی نوشته        http://www.ithi.ir/?cat=3

----------


## asdasd123123

وب -> php
موبایل -> جاوا
بقیه موارد -> C++‎

----------


## NASA's Spaceman

> وب -> php
> موبایل -> جاوا
> بقیه موارد -> C++‎‎


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

----------


## asdasd123123

قدرتمندترین زبان از لحاظ پرفرمنس سی پلاس پلاس است ولی در ایران نسبت به php و java بازار خوبی نداره. الان پول توی اندروید هست و زبان برنامه نویسی اون جاوا هست. با زبون های دیگه هم میشه واسه اندروید کد زد ولی دردسر زیاد داره.
شما فرض کن یه برنامه خیلی خوب ساختید و در کافه بازار (فروشگاه برنامه) با قیمت 3000تومن گذاشتید. 3میلیون کاربر کافه بازار برنامه شما رو میبینن و اگه خوب و کاربردی باشه میخرنش و معمولا برنامه های خوب رو خوب میخرن. (البته سی درصد مبلغ فروش به کافه بازار میرسه ولی بازم کلی پول میشه درآورد اگه ایده های خوب داشته باشید) در ضمن همه شرکت ها به دنبال برنامه نویس اندروید هستند و راه های زیادی برای پول درآوردن از اندروید وجود داره.

----------


## asdasd123123

برای آشنایی مقدماتی با جاوا و اندروید میتونید به سایت نردبان مراجعه کنید.

----------


## NASA's Spaceman

دوستان منتظر نظرات بیشتر هستم
با سپاس Spaceman

----------


## sali300

*خوب به نظر من C#‎‎‎‎‎
*

----------


## MILAD1992

تو حوزه ویندوز، C#‎.NET , vb.NET کار کردم. بزرگترین فرقشون تو syntaxشونه . . . به نظرم برنامه نویسی با vb.NET راحت تر و با C#‎.NET اصولی تره.
تو حوزه وب هم بنده php رو بعنوان یک زبان قدرتمند میشناسم ولی فقط یک دلیل هم کافیه تا سمت php نرم و برم سمت ASP.NET ، اون هم وجود پشتیبانی به اسم ماکروسافت هست. فکر نمی کنم سایتی باشه که با php بشه طراحی کرد و با ASP.NET نشه و برعکس. 
اینایی که گفتم نظر شخصی خودم بود . . .
با python و perl کار نکردم ولی علاقه شدیدی به یادگیری JAVA دارم و تو اولین فرصت میرم سمتش

----------


## NASA's Spaceman

بله PHP زبان قدرتمندی هست منتها فقط در حد وب نویسی
و به نظر من اگه قدرت  زبان PHP در حد سی شارپ و یا زبان هایی مثل این برسه میتوه حسابی بترکونه
;)
با سپاس Spaceman

----------


## mohamad_torabi

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

----------


## tiroos

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

----------


## kavayo

به نظر من :
برنامه های ویندوزی با ظاهری ساده تر :C#‎
برنامه های ویندوزی پیشرفته :wpf
برنامه های تحت وب :asp.net mvc و php
برنامه های گرافیکی :C++‎

----------


## Amir 2010a

زبان های استاندارد و مولتی پلتفورم رو انتخاب می کنم 
برای وب فقط PHP 
فعلا جاوا هم وضعیت زیاد جالبی نداره به خاطر امنیتش 
اما به نظر من پایتون و Qt   آینده بسیار خوبی خواهد داشت 
من به خاطر وقتی که برای یادگیری  Silverlight - WPF  گذاشتم پشیمونم  بنابراین دیگه سراغ فناوری های مایکروسافت نمیرم  هرگز 
هر چند با کم شدن نقش PC  و اقبال مردم به وسایل HanhHeld   و سیستم عامل های اندروید و IOS   ویندوز هم جایگه خودشو از دست خواهد داد

----------


## darknes666

> من به خاطر وقتی که برای یادگیری  Silverlight - WPF  گذاشتم پشیمونم  بنابراین دیگه سراغ فناوری های مایکروسافت نمیرم  هرگز 
> هر چند با کم شدن نقش PC  و اقبال مردم به وسایل HanhHeld   و سیستم عامل های اندروید و IOS   ویندوز هم جایگه خودشو از دست خواهد داد


فعلا که بیل گیتس ثروتمند ترین فرد دنیاست.از طرفی تا صنعت بازی سازی هست ویندوزم هست.خیالت تخت.
کی گفته نقش pc کم شده؟
یه سری به یوتیوب بزن میفهمی که نقش pc داره کم میشه یا داره به سرعت جلو میره.
شما بخوای هم طرف بعضی از فناوری ها نمیتونی بری.
مثل xbo و کینکت چون اصلا بودجش برات به صرفه نیست.شما داری cpu های کامپیتور و کنسول های بازی رو با handheld مقایسه میکنی؟ :قهقهه: 
اصلا قابل مقایسه نیست.تا بازی هایی مثل gta v و wolfenstein و watch dogs هست کامپیوترم هست خیالت راحت باشه.
متن باز بودن لینوکس دلیل بر شکست ویندوز نیست.

یه چیزی هم بگم که از این تاپیکها پره تا دلت بخواد میتونی پیدا کنی:
https://barnamenevis.org/showthread.p...A8%D8%A7%D9%86

https://barnamenevis.org/showthread.p...A8%D8%A7%D9%86

https://barnamenevis.org/showthread.p...8C%D8%B1%D9%85

https://barnamenevis.org/showthread.p...8C%D8%B1%D9%85

https://barnamenevis.org/showthread.p...8C%D8%B1%D9%85

https://barnamenevis.org/showthread.p...8C%D8%B1%D9%85


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

----------


## NASA's Spaceman

تنها چیزی که هیچ وقت از مد نمیفته تو عرصه تکنولوژی فقط دو چیز هستن
1-کامپیوتر
2-ویندوز ماکروسافت
تا جایی که من اطلاع دارم اکثر مردم جهان از ویندوز استفاده میکنن به جز شرکت های خیلی مهم
و کامپیوتر هم هیچ وقت از بین نمیره یا جاش رو به هیچ کنسولی هم نمیده فقط داره پیشرفت میکنه و اونم یه پیشرفت فوق العاده سریع
و اگه قرار بود کامپیوتر از مد بیفته با چی برنامه بنویسیم و با چی کار های فوق حرفه ای انجام بدیم؟
کارایی که cpu کامپیوتر میکنه هیچ وسیله ای نمیتونه انجام بدم و درک این موضوع فقط زمانیهست که شما بری و یه کتاب 300 صفحه ای درباره Cpu بخونین تو کامپیوتر
و تازه شرکت اینتل توی سال 2020 تا 2025 طبق چیزی که من از سایت خودشون قبلن خونده بودن میخوان کاری کنن که شرکت هایی که کنسول و گوشی و... میسازن به هیچ عنوان نتونن Cpu به قدرت کامپیوتر بسازن و دو سال پیش حرف از این میزد که تراشه ای توی مغز تا 10 یا 20 سال آینده تو مغز انسان میخوان قرار بدن که شما نیاز به موس و کیبورد نداشته باشی و با مغزت همه این کار ها رو انجام بدی
با سپاس Spaceman

----------


## NASA's Spaceman

دوستان لطفا نظرات خودشون رو اینجا بفرستن
و تو نظرسنجی هم لطفا شرکت کنید
با سپاس Spaceman

----------


## کامبیز اسدزاده

سلام


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

قبلا در این بخش توضیحاتی در رابطه با هیولای زبان ها توضیحاتی داده ام : http://forums.serverelite.net/topic/...C%D9%85%D8%9F/

حالا برای راهنمایی شما دوست عزیز باید بگم بنده 10 - 11 سالی هست تو صنعت برنامه نویسی و رشته مهندسی کامپیوتر فعالیت میکنم و تقریبا با تمامی زبان ها کار میکنم.

حالا برم سر اصل مطلب :

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

فکر میکنم علاقه خاصی به شرکت NASA دارید و باید بگم همین شرکت از C++‎‎‎‎‎ استفاده میکنه این رو میشه از نمونه سورس های Open تشخیص داد : http://code.nasa.gov/language/c-2/ البته از Py و Java هم استفاده میکنند ولی نه به اندازه C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ حالا فرض کن بیان یک پردازش Multi Threading رو با C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ پیاده سازی کنند چه افتضاحی به بار میاد اونقت ! حالا چرا C++‎‎ نسبت به تمامی زبان ها برتری داره و لقبش هست هیولای زبان ها ؟ لطفا به این توضیحات هم توجه کنید که قبلا توسط اساتید سابق داده شده و نیازی نیست بنده دوباره توضیح بدم : https://barnamenevis.org/showthread.p...l=1#post407655

و در نهایت به نظر من مایکروسافت و زبان مسخرش C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ مغز همه برنامه نویس های ایرانی رو تسخیر کرده و این یک افتضاحه !
بنده خودم بارها شده دیدم و شنیدم دانشجو یا برنامه نویس مثلا حرفه ای اومده گفته آقا اخه این C++‎‎ با اون محیط کنسول چطوری میشه فرم طراحی کرد وقتی C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ راحت میشه این کار رو انجام داد چرا C++‎‎‎‎‎ !؟ خب یکی نیست بگه آخه مغذ متفکر همین سیاسته که باعث شده مایکروسافت مختو بزنه و جذبت کنه به طرف خودش !

حالا با خودش میشینه فکر میکنه بله یه چیزی طراحی میکنم در حد فوتوشاپ ! 
بهتره این رو قبول کنید و باور کنید که 90% نرم افزار های پر کاربرد و قدرتمندی که بالای چندین هزار دلار قیمتشونه با سخترین و بهترین زبان نوشته میشوند.
تا زمانی که چشمتون رو به دنیا باز نکنید محبوبترین زبان برای شما C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ و کلا محیط دات نت بهترین گزینه خواهد بود در غیر این صورت جایگاه C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ به زیر 5% هم بره باز زیاده براش !

و یک پیشنهاد کاملا صادق و دوستانه : اگر برای شما کیفیت خروجی و هزینه بالا در مقابل ارزش برنامه هستش برید سراغ C++‎‎ که هیچ کار نشدی رو نداره البته اشاره کنم در وب بهترین گزینه PHP هستش که هماهنگی بسیار زیادی با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ رو داره ابتدا سختی میکشید یکمی شبا دیر میخوابید یکمی چشم دردو سر درد میکشید ولی دیگه میشید حرفه ای در حدی که سینه رو میدی جولو میگی من برنامه نویسم !

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

به یک نکته هم اشاره کنم اگه ترس از این دارید که در C++‎‎ طراحی سخته خوشبختانه کتابخانه های قدرتمندی مثل Qt و wxWdigest وجود دارند که خیلی بهتر از .NET میتونید باهاشون کار کنید که در تمامی پلتفرم ها و صنایع نرم افزاری پاسخگو هستند.

حالا هیچکدوم از این حرفهای بنده رو قبول ندارید باز انتخاب با خود شماست فقط این مورد رو از یاد نبرید (بهترین الگو افراد موفق و شرکت های موفق هستند) پس برید ببینید این گزینه ها از چه زبانی در این زمینه استفاده میکنند (Google) بهترین گزینه هستش برید ببینید به تازگی با کتابخانه های IO چی داده بیرون از 0 تا 100 C++‎‎  ! یا برید ببینید مایکروسافت با اینهمه ادعای دات نتی سورس برنامه های رسمیش رو با چی نوشته !!! یا همین اپل همینطور یا از اونور سیستم های یونیکسی و لینوکس تماما بر پایه C/C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ هستند.

یا به تازگی کنسول های قدرتمندی مثل PS4 و Xbox One ببینید سیستم عامل های اینها به چه زبانی هستند !!!

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

نه اصلا برید در همین ایران کشور خودمون برید بانک ملت (شرکت به پرداخت) یکی از شرکت هایی هستش که تو ایران قبولش دارم برید بگید میخوام استخدام بشم در اولین گزینه میگه  C++‎‎ یا Java بلدی ؟!!؟!؟

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

و در نهایت باید بگم بنده با همه این زبان ها کار کردم مخصوصا C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎ که اینهمه طرفدار داره به وضوح کامل و به هر دلیل منطقی میتونم ردش کنم.

پس جواب سوال شما که کدام زبان رو ترجیح میدهید برای من : C++‎‎  و در زمینه وب PHP

موفق باشید.

----------


## pswin.pooya

همون خود مایکروسافت کافیه.
اگه سی شارپ و ... خوب بودن آفیس ، ویندوز و ... رو  بجای C++‎‎‎ با اونها می نوشت. وقتی خود سازنده بیخیال زبان خودش هست دیگه تکلیف معلومه.

کسایی که معمولا با C++‎‎‎ مخالف هستند دو دلیل زیر رو مطرح میکنن:

۱. قدیمیه: باید بگم که اونها فقط turbo c رو دیدن و از نسلهای جدید خبری ندارن و کلا توی تعطیلات برنامه نویسی به سر میبرن و شخصا باید بیخیالشون بشید.

۲. سخته: باید بگم که سختی نه به زبان بلکه به الگو و مدل طراحی ربط داره. اگر دقت کنید فریم ورک Qt از دیزاین کامپوننت بیس مثل C#‎‎‎ و VB و ... استفاده میکنه که باعث شده برنامه نویسی به همون اندازه راحتر بشه.

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

#ifdef DEBUG
#define DEBUG_LOG(__text) debugger::log(__Text)
#else
#define DEBUG_LOG(__text)
#endif

این کد زمانی که برنامه در مد دیباگ کامپایل شه مقدایر log رو در خروجی میاره اما در مد release دیگه تمامی خطوط حذف میشن. که باعث افزایش کارایی در زمان ریلیز و کنترل بیشتر در حالت دیباگ میشه که انجام همچین کارهایی تا اونجا که من  میدونم در زبانهایی مثل C#‎‎‎ غیر ممکن هست ( مگر با کنترل کردن کد به کمک  if)

البته نظیر این موارد زیاده. مورد دیگه کتابخونه ها هستند که تقریبا در C++‎‎‎ برای هرکاری کتابخونه های فوق حرفه ای وجود داره که تنها برخی از اونها به مابقی زبانها پورت میشن. و یا در اکثر موراد تنها warper نوشته میشه.

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

مشکل اصلی در مورد C++‎‎‎ کمبود نیروی فنی در ایران است و بس. یعنی اگر تجربه برنامه نویسهای C#‎‎‎ و ... در ایران بود الان شاید حتی کسی اسمی از زبانهایی مثل C#‎‎‎ نشنیده بود. یه مورد دیگه در مورد C++‎‎‎ که در مورد دات نت صادق نیست. هماهنگ نبودن کتابخونه های بزرگ است که باید کدهای اضافی برای اونها نوشت که البته وحود اون هماهنگی هم باز از نظر عملی غیر ممکن است. مثلا فریم ورک های مختلف روشهای خودشون رو برای باز کردن فایل دارن اما باز همون فریم ورک ها راه هایی برای هماهنگ شدن باهم فراهم کردن که در بدترین حالت ها پشتیبانی از STL به عنوان واسط است و ...

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

----------


## eshpilen

البته بلد بودن با استفاده کردن تفاوت میکنه. مثلا بنظر من نه تنها سی++، بلکه حتی سی و اسمبلی رو هم باید یاد گرفت. ولی این به این معنا نیست که برای برنامه نویسی از سی یا اسمبلی استفاده کنید؛ شاید بعد از دورهء یادگیری دیگه تقریبا هیچوقت ازشون استفاده نکنید!
این همه هم میگید سی++ سی++، اسمی از سی نمیارید، درحالیکه سی هم خیلی کاربرد و نقش حتی اساسی تر از سی++ داره در دنیای رایانه. بخش اعظمی از سیستم عاملها و برنامه های سیستمی و سرویس دهنده ها با سی نوشته میشن. البته شاید بحث شما فقط در سطح اپلیکیشن نویسی و برنامه نویسان عادی باشه، ولی سی هم همچین بی ربط و بی کاربرد نیست حتی در این حیطه! حتی یک دسکتاپ اصلی لینوکس (که GNOME باشه) و برنامه های کاربردیش با سی نوشته شده و کتابخانه و فریمورک اپلیکیشن نویسی داره.
البته اکثرا اسم از سی نمیبرن بنظرم بخاطر اینکه شیء گرایی نداره، ولی بهرصورت سی هم همچنان زبان مهم و پرکاربردی هست و بنظر من به یادگیریش می ارزه و پایه ایه و دید و توانایی خوبی به آدم میده؛ دیدی که شاید حتی با سی++ هم بدست نیاد. مثلا یکیش اینکه زیاد هم تعصبی نباشیم روی اینکه بگیم حتما و فقط زبان و برنامه نویسی شیء گرا و فکر کنیم فقط به این شکل میشه و باید برنامه های حتی بزرگ و پیچیده رو نوشت و فکر کنیم کد تمیز و سازمان یافته فقط از زمان OOP امکان پذیر شد. برنامه نویسهای قدیمی حتی با اسمبلی هم برنامه های بزرگ و پیچیده خوبی مینوشتن. البته همهء این حرفا به این معنی نیست که بگم از شیء گرایی و زبانهای شیء گرا استفاده نکنیم. فقط خواستم بگم که فکرمون محدود و تعصبی و مطلق گرا نباشیم. مثلا در یه بحثی یکی حرفهای عجیبی میزد در این مورد میگفت در زبانها و برنامه نویسی غیرشیء گرا مدام هر قطعه کدی رو تکرار میکنیم و کاملا قاطی پاتی و از این حرفاس و انگار که تاحالا در دنیا دیگه هیچ روشی غیر از OOP برای جلوگیری از این مسائل وجود نداشته  :متعجب: 

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

----------


## alireza es

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


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

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

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

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

----------


## eshpilen

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


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




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


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



> درباره این که ادم اسمبلی و یا C رو یاد بگیره ولی ازش استفاده نکنه هم زیاد موافق نیستم.
> وقت طلاس شما میدونید چه امکانات و تکنولوژی های زیادی وجود داره که ادم وقتی بهشون نگاه میکنه میگه اووووووف!


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




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


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




> شما میدونید چه فریم ورک های خوبی برای کار با شبکه تو زبان پایتون و C++‎‎‎‎‎‎‎‎‎ هستن؟


چرا نمیدونم!
چند سال پیش Qt رو کامل یاد گرفتم. پایتون هم همینطور.
وبلاگم رو نگاهی بکنی توش در مورد این دو هم مطالبی دارم.




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


این حرفهای کلی و مبهم رو بذار کنار.
کی بوده چی بوده سندش منبعش جزییاتش چیه چرا هدفش چیه. اینا همه کلی مسئله هست و تحقیق میخواد. اغلب نکات خاص مهمی در این بین هست که همینطوری ما نمیدونیم و عاقلانه نیست بدون اطلاع و بررسی، نتیجه گیری و استنباطهای خاص و کلی داشته باشیم.
سیستم عامل نوشتن بهرحال یه کار سطح پایینه. تاحالا هم هرچی من دیدم اکثرا با سی و حتی بخشهای حیاتی که نیاز به سرعت کاملا حداکثری دارن اسمبلی و بخشهایی که کمتر سطح پایین و performance critical هستن و بخشهای جانبی و برونی تر (بخصوص خارج از کرنل) رو گاهی با زبانهای دیگر مثل سی++ و غیره مینویسن (در کل حتی امثال پایتون و جاوا هم در بخشهای جانبی سیستم عاملهای مختلفی استفاده میشن).
نمونه و دلیل غیر از این داری واضح با دلیل و سند بیار، نه اینکه یه ادعای کلی و مبهم همینطوری بندازی وسط.
پاسکال هم اون ویژوال پاسکال/دلفی هست که ویژواله و عمدتا برای اپلیکیشن نویسی/GUI. پاسکال اصلی خودش یه زبانی قدیمی هست مثل سی که توی دانشگاه هم مقداری به ما تدریس کردن (البته من ازش خوشم نمی آمد و سی رو ترجیح میدادم). اون پاسکال سینتاکسش با سی فرق داره ولی همچنان زبان سطح پایین تر و کم و بیش سیستمی هست تاجاییکه میدونم. پرفورمنسش هم شاید به سی نرسه ولی بد هم نیست.
ضمنا یوقتا یه چیزایی رو با زبانهای دیگری پیاده سازی میکنن گاهی اهداف خاص دارن. بطور مثال یادمه یه مفسر پایتون نوشتن با خود زبان پایتون!! حالا کاربرد چیه، بنظرم بدیهی است که برای کاربردهای عادی و روزمره نیست چون پرفورمنش پایتون همینطوری طبیعتا چون زبان تفسیری هست یک مقدار کمه چه برسه به اینکه خود مفسرش هم بجای سی با خود پایتون نوشته بشه. کاربردش احتمالا تحقیقات خاص و توسعه و تست و آزمایش های مربوط به توسعه خود پایتون هست مثلا.

----------


## eshpilen

اتفاقا همین چند وقت پیش نیاز داشتم یه برنامه ای رو بنویسم برای یه نیاز مقطعی. برنامش رو هم در همین فروم منتشر کردم: https://barnamenevis.org/showthread.php?455233
نیاز بود برنامه رو با حداکثر سرعت و راحتی بنویسم، چون میخواستم پیش رئیسم عزیزتر بشم و نیاز و شرایط کار طوری بود در یه مقطع زمانی کوتاهی باید برآورده میشد و اگر دیرتر میشد ممکن بود دیگه فایده ای نداشته باشه. ضمنا چون برنامش تقریبا یک بار مصرف بود، میخواستم کدنویسی اون حداقل دشواری رو داشته باشه و هرچه زودتر و راحتتر تموم بشه.
در میان زبانهایی که بلد بودم خیلی سریع به این نتیجه رسیدم که PHP از همه بهتره واسه این کار. هرچند برنامش عملا یک برنامهء دسکتاپ بود که بصورت لوکال استفاده میشد. خلاصه آخر با PHP نوشتم و از مرورگر و HTML برای اینترفیس استفاده کردم که مزیت بزرگی بود چون نیاز به صرف وقت و زمان زیاد برای طراحی و پیاده سازی یک اینترفیس گرافیکی رو حذف میکرد. یعنی حتی اگر با محیط ویژوال و امثال سی شارپ هم میخواستم این برنامه رو درست کنم سخت تر بود و زمان بیشتری میبرد نسبت به نوشتن کدهای HTML و استفاده از امکانات عمومی مرورگر برای اینترفیس.
ضمنا برنامه ای که نوشتم هم کاملا کند کار میکنه و مثلا کلیک میکنی save کنه کلی طول میکشه و در این مدت مرورگر هنگ میکنه، ولی بهرحال کار من رو فقط همین روش راه می انداخت! نه سی++، نه جاوا، نه حتی پایتون، نه دلفی، ... هیچکدام نمیتونستن سرعت و راحتی برنامه نویسی رو بقدر کافی که PHP+HTML کارم رو راه انداخت راه بندازن.
پس حتی یه وقتایی هست که پرفورمنس جزو اولویت های آخره و فقط وقتی اونقدری کم باشه که عملا نشه از برنامه هیچ استفاده ای کرد، بحساب میاد. اما خب اگر من بخوام این برنامه رو بصورت یک برنامهء تجاری یا عمومی و برای کارهای خیلی بیشتر و روزمره ای در آینده استفاده کنم، احتمالا باید به زبان دیگری منتقلش کنم یا حداقل پرفورمنس اون رو یجوری بحد قابل توجهی بیشتر کنم. بهرحال PHP این وسط نقش یک ابزار برای Prototype درست کردن برای این برنامه رو ایفا کرده و لزوما اینطور نیست که حتی با چنین هدفی آدم بیاد و برنامه رو از اول در زبان های دیگری بنویسه. کاملا ممکنه در کل بهینه تر باشه که بیای و مثلا اول با PHP یا پایتون بنویسی و بعدا به زبانهای دیگری منتقل کنی؛ چون بار اول که نوشتی و به الگوریتم و نکات مهم کلی مسلط شدی، بعدش منتقل کردن به زبانهای دیگر خیلی راحتتر میشه. اما اگر از اول بخوای در یک زبان سخت و به همراه حجم و پیچیدگی کد بیشتر بنویسی، ممکنه کارت خیلی مشکل تر بشه و زمان بیشتری ببره و حتی یجورایی بر اثر عوامل دیگر به شکست منجر بشه.
پس این نیست که همیشه بخوایم روی پرفورمنس پافشاری کنیم. باید عاقلانه عمل کرد. اینکه سی++ بلد باشی بگی برای همیشه و هر شرایط و هر برنامه ای کافیه، بنظر من فکر چندان عاقلانه ای نیست. من اون برنامه رو حتی با Qt هم میخواستم بنویسم بعید میدونم میتونستم به اون سرعت و راحتی PHP و HTML حتی نزدیک هم بشم. شاید اونقدر دشوار و طولانی میشد که عملا منصرف میشدم یا به موقع تموم نمیشد.

----------


## eshpilen

یه برنامه نویس باید توی جعبه ابزارش همه جور ابزاری داشته باشه.
آچار فرانسه، چکش، آچار معمولی، دریل، سوهان، اره، ...
تازه اونم احتمالا با چند سایز و چند مدل و از چند مارک!!
همینطور شما در برنامه نویسی باید چند زبان بلد باشی. فقط سی++ بهینه نیست. البته اگر میخوای واقعا همه فن حریف و ابرقدرت بشی و در هرجایی و هر شرایطی بتونی هر کاری رو راه بندازی.
بیا یه برنامه رو اول با پایتون Prototype کن و فعلا کارت رو راه بنداز، بعد نهایتا و در آینده میتونی حتی به مرور به سی++ منتقلش کنی.
این چیزی نیست که در دنیا ناشناخته باشه و تاحالا انجام نشده باشه و جواب نداده باشه!
اصلا همین PHP و HTML و محیط مرورگر بنظر من انگار در خیلی موارد از پایتون هم بهتره واسه Prototype درست کردن!!
همینطور خود برنامه نویس هم باید همه چی بلد باشه تا بتونه همه کار بکنه. وگرنه مطمئن باش فقط اینکه در جعبه ابزارش همهء این ابزارها رو داشته باشه به تنهایی کافی نیست، همونطور که یک فرد صرفا با داشتن همه نوع ابزار نجاری و چوب نجار واقعی نمیشه و نمیتونه همه چیز رو با کیفیت لازم بسازه. باید خودش هم دانش و مهارت لازم رو داشته باشه.

----------


## eshpilen

فکر کن میخوای یه برنامهء خاص رو بنویسی.
اگر با سی++ بنویسی 5 ماه طول میکشه، با پایتون 1 ماه. اما دست آخر بالاخره باید/میخوای با سی++ باشه (شاید یک دلیلش پرفورمنس باشه).
بیا اول با پایتون پیاده سازی کن، تست کن، بهش مسلط شو، این میشه یک ماه. بعد که میخوای منتقل کنی به سی++، میبینی بجای 5 ماه در 3 ماه میتونی منتقل کنی، چون در پایتون قبلا نوشتی و تست کردی و بهش احاطه پیدا کردی و الگوریتم و منطق و نکات کلی و مهم رو در دست داری. انگار که یک کتاب رو میخوای بجای اینکه از اول  تالیف کنی میخوای فقط ترجمه کنی.
1+3=4 یعنی یک ماه این وسط در وقت خودت صرفه جویی کردی. یعنی 20% میتونی به بازدهی عمر خودت اضافه کنی! بده؟
حالا شما چقدر وقت گذاشتی برای یادگیری پایتون، فکر نمیکنم با اون 20% در کل طول عمرت برابری بکنه.

درسته یه زبانهایی مثل سی و اسمبلی کاربرد مستقیم خیلی کمتری دارن، ولی بازم میگم که اون دانش و بینش و قدرت ذهنی که با اون ریاضت بدست میاد در طول عمرت بهت همینطوری بازدهی و مزیت میده و در کل جبران میکنه و از هزینهء یادگیریش بالا میزنه.

البته خیلی آدما کلا وقتش رو ندارن اصلا که این همه مایه بذارن! ولی اگر داشته باشن، اینقدر وقت داشته باشن انگیزه و همت و جدیت و خورگی رو داشته باشن، بنظر من حیف و ضرره که یاد نگیرن.

ضمنا اون همه تکنولوژی که شما میگی واسه خوره هایی مثل من چیز زیادی نیست و اگر دنبال یادگیری پایه ای کامل نبودیم میتونستیم پیش از این همش رو قورت داده باشیم!

----------


## eshpilen

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

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

----------


## omid_kma

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


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




> ممنون از نظرات و رای هاتون تا الان
> من خودم میخوام فقط نرم افزار های تجاری بسازم و هوش مصنوعی کار کنم، به همین خاطر زبان C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎ رو به همه ی زبونا ترجیح میدم


بنظر من #C بدترین انتخاب برای هوش مصنوعی هستش ! پروژه های open source ای که مربوط  به هوش مصنوعی هست  اکثرا یا با ++C نوشته شدن یا Java  (پردازش تصویر اکثرا با ++C و NLP , Data mining با جاوا ) که بعضیاشون فقط یک wrapper برای #C دارن که هیچ وقت wrapper یک کتابخونه از نظر performance  و update بودن به خودش نمیرسه و بعضی هاشون هم پشتیبانی شون قطع میشه مثلا opencv از نسخه های بعدی قرار هست دیگه #C رو پشتیبانی نکنه .

چند تا نمونه مطرح  از این library ها:
http://opencv.org/  زبان ورژن ۱  سی و نسخه ۲ به بعد ++C
http://leenissen.dk/ سی
http://pointclouds.org/ سی پلاس پلاس 
http://www.vtk.org/ سی پلاس پلاس
http://www.oracle.com/technetwork/da...odm/index.html جاوا و سی پلاس پلاس
http://nlp.stanford.edu/software/lex-parser.shtml   جاوا
http://www.csie.ntu.edu.tw/~cjlin/libsvm/ سی پلاس پلاس
http://www.nltk.org/ پایتون
http://vxl.sourceforge.net/ سی پلاس پلاس 
http://openbiometrics.org/ سی پلاس پلاس
http://arma.sourceforge.net/ سی پلاس پلاس
و....

برنامه های مهمی که با ++C/C نوشته شده ودر حال توسعه هستن :‌
photoshop,office,maya,3dmax,chrome,firefox,interne  t explorer,opera,Drop box,evernote,visual studio,internet download manager,kmplayer,vlc media player , SQL,SQLITE ,MYSQL,NOSQL,google map ,.......
اکثر Engine های Game  و بازی ها . زبان های برنامه نویسی مثل python,php ,D,GO,Haskel ,... اکثر سیستم عامل های مطرح مثل ویندوز لینوکس اندروید و... سایت هایی مثل facebook,google,bing ,amazon ,.... اکثر آنتی ویروس ها و ......

فکر کنم  ۹۵٪  برنامه هایی که  من بصورت روزمره استفاده می کنم داخل لیست بالا وجود دارن :)

----------


## alireza es

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


-_-
برای پاسکال >>
http://wiki.freepascal.org/Operating...written_in_FPC
برای  پایتون هم اگه به اون تایپک مراجعه کنین گفتم شنیدم! نگفتم دیدم و  مطمئنم.در ضمن اگه بشه مفسر پایتون که منبع باز هست رو سطح کرنل اجرا کنی  میشه این کارو کرد و بعید نیست!


اما برای حرف های جناب eshpilen دو سه تا نکته میخوام بگم



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


به نظم این مقایسه،مقایسه اشتباهیه .تو با دست خالی نمیتونی برنامه نویسی کنی
در بهترین حالت به یه اسمبلر و ادیتور احتیاج داری.



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


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



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


چرا همه چیزو قاطی میکنین؟
کامپیوتر یه رشته واحد نیست که یه نفر بگه من کامپیوترو خیلی خوب بلدم!!یا باید این کارو کرد که کامپیوترو خوب یاد گرفت.صد ها رشته مختلف داره
من میگم برا برخی رشته ها به اسمبلی نیاز نیست
میشه  بگین برا یه برنامه نویس گرافیک نرم افزار(مثلا کسی که داره از xaml یا  qml و یا .... برای طراحی ui نرم افزار استفاده میکنه)چه نیازی به اسمبلی  داره؟؟؟
یه برنامه نویس وب چه نیازی به اسمبلی داره؟
خیلی از رشته ها بدون اسمبلی کارشون راه میافته و یاد گیری اسملی فقط بهشون نکات جدیدی از لایه های پایین کامپیوتر میده که هیچ توانایی جدیدی براشون به همراه نداره(برا من که نداشت)
من اسمبلی رو تا حدی بلدم.چرا؟چون گول این حرفارو خورده بود.ای کاش به جاش انرژیم رو گذاشته بودم رو چیزای دیگه.الان کلی مطلب و کتاب و ..... جلوم هستن که همشون به یه تکنولوژی خاص پرداخته اند و اگه اسمبلی رو 
اخر و بعد از اینا یاد گرفته بودم توانایی های بیشتری داشتم.به جرات میتونم بگم الان یه برنامه نویس .net توانایی خیلی بیشتری نسبت به من داره

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



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


دقیقا این همه جون میکنم که اینو بگم.
اول باید هدفو مشخص کرد.

----------


## pswin.pooya

> یه برنامه نویس گیم چه نیازی به اسمبلی داره؟


ضرب SSE برای ماتریس به منظور بالا بردن سرعت تا چیزی حدود 1.5 تا 5 برابر:

یه نمونه:
https://gist.github.com/rygorous/4172889


*چند تا از موارد استفاده اسمبلی:*

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

موارد کاربرد اسمبلی زیاده.

----------


## alireza es

> ضرب SSE برای ماتریس به منظور بالا بردن سرعت تا چیزی حدود 1.5 تا 5 برابر:
> 
> یه نمونه:
> https://gist.github.com/rygorous/4172889
> 
> 
> *چند تا از موارد استفاده اسمبلی:*
> 
> ساخت موتورهای JIT برای زبانهای اسکریپت
> ...


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

----------


## pswin.pooya

> فکر نکنم موتور JIT برای زبان های اسکریپتی باشه هاااا
> زبان جاوا، اسکریپتیه؟زبان های اسکریپتی از مفسر استفاده میکنند نه از JIT


زبانهای اسکریپتی یا مفسر دارن یا ماشین مجازی یا اسکریپت رو به کد ماشین با استفاده از JIT تبدیل می کنن. مثلا پیاده سازی جاوا اسکریپت در فایرفاکس از JIT استفاده می کنه.

http://arstechnica.com/information-t...-jit-compiler/


کلا در حال حاضر کاربرد اسمبلی خیلی زیاده اما به خاطر یکسری از مسائل (مخصوصا سمت CPU) مثل خط لوله چند مرحله ای و ... سعی میکنن تا جای ممکن برنامه رو با زبانهای سطح بالا مثل C++‎‎‎‎‎‎‎ بنویسن.

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

یه مورد دیگه اینه که کلا سبک GUI داره تغییر میکنه و فریم ورکهایی مثل دات نت انعطاف خیلی کمی در مقابل GUI نسل جدید دارن.

----------


## eshpilen

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


البته فکر کنم نوشتن بخشهای برنامه ها بصورت پردازش موازی همونقدر یا بیشتر اولویت/تاثیر داره (با توجه به CPU های چند هسته ای که امروزه تقریبا فراگیر هستن)، ولی همین کار رو هم برنامه نویسان به سختی یاد میگیرن و انجام میدن و بقدر کافی ازش بهره برداری نشده.




> یه مورد دیگه اینه که کلا سبک GUI داره تغییر میکنه و فریم ورکهایی مثل دات نت انعطاف خیلی کمی در مقابل GUI نسل جدید دارن.


سبک GUI داره تغییر میکنه یعنی چی دقیقا؟
بعد دات نت چطور و چرا انعطافش در این زمینه کمه؟




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


سعی کن از کلی گویی و مبهم گویی اجتناب کنی، چون بیشتر به درد مغلطه میخوره و برای آدم دقیق و بحث تخصصی نیست.
شما یه حرف کلی/مطلق رو به دیگران نسبت میدی که کسی اون حرف کلی رو نزده، و این بی معناست.
مثلا من جایی بطور کلی نگفتم امروزه کارایی برنامه مهم نیست. این یه حرف خیلی کلی و مبهم و نادقیق و بی معناست و چه من اینو بگم و چه شما برعکسش رو بگی، هیچکدام مسئولانه و بدرد بخور نیستن. چیزی که مهم و دقیقه و کار دشوارتر، تحلیل و تحقیق و اثبات معیارها و موارده بصورت علمی و عملگرایانه و واقعگرایانه، که دست آخر به همون میرسیم که کارایی در هر جایی به هر حدی اهمیت و اولویت اول یا حتی بالایی رو نداره. بستگی به شرایط و نوع و کاربرد برنامه و پارامترهای متعددی داره. برای یه برنامه مهمه، برای یکی دیگه مهم نیست، برای یکی حیاتیه برای یکی غیرحیاتی، برای یکی ارزشمنده و برای یکی دیگه اتلاف وقت و انرژی و منابع (چون میشد اون منابع رو برای اولویت های دیگری که در عمل بازدهی بیشتری خواهند داشت صرف کرد).
هیچ حرف و قانون و قاعدهء کلی و مطلقی در این زمینه وجود نداره!
مثلا فرض کن سالهاست این همه سایت های وب با PHP نوشته شده و داره کار میکنه و کلی سرویس و استفاده به بشریت میده؛ آیا اشتباه شده و باید اینا رو با سی++ مینوشتن؟! مطمئن باش اگر PHP بوجود نمی آمد و بجاش با سی++ برنامه نویسی وب میکردن، اینترنت اینقدر غنی و این همه سایت و امکانات و سرویس رایگان در دسترس همگان نبود و درسته که پرفورمنس بالاتر بود و آلودگی محیط زیست هم کمتر میشد (بخاطر کاهش مصرف برق سرورها!!)، ولی آیا اون بهتر بود یا این؟
خوبی PHP اینکه که دشواری و پیچیدگی و زمان برنامه نویسی وب و هزینه های توسعه رو کاهش میده و به این شکل عدهء خیلی بیشتری میتونن در توسعهء وب و انتشار دانش و ایده ها و خدمات مشارکت کنن. ولی در قبال این راحتی طبیعتا از پرفورمنس مایه میذاره، برق بیشتری مصرف میکنه، کندتر کار میکنه، کار و هزینه رو از دوش انسان برمیداره و بر دوش رایانه ها میذاره، که البته ما رایانه ها رو برای همین ساختیم! هنر این نیست که کار رایانه رو کمتر کنید و کار خودتون رو بیشتر! هنر اینکه که تا میتونید از رایانه ها برای بیشترین بازدهی، بیگاری بکشید!! بیشترین بازدهی هم امروزه دیگه خیلی وقتا به معنای بیشترین سرعت و کمترین مصرف منابع نیست، بلکه به معنای تولید هرچه راحتتر و سریعتر و کم هزینه تر برنامه های بیشتر، گسترش سرویسها و منابع بیشتر، و در دسترس قرار دادن هرچه بیشتر همه چیز برای مردمان بیشتری است.
اصلا اینکه فقط جایی که مجبور هستن برنامه ها رو با زبانهای سطح پایین مینویسن خودش اثبات کننده و یک معیار است! فقط سیستم عامل و نرم افزارهای پایه (مثلا خود مفسر PHP یا دیتابیس MySQL یا وب سرور آپاچی)، و نه برنامه نویسی اپلیکیشن های عادی و سایت. اگر سرعت همه جا اولویت و معیار اول بود، پس باید در همه جا این کار رو میکردن. ولی نمیکنن! نکردند و نخواهند کرد. غیر از اینه؟ پس مسئله به همین سادگیه. دچار بیماری وسواس سرعت و بهینگی و نگران حال کامپیوترها بودن نشید. کامپیوترها رو باید در خدمت آسایش خودمون بکار بگیریم، نه اینکه ما به خدمت اونا در بیایم و برای آسایش اونا بیشتر کار کنیم!!

----------


## eshpilen

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

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

----------


## eshpilen

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

----------


## eshpilen

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

----------


## pswin.pooya

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


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



> سبک GUI داره تغییر میکنه یعنی چی دقیقا؟
> بعد دات نت چطور و چرا انعطافش در این زمینه کمه؟


1. معرفی رابطهای کاربری سخت افزاری  جدید.
2. معرفی رابطهای جدید نرم افزاری. (به زبون ساده کنترلرهای جدید)
3. تغییر سبکهای GUI از ساختار فرمی گذشته به سبک های جدیدتر. (که در وب و PMD ها به وفور مشاهده می کنیم.)




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



البته بارها ایناها رو گفتم اما ظاهرا فایده نداره:

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

در گذشته بدون اینکه به کد هم دست بزنید سرعت برنامه در هر دوسال دو برابر می شد. اما این روند تقریبا در چند سال گذشته یعنی تقریبا از 2008 به این سمت خیلی کندتر شده و حتی دو برابر هم نشده. سال 2008  اگر پردازنده 3.6 گیگاهرتز داشتیم باید الان سرعت یه چیزی حدود 14 یا حتی 28 بود. که نیست. این مسائل نه به خاطر محدودیتهای فریکی در طراحی پردازنده هست و تقریبا به جزء یک انتقلاب سخت افزاری چیز دیگه ای نمی تونه حلش بکنه.


اما در مورد پرفرمانس:
مثلا. اگر با سی شارپ یه برنامه پارکینگ می نویسید که علاوه بر کارت RFID از پردازش تصویر برای خوندن پلاک استفاده میکنه و کارهای دیگه ای هم انجام بده. توی این زبون حتی برای کپچر دوربین هم مشکل خواهید داشت و سرعت کمی رو در اختیار دارید حالا فکر کنید کنارش پردازش تصویر و پایگاه داده و ... هم اضافه بشه. از یه طرف دیگه هم به پارکینگی نمی تونی بگی که پردازندت حتما باید corei7 یک و نیم میلیون تومنی باشه  :لبخند گشاده!: . برنامه شما باید حتی بتونه به راحتی با یه dual core هم کار کنه  :خجالت: . اینجاست که به آب و آتیش میزنین. اما در مقابل همون کندی ها به کمک C++‎‎‎‎ و کتابخونه هاش و ... چند برابر کمتره که توی تست های من مابین 2 تا 5 برابر برای موارد ساده و تا 20 برابر برای موارد پیچیده بوده. 

نسل جدید:
رابطهای کاربری جدید معمولا تلفیقی از انیمیشن و ... هست که خود GDI+ و GDI با این قضیه مشکل دارن و از طرف دیگه Direct2D هم با ویندوز هفت به بعد ساپورت میشه در کنار اون هم ساختار معمول فرمی C#‎‎‎‎ و یا WPF (که سر ادامه داشتن اون و انعطافش کلی بحث وجود داره) هم جوابگوی رابط کاربری جدید نیست.


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

برای مطالعه بیشتر در مورد موارد گفته شده هم  میتونید به کتاب پرفسور پترسون و پرفسور هنسی ویرایش 5 چاپ 2013 و همینطور ویرایش 4 چاپ 2008 مراجعه کنید.

----------


## eshpilen

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


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



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


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



> 1. معرفی رابطهای کاربری سخت افزاری  جدید.
> 2. معرفی رابطهای جدید نرم افزاری. (به زبون ساده کنترلرهای جدید)
> 3. تغییر سبکهای GUI از ساختار فرمی گذشته به سبک های جدیدتر. (که در وب و PMD ها به وفور مشاهده می کنیم.)


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




> پیچیده شدن نحوه تعامل با کاربر نیازمند پردازش بیشتری هست که خاصیت نرم افزارهای نسل جدید به شماره میره. حتی ساده ترین نرم افزارهای امروزی بسته به نیاز به سمت پردازش تصویر و هوش مصنوعی و دیتا ماینیگ و یا حداقل رابطهای interactiveتر حرکت میکنن. از طرف دیگه روند پیشرفت سرعت سخت افزار به سمت کند شدن پیش میره. این یعنی پردازش بیشتر با پردازنده های تقریبا ثابتر. 
> 
> در گذشته بدون اینکه به کد هم دست بزنید سرعت برنامه در هر دوسال دو برابر می شد. اما این روند تقریبا در چند سال گذشته یعنی تقریبا از 2008 به این سمت خیلی کندتر شده و حتی دو برابر هم نشده. سال 2008  اگر پردازنده 3.6 گیگاهرتز داشتیم باید الان سرعت یه چیزی حدود 14 یا حتی 28 بود. که نیست. این مسائل نه به خاطر محدودیتهای فریکی در طراحی پردازنده هست و تقریبا به جزء یک انتقلاب سخت افزاری چیز دیگه ای نمی تونه حلش بکنه.


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

بقیهء پستتون باشه بعد سرفرصت جواب میدم. الان باید برم جایی...

----------


## ابوالفضل عباسی

با دلفی xe5 , xe6 ,xe4 هم می شه برای اندروید برنامه نوشت اما محدودیت هایی هم داره:
1- روی اندروید 4 به بالا اجرا می شه :متفکر: 
2-باید معماری cpu گوشی یا تبلتت ازنوع ARM باشه.در اینترنت می توانی سرچ کنی و بفهمی. این نقطه ضعف روی گوشی هایی مثل galaxy tab , asus fonepad7 جواب نمی ده که نقطه ضعف دلفی رو نشون می ده :ناراحت: 

از نظر من C++‎ و  delphi  برای برنامه نویسی و برای تحت وب xml , php بهتر هستند. :تشویق:

----------


## eshpilen

> مثلا. اگر با سی شارپ یه برنامه پارکینگ می نویسید که علاوه بر کارت RFID از پردازش تصویر برای خوندن پلاک استفاده میکنه و کارهای دیگه ای هم انجام بده. توی این زبون حتی برای کپچر دوربین هم مشکل خواهید داشت و سرعت کمی رو در اختیار دارید حالا فکر کنید کنارش پردازش تصویر و پایگاه داده و ... هم اضافه بشه. از یه طرف دیگه هم به پارکینگی نمی تونی بگی که پردازندت حتما باید corei7 یک و نیم میلیون تومنی باشه . برنامه شما باید حتی بتونه به راحتی با یه dual core هم کار کنه . اینجاست که به آب و آتیش میزنین. اما در مقابل همون کندی ها به کمک C++‎‎‎‎‎‎ و کتابخونه هاش و ... چند برابر کمتره که توی تست های من مابین 2 تا 5 برابر برای موارد ساده و تا 20 برابر برای موارد پیچیده بوده.


خب ما هم نگفتیم که همچین چیزی نیست. من هیچوقت کلی حرف نزدم که توی هیچ برنامه ای پرفورمنس حرف اول رو نمیزنه یا همهء برنامه ها رو با امثال دات نت بنویسید (یا اصلا میشه نوشت).
البته این چیزایی هم که شما میگی بنظرم خیلی جای بحث و تحقیق داره. به این سادگی و روشنی نیست.
اولا قرار نیست یه برنامه همش با سی++ یا با دات نت نوشته بشه؛ میتونه ترکیبی باشه. بخشهای performance critical میتونه بصورت dll و ماجول یا حتی برنامه های خارجی با زبانهای مورد نیاز نوشته بشه. بنظر من دیگه این دیدگاه ها قدیمی شده که فقط یک زبان همه جا و همه کار! الان دیگه محدودیت در این زمینه ها خیلی کمه و میشه توی اکثر محیطها و زبانها تقریبا همه کار کرد منجمله ترکیب با زبانها و استفاده از کتابخانه های دیگر.
بعدم این پارکینگ که میگید چنین امکانات امنیتی میخواد یعنی پول یه CPU براش اینقدر گندس و بخاطرش منصرف میشه؟




> رابطهای کاربری جدید معمولا تلفیقی از انیمیشن و ... هست که خود GDI+ و GDI با این قضیه مشکل دارن و از طرف دیگه Direct2D هم با ویندوز هفت به بعد ساپورت میشه در کنار اون هم ساختار معمول فرمی C#‎‎‎‎‎‎ و یا WPF (که سر ادامه داشتن اون و انعطافش کلی بحث وجود داره) هم جوابگوی رابط کاربری جدید نیست.


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

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

----------


## eshpilen

برنامه نویس فقط باید بتونه به سرعت یاد بگیره و خودش رو تطبیق بده و سویچ کنه. همین!
باید برای همه چیز آماده باشه.
آماده باشه هر زبان و فناوری و پلتفرم جدیدی رو با سرعت یاد بگیره و ازش استفاده کنه.
یک دلیلی که بنده سعی کردم زبانهای متعددی در حیطه ها و سطوح مختلف رو یاد بگیرم همین بود که قدرت انعطاف و سویچ راحت و سریعی داشته باشم و بتونم حتی همزمان با استفاده از چند زبان اونم نه فقط روی یک پلتفرم مثل ویندوز، کارم رو راه بندازم.
الان نمیشه آینده رو تا چند سال بیشتر پیشبینی کرد. تازه همون پیشبینی های کوتاه مدت هم زیاد اعتبار ندارن و زیاد به درد نمیخورن و ممکنه اوضاع اونطورها هم که ما فکر میکردیم نشه. کما اینکه تاحالا از این موارد کم نبوده. مثلا اول کی فکر میکرد دات نت و سی شارپ بیاد یا اینقدر به سرعت و گستردگی فراگیر بشه؟ (یه نگاهی به حجم فعالیت در این زمینه و فرصت های شغلیش بندازید) تاجاییکه من یادمه در این زمینه هیچ اطمینان و اجماع چشمگیری وجود نداشت و کلی هم دشمن و مخالف و حسود (بطور مثال طرفداران جاوا) و تبلیغات منفی علیه اون وجود داشت. یا مثلا بعکس و در طرف دیگر دعوا تا یه مدت میگفتن سی++ به امکانات دات نت دسترسی نداره، ولی بعد چند وقت و خیلی زود این مسئله برطرف شد!
یا حتی همون چند سال پیش بنده گفتم که میکروسافت الان در حال تست و توسعه دات نت هست و تغییرات و تکامل اون و به کمال رسوندنش و بخاطر همین به بهینه سازی پرفورمنس اون اولویت و اهمیت زیادی نمیدن، ولی یه زمانی که از بلوغ و ثبات ساختار کلی دات نت و امکان بقاش اطمینان خوبی پیدا کردن میبینی میرن روی کار بهینه سازی و افزایش پرفورمنس و حتی پشتیبانی های ویژهء سخت افزاری و سیستم عامل ها که در نهایت میبینی پرفورمنسش رو به طرز چشمگیری افزایش میدن. خلاصه بنظر من محدودیتی وجود نداره و دیگه خیلی سخته که بشه گفت کدوم زبان و فناوری در چند سال آینده چی میشه و به کجا میرسه. چون محدودیت های فنی عملا خیلی کم هستن و بیشتر این اقتصاد و سیاست و اجتماع و مسائل دیگر هست که تاثیرگذاره تا محدودیت های فنی بنیادین.
همین PHP رو مشاهده کنید که سراسر وب رو به تسخیر خودش درآورده. تاحالا میگفتن پرفورمنسش پایینه، که البته تاحدی درست هم بود، و اخیرا و بخصوص در کاربردهای بزرگ این کم و بیش برجسته تر و مشکل شده بود، اما یکی مثل فیسبوک اومد و سه سوت سیستمی درست کرد که کدهای PHP بجای تفسیر شدن، به کدهای سی++ تبدیل و کامپایل بشن و با سرعت چندین برابر اجرا بشن. الان این پروژه که اسمش HipHop هست بازمتن و رایگانه و هرکس بخواد میتونه روی سرور خودش نصب کنه و چه بسا چند سال دیگه جزو رسمی یا فراگیری از نصب های PHP در اکثر سرورها بشه. یعنی مسئلهء پرفورمنس پایینتر PHP عملا تاحد زیادی حل شده. تازه این فقط یک بخش و یک نمونه است. خود فیسبوک چند فناوری و برنامه و سیستم دیگر هم برای کار خودش تولید کرده که اونا هم بازمتن هستن. حتی مثل اینکه یه سیستم جدیدتر بجای همین HipHop هم درست کردن.

----------


## pswin.pooya

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


گذردهی: تعداد کارهایی که میشه در یه بازه خاص تمومشون کرد.
سرعت: تعداد دستورهایی که میتونن در ثانیه از یه برنامه اجرا شن. که البته باز اینم درست نیست و برای سرعت از واحد CPI استفاده میکنن. که میگه سرعت به متغییرهای زیادی وابسته هست. بسته به نوع برنامه نویسی CPI میتونه یه عدد اعشاری باشه تا مثلا عددی مثل ۳۲. مقدار مثلا ۲ برای یه برنامه یعنی سرعت پردازنده اگر ۳ گیگ باشه به این معنی که برنامه شما داره با ۱.۵ گیگ کار میکنه. (البته اینجا من قرار نیست درس بدم و فقط راهنمایی میکنم. انتظار میره خودتون مطالعه کنید.)

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

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




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


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




> بنظرت همون زبانهای سطح بالاتر + پردازش موازی راهکار مناسب تر و راحت تری نیست؟


موازی سازی در چندین سطح هست که برخی از اونها به کمک زبانهای سطح بالا قابل انجام نیست‌(البته تعریفتون از سطح زبان اشتباه هست). مثلا SIMD و MIMD داریم که عملا با روش ها و امکانات زبان در سی شارپ و php و ... نمیشه انجام داد. داخل خود C++‎ هم قسمتی از این موازی سازیها به کمک اسمبلی (ترکیب کد) یا هدرهایی که همین کار رو انجام میدن انجام میشه. مساله اینه که در این زبان سالها پیش این موارد استاندارد شده. مثلا OpenMP اگر اشتباه نکنم در سال 1998 معرفی شده که الان اکثر کامپایلرها پشتیبانی میکنن.

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




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


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




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


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

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

توان اتلافی = ولتاژ به توان دو * سرعت بر حسب کلاک *‌نشست خازنی تکنولوژی استفاده شده * تعداد ترانزیستور.

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

----------


## a.r.khoshghalb

> با دلفی xe5 , xe6 ,xe4 هم می شه برای اندروید برنامه نوشت اما محدودیت هایی هم داره:
> 1- روی اندروید 4 به بالا اجرا می شه
> 2-باید معماری cpu گوشی یا تبلتت ازنوع ARM باشه.در اینترنت می توانی سرچ کنی و بفهمی. این نقطه ضعف روی گوشی هایی مثل galaxy tab , asus fonepad7 جواب نمی ده که نقطه ضعف دلفی رو نشون می ده
> 
> از نظر من C++‎‎ و  delphi  برای برنامه نویسی و برای تحت وب xml , php بهتر هستند.


درکل من با شما موافقم که ++C و Delphi برای برنامه نویسی مناسبند (تازه با دلفی تحت وب هم میشه نوشت  :بامزه: )
اما یک اصلاحیه، برنامه ای که با دلفی برای اندروید بنویسیم فقط رو اندروید 4 به بالا اجرا نمیشه! من تست کردم و رو اندروید 2.3 به بالا اجرا شده.

----------


## eshpilen

> در مورد موازی سازی که عملا در برنامه های سطح بالا کنترل مستقیمی وجود نداره مثلا php و یا حتی در سی شارپ ماکسیمم شما می تونید نخ ایجاد کنید. پس موازی سازی به معنی تمام کمال وجود نداره. حتی اگر هم وجود داشته باشه باز به معنی چهار برابر شدن سرعت در یه پردازنده چهار هسته ای نیست. چون توالی دستورهای موازی و غیر موازی و درصد اونها خیلی مهم هست. که هیچگاه به اون 4 برابر نمی رسه.


بله میدونم. بنده هم اشاره کردم که موازی کردن درمورد هر برنامه و الگوریتمی امکان پذیر نیست و مقدار افزایش سرعت هم متغییره. بخاطر همین پارامترها.
بعضی چیزا رو با همون Thread (یا میشه بجاش از Process های مستقل هم استفاده کرد) هم خوب میشه موازی کرد و افزایش سرعت تقریبا نزدیک همون تعداد هسته ها میشه. مثلا برنامه ای که همزمان چند فایل ویدئویی رو convert میکنه، یا همزمان چند ارتباط وب/شبکه برقرار میکنه. در این موارد عمدهء زمان مصرف شده همون عملیات هست که طبیعتا با موازی سازی میتونه به تعداد هسته ها سرعت رو افزایش بده. حتی در بعضی موارد که صرفا موازی کردن کافیه و لازم نیست CPU واقعا چند هسته ای باشه تا افزایش سرعت چشمگیر داشته باشیم (مثلا ارسال همزمان چند درخواست HTTP و بدون اینکه برای انجام بقیهء عملیات منتظر دریافت پاسخ اونا بشیم).





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


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




> موازی سازی در چندین سطح هست که برخی از اونها به کمک زبانهای سطح بالا قابل انجام نیست‌


بله مستقیما قابل انجام نیست ولی فکر میکنم در بیشتر موارد میشه بصورت غیرمستقیم ازش استفاده کرد.
مثلا حتی در PHP در نظر بگیرید، خب ما میتونیم براحتی یک اکستنشن به زبان C بنویسیم و توش همه کار بکنیم و بعدش صرفا دستور لازم برای لود کردن اون رو به فایل کانفیگ php اضافه کنیم و بعد از اون اینترفیس/API اون براحتی در سطح PHP در اختیار قرار میگیره. همینطور در زبانهای دیگر هم محدودیت خاصی وجود داره بنظر شما که نشه از کتابخانه ها و مکانیزم های دیگری که هست استفاده کنن؟
البته این روشها اغلب بالاخره در عمل محدودیت ها و/یا هزینه هایی هم دارن. مثلا روی یک Shared host طبیعتا امکان اینکه کاربران اکستنشن نصب کنن ممکنه نباشه یا دردسر و هزینه افزوده داشته باشه، ولی بهرحال از طرف دیگر اگر برنامه مهم و پیشرفته و کارش سنگین باشه بنظرم نباید انتظار داشت از Shared host و اصولا اون برنامه/سرویس/سایت باید یک سرور اختصاصی یا VPS داشته باشه که دیگه روش میشه هر چیزی نصب کرد. بنابراین مشکل و محدودیت هست، ولی اونقدری زیاد و اساسی نیست در اکثر موارد که بگیم فلان زبان به هیچ وجه فلان امکان رو نداره.
معمولا موارد بهینه سازی که اینقدر سطح پایین باشن کم و تنها بخش کوچکی از یک برنامه هستن از نظر حجم کد که بنابراین میشه به این صورت اونا رو پیاده سازی کرد. بخاطر یک چیزی که کم پیش میاد و بخش کوچکی از کل یک سیستم هست که نمیان برن کل زبان و پلتفرم برنامه نویسی رو عوض کنن وقتی راه دیگه داره.




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


من بطور نسبی بین چند زبان گفتم. مثلا سی++ طبیعتا در مقابل PHP یک سطح پایین تر بحساب میاد.




> این مربوط به بازاریابی محصول میشه و زمانی که برنامه نویسها کم میارن این اصطلاحات رو به کار میبرن. فکر کن من اگه برم بهش بگم با همین لگن هم که داری برنامه من کار میکنه. کل بازار رو شما از دست میدی.


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




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


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

----------


## eshpilen

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

----------


## eshpilen

> مثلا SIMD و MIMD داریم که عملا با روش ها و امکانات زبان در سی شارپ و php و ... نمیشه انجام داد


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

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

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

----------


## eshpilen

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

----------


## barnamenevisjavan

به نظر من :
برای آندروید Java
برای برنامه دسکتاپ .NET (وی بی یا سی شارپ فرقی نداره)
برای کارای خاص از C++‎ , Python

----------


## matrix-program

من اولش کلا با غیره دات نت مخالف بودم تا اینکه C++‎‎‎‎ رو امتحان کردم ...زندگیم متحول شد :) الان دارم به هرچی دات نته فوش میدم که چرا وقتمو برای یه زبانی تلف کردم که همه چی از قبل آمادس (سوء تفاهم نشه ها هرکی یه سلیقه ای داره)
پ.ن:من به عنوان یک معتاد به بازی آنلاین و اینترنت با C++‎‎ و کیوت زندگیم به کل عوض شد ! دیگه 24 ساعت کارم شده کد ! شبا دیر میخوابم ... خلاصه بگم اعتیاد C++‎‎ از بازی آنلاین بیشتره

----------

