کامپایلر AOT و JIT
کامپایلر های Ahead Of Time مستقیم کد ما را تبدیل به machine code می کنند اما در کامپایلر های Just In Time کد ما تبدیل به یک کد میانی Bytecode می شود و در زمان اجرا توسط runtime engine هر قسمت از برنامه ما که مورد استفاده قرار می گیرد تفسیر می شود و تبدیل به machine code می شود.
چه زبان هایی از AOT و چه زبان هایی از JIT استفاده می کنند؟
زبان هایی مثل سی، سی پلاس پلاس و گولنگ AOT compilation هستند.
زبان هایی مثل جاوا، سی شارپ معمولا از JIT استفاده میکنند.
مقایسه این دو با هم:
در AOT بیلد کردن کد بیشتر طول می کشد اما در JIT سریع تر اتفاق میوفتد.
در AOT کد های ما به machine code تبدیل می شوند و قابلیت اجرا بصورت مستقیم را دارند اما در JIT توسط interpreter اجرا میشود. در این صورت اگر در JIT تکه کدی از ما اصلا مورد استفاده قرار نگیرد، تبدیل به ماشین کد هم نمی شود اما از آن طرف همیشه overhead وجود دارد که باید یک runtime engine داشته باشید تا کد های شما اجرا شود.
https://www.linkedin.com/pulse/ahead-of-time-compilation-vs-just-in-time-java-comparative-raj/
#Compiler
@Syntax_fa
کامپایلر های Ahead Of Time مستقیم کد ما را تبدیل به machine code می کنند اما در کامپایلر های Just In Time کد ما تبدیل به یک کد میانی Bytecode می شود و در زمان اجرا توسط runtime engine هر قسمت از برنامه ما که مورد استفاده قرار می گیرد تفسیر می شود و تبدیل به machine code می شود.
چه زبان هایی از AOT و چه زبان هایی از JIT استفاده می کنند؟
زبان هایی مثل سی، سی پلاس پلاس و گولنگ AOT compilation هستند.
زبان هایی مثل جاوا، سی شارپ معمولا از JIT استفاده میکنند.
مقایسه این دو با هم:
در AOT بیلد کردن کد بیشتر طول می کشد اما در JIT سریع تر اتفاق میوفتد.
در AOT کد های ما به machine code تبدیل می شوند و قابلیت اجرا بصورت مستقیم را دارند اما در JIT توسط interpreter اجرا میشود. در این صورت اگر در JIT تکه کدی از ما اصلا مورد استفاده قرار نگیرد، تبدیل به ماشین کد هم نمی شود اما از آن طرف همیشه overhead وجود دارد که باید یک runtime engine داشته باشید تا کد های شما اجرا شود.
https://www.linkedin.com/pulse/ahead-of-time-compilation-vs-just-in-time-java-comparative-raj/
#Compiler
@Syntax_fa
👍9
مقایسه زبان ها بر اساس
http server
pi digit
binary tree
nbody
json serialization
https://programming-language-benchmarks.vercel.app/
#Benchmark
@Syntax_fa
http server
pi digit
binary tree
nbody
json serialization
https://programming-language-benchmarks.vercel.app/
#Benchmark
@Syntax_fa
👍7
Syntax | سینتکس
مقایسه زبان ها بر اساس http server pi digit binary tree nbody json serialization https://programming-language-benchmarks.vercel.app/ #Benchmark @Syntax_fa
یه وب سایت دیگه که آقای سعید برای بنچمارکا معرفی کردن
https://www.techempower.com/benchmarks
#Benchmark
@Syntax_fa
https://www.techempower.com/benchmarks
#Benchmark
@Syntax_fa
www.techempower.com
TechEmpower Framework Benchmarks
Performance comparison of web application frameworks using community-contributed test implementations.
🔥6👍2
کدوم دوره رو میخواید؟
Final Results
68%
مینی دوره آموزش پیشرفته جنگو
32%
مینی دوره آموزش مقدماتی زبان گولنگ
🔥8👍3❤1
چند نکته درباره stack و heap
به صورت کلی می توان گفت value type ها مانند integer و boolean در stack ذخیره می شوند و reference type ها و دیتایی که ساختار پیچیده تری دارد در heap ذخیره می شوند(برای مثال در اکثر زبان های برنامه نویسی string در heap ذخیره می شود).
یکی از تفاوت های بزرگ بین stack و heap در این است که استک توسط CPU مدریت می شود. برای مثال اگر شما در یک فانکشن چند تا value type تعریف کنید، پس از اینکه از فانکشن خارج شدید بصورت خودکار از اخر به اول مقادیری که تعریف کردید حذف می شوند.
اما در reference type ها اتفاقی که می افتاد این است ما به عنوان مقدار آدرس حافظه آن را که در heap قرار دارد ذخیره می کنیم و وقتی که از داخل stack پاک می شود فقط آدرسی که داده بودیم پاک شده است و هنوز هم داخل heap وجود دارد.
مدریت heap توسط خود برنامه نویس و یا قابلیت garbage collector که در اکثر زبان های برنامه نویسی وجود دارد انجام می شود. اگر garbage collector موفق به آزاد کردن حافظه نشود باید خود برنامه نویس بصورت دستی این کار را انجام دهد در غیر این صورت memory leak اتفاق می افتد.
یکی از تفاوت های ترد و پراسس در این است که هر ترد برای خودش stack جدا دارد اما برخلاف پراسس heap جداگانه ای ندارد و از یک heap مشترک استفاده می کنند.
(چند تا نکته، شما توی کامنت اضافه کنید)
#stack #heap
@Syntax_fa
به صورت کلی می توان گفت value type ها مانند integer و boolean در stack ذخیره می شوند و reference type ها و دیتایی که ساختار پیچیده تری دارد در heap ذخیره می شوند(برای مثال در اکثر زبان های برنامه نویسی string در heap ذخیره می شود).
یکی از تفاوت های بزرگ بین stack و heap در این است که استک توسط CPU مدریت می شود. برای مثال اگر شما در یک فانکشن چند تا value type تعریف کنید، پس از اینکه از فانکشن خارج شدید بصورت خودکار از اخر به اول مقادیری که تعریف کردید حذف می شوند.
اما در reference type ها اتفاقی که می افتاد این است ما به عنوان مقدار آدرس حافظه آن را که در heap قرار دارد ذخیره می کنیم و وقتی که از داخل stack پاک می شود فقط آدرسی که داده بودیم پاک شده است و هنوز هم داخل heap وجود دارد.
مدریت heap توسط خود برنامه نویس و یا قابلیت garbage collector که در اکثر زبان های برنامه نویسی وجود دارد انجام می شود. اگر garbage collector موفق به آزاد کردن حافظه نشود باید خود برنامه نویس بصورت دستی این کار را انجام دهد در غیر این صورت memory leak اتفاق می افتد.
یکی از تفاوت های ترد و پراسس در این است که هر ترد برای خودش stack جدا دارد اما برخلاف پراسس heap جداگانه ای ندارد و از یک heap مشترک استفاده می کنند.
(چند تا نکته، شما توی کامنت اضافه کنید)
#stack #heap
@Syntax_fa
👍8🔥1
مسئله هفتم (پایتون)
سطح: ساده
ما همچین کدی را داریم:
تابع plus کارش این است که number را به علاوه یک کند.
چگونه می توانیم کاری کنیم که number زمانی که در تابع plus به علاوه یک می شود، موقع پرینت هم مقدارش بیشتر شده باشد؟
#Problems
@Syntax_fa
سطح: ساده
ما همچین کدی را داریم:
def plus(...):
...
if __name__ == "__main__":
number = ...
plus(number)
print(number)
تابع plus کارش این است که number را به علاوه یک کند.
چگونه می توانیم کاری کنیم که number زمانی که در تابع plus به علاوه یک می شود، موقع پرینت هم مقدارش بیشتر شده باشد؟
#Problems
@Syntax_fa
👍7👎2
Syntax | سینتکس
مسئله هفتم (پایتون) سطح: ساده ما همچین کدی را داریم: def plus(...): ... if __name__ == "__main__": number = ... plus(number) print(number) تابع plus کارش این است که number را به علاوه یک کند. چگونه می توانیم کاری کنیم که number زمانی…
پاسخ:
یکی از روش ها استفاده از کلاس ها هستش
روش بعدی استفاده از متغیر های گلوبال هستش:
#Problems
@Syntax_fa
یکی از روش ها استفاده از کلاس ها هستش
class MutableInteger:
def __init__(self, number):
self.number = number
def __add__(self, other):
self.number += other
def __str__(self):
return str(self.number)
def plus(number: MutableInteger):
number += 1
if __name__ == "__main__":
num = MutableInteger(1)
plus(num)
print(num)
روش بعدی استفاده از متغیر های گلوبال هستش:
def plus():
global number
number += 1
if __name__ == "__main__":
number = 1
plus()
print(number)
#Problems
@Syntax_fa
👍5
https://chrome.google.com/webstore/detail/eimadpbcbfnmbkopoojfekhnkhdbieeh
یه افزونه عالی کروم برای اینکه همه وب سایت هارو بصورت dark ببینید.
#Extension
@Syntax_fa
یه افزونه عالی کروم برای اینکه همه وب سایت هارو بصورت dark ببینید.
#Extension
@Syntax_fa
Google
Dark Reader - Chrome Web Store
Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing.
🔥7👍3
وب سایت telemetr
یه وب سایت عالی برای آنالیز کانال تلگرامتون هستش.
همچنین می تونید بر اساس دسته بندی، پر بازدید ترین، بیشترین ویو و ... فیلتر کنید و کانالای مختلفو بررسی کنید.
لینک:
https://telemetr.io/en/channels
@Syntax_fa
یه وب سایت عالی برای آنالیز کانال تلگرامتون هستش.
همچنین می تونید بر اساس دسته بندی، پر بازدید ترین، بیشترین ویو و ... فیلتر کنید و کانالای مختلفو بررسی کنید.
لینک:
https://telemetr.io/en/channels
@Syntax_fa
👍6
سوالات احتمالی مصاحبه ی زبان گولنک
همینجوری اتفافی توی گیت هاب دیدمش.
توی این ریپازیتوری سوالاتی که توی مصاحبه شغلی گولنگ ممکنه باهاش روبرو بشید رو قرار داده
البته انگار هنوز کامل نشده.
همچنین خسته نباشید میگم به بردیا 😁
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers?tab=readme-ov-file
#Interview #go
@Syntax_fa
همینجوری اتفافی توی گیت هاب دیدمش.
توی این ریپازیتوری سوالاتی که توی مصاحبه شغلی گولنگ ممکنه باهاش روبرو بشید رو قرار داده
البته انگار هنوز کامل نشده.
همچنین خسته نباشید میگم به بردیا 😁
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers?tab=readme-ov-file
#Interview #go
@Syntax_fa
🔥7
اگه دنبال ویدیو های آموزشی پایتون هستی، ویدیو های تک قسمتی مونگاردو پیشنهاد میدم.
امیر حسین بیگدلو توی مونگارد درباره پایتون کلی دوره و اموزش خوب قرار داده. حتما بدردتون می خوره.
https://www.mongard.ir/one_part/
#Python
@Syntax_fa
امیر حسین بیگدلو توی مونگارد درباره پایتون کلی دوره و اموزش خوب قرار داده. حتما بدردتون می خوره.
https://www.mongard.ir/one_part/
#Python
@Syntax_fa
www.mongard.ir
مونگارد | ویدیوهای کوتاه و پیشرفته برنامه نویسی
ویدیوهای تک قسمتی و پیشرفته آموزش برنامه نویسی
👍15
دوره آموزش جامع داکر
حتما یه سر به پلی لیست «آموزش جامع داکر» کانال میکروفرانت اند برای یادگیری داکر بزنید
همچنین آموزش های خوبی درباره پایتون هم گذاشته
https://www.youtube.com/playlist?list=PLJ9zDGwhhsBzLTI3VNE8Vp4JpXNn_yRR7
#Docker
@Syntax_fa
حتما یه سر به پلی لیست «آموزش جامع داکر» کانال میکروفرانت اند برای یادگیری داکر بزنید
همچنین آموزش های خوبی درباره پایتون هم گذاشته
https://www.youtube.com/playlist?list=PLJ9zDGwhhsBzLTI3VNE8Vp4JpXNn_yRR7
#Docker
@Syntax_fa
👍10❤🔥3