V (زبان برنامه نویسی)
پارادایم ها | چند نمونه: عملکردی ضروری ساختار یافته همزمان |
---|---|
طراحی شده توسط | الکساندر مدویدنیکوف [۱] |
اولين بار ظاهر شد | 20 ژوئن 2019[۲] |
صفحه پودمان:Infobox/styles.css محتوایی ندارد. | |
نسخه پایدار | 0.4.5[۳] / 20 مارس 2024 (20 مارس 2024)
|
قوانین تایپ سیستم | ثابت قوی نتیجه گیری |
مدیریت حافظه | اختیاری (خودکار یا دستی) |
زبان اجرای | V |
پلتفرم | x86-64 |
OS | لینوکس مکوس، ویندوز، FreeBSD OpenBSD NetBSD، DragonflyBSD Solarisسولریس |
مجوز | MIT |
افزونه های نام فایل | .v .vsh
|
وب سایت | vlang.io |
تحت تاثیر | |
Go, Kotlin, Oberon, Python, Rust, Swift |
V که به عنوان vlang نیز شناخته میشود یک زبان برنامه نویسی اایستا و کامپایل شونده است که توسط Alexander Medvednikov در اوایل ۲۰۱۹ ایجاد شد . این زبان از زبان Goالهام گرفته شده و زبان های Oberon,Swift و Rust بر آن تاثیر داشتند[۴] [۵] [۶].این زبان آزاد و منبع باز است که تحت مجوز MIT منتشر شده و در حال حاضر در نسخه ی بتاست . [۷]
اهداف V شامل سهولت استفاده ، خوانایی بهتر کد و قابلیت نگه داشت است [۸][۹]
تاریخچه[ویرایش]
به گفته یکی از توسعه دهندگان ، این زبان جدید در نتیجه ی ناامیدی از زبان های موجود در جهت استفاده در پروژه های شخصی ایجاد شده است . [۱۰] این زبان در اصل برای استفاده شخصی در نظر گرفته شده بود ، اما پس از اینکه در انظار از ان نام برده شد و شهرت کسب کرد ، تصمیم به انتشار عمومی ان گرفته شد . V در ابتدا به منظور توسعه یک کلاینت پیام رسانی دسکتاپ به نام Voltایجاد شد[۱۱]. پس از انتشار عمومی ، کامپایلری به زبان Vنوشته شد و زبان میتوانست خود را کامپایل کند . اهداف کلیدی طراحی پشتیبان ایجاد زبان V عبارت اند از : یادگیری آسان و سریع ، خوانایی بالاتر ، کامپایل سریع ، افزایش امینت ، توسعه کارآمد ، قابلیت استفاده بین پلتفرم های مختلف ، تعامل پذیری بهتر با زبان C، مدیریت بهتر خطاها ،ویژگی های مدرن و نرم افزاری با قابلیت نگه داری بیشتر. [۱۲][۱۳][۱۴]
زبان Vاز طریق گیت هاب[۱۵] [۱۶]منتشر و توسعه میابد و توسط توسعه دهندگان و مشارکت کنندگان جامعه گیت نگه داری و بروزرسانی میشود[۱۷].
ویژگی ها[ویرایش]
امنیت[ویرایش]
V سیایت هایی برای بهبود امنیت حافظه ، سرعت و کد امن در نظر گرفته . [۱۹][۲۰] . از جمله ی این ویژگی های امنیتی پیش فرض عبارت اند از :[۲۱][۲۲][۲۳][۲۴] ۱) استفاده از ویژگی بررسی نقص ها. ۲) استفاده از گزینه/نتیجه. ۳) بررسی الزامی خطاها . ۴) متغیر ها به طور پیش فرض غیرقابل تغییرند . ۵) ساختار ها به طور پیش فرض تغییرناپذیرند. ۶) تابع ()args به طور پیش فرض غیر قابل تغییر است . ۷) عدم استفاده از مقادیری که تعیرف نشده اند . ۸) عدم ابهام متغیر ها . ۹) عدم استفاده از مقدار null (مگر اینکه در کد به عنوان ناامن مشخص شده باشد.) ۱۰) عدم استفاده از متغیر های سراسری (مگر اینکه از طریق پرچم (flag) فعال شده باشد) .
کارایی[ویرایش]
V از نوع های مقداری و بافر های رشته ای برای کاهش تخصیص حافظه استفاده می کند.[۲۵] [۲۶][۲۷]
مدیریت حافظه[ویرایش]
۴ مورد پشتیبانی شده توسط این زبان برای مدیریت حافظه به شرح زیر است : [۲۸][۲۹][۳۰]
۱. استفاده از یک بازیافت حافظه اختیاری (که میتواند غیرفعال شود) برای مدیریت تخصیص ها که به صورت پیش فرض است .
۲. مدیریت دستی حافظه از طریق غیر فعال کردن بازیافت حافظ (gc none).
۴. خزینه حافظه (-prealloc
).
مترجم کد مبدا[ویرایش]
زبان V از کامپایل مبدا به مبدا (transpilar) پشتیبانی میکند و میتواند کد C را به کد V ترجمه کند . [۳۱][۳۲][۳۳]
مترجم هایی نیز برای ترجمه زبان ها Go ، JavaScript و WebAssembly در دست توسعه هستند .[۳۴] [۳۵]
قواعد نحوی[ویرایش]
سلام دنیا[ویرایش]
برنامه ی "سلام دنیا" در زبان V : [۳۶]
fn main(){
println('Hello World!')
}
fn main() {
println('Hello, World!')
}
متغیر ها[ویرایش]
متغیر ها به طور پیش فرض تغییر ناپذیرند و با استفاده از" =: "و یک مقدار تعریف میشوند . از کلمه ی کلیدی mut برای تغییرپذیر کردن انها استفاده میشود . متغیر های تغییرپذیر را میتوان با "=" مقدار دهی کرد: [۳۷]
a := 1
mut b := 2
b = 3
تعریف مجدد یک متغیر چه در یک بازه ی داخلی و چه در همان بازه مجاز نیست : [۳۷]
a := 1
{
a := 3 // error: redefinition of a
}
a := 2 // error: redefinition of a
ساختار ها[ویرایش]
مثالی از ساختار: [۱۲]
struct Point {
x int
y int
}
mut p := Point {
x: 10
y: 20
}
println(p.x) // Struct fields are accessed using a dot
// Alternative literal syntax for structs with 3 fields or fewer
p = Point{10, 20}
assert p.x == 10
ساختار های درخت هیپ[ویرایش]
ساختار ها به طور پیش فرض بر روی پشته قرار میگیرند . برای قرار دادن یک ساختار روی درخت هیپ و دریافت نشانگر ارجاع به ان ، میتوان از پیشوند "&" استفاده کرد:[۱۲]
struct Point {
x int
y int
}
p := &Point{10, 10}
// References have the same syntax for accessing fields
println(p.x)
متد ها[ویرایش]
متد ها در زبان V توابعی هستند که با آرگومان های ورودی تعریف میشوند. ورودی ها بین لیست آرگومان های خود و با کلمه ی کلیدی "fn" و نام متد ظاهر میشوند. متد ها باید در همان ماژول هایی باشند که نوع ورودی قرار دارد .
متد is_registerd یک ورودی از نوع User به نام u دارد . قرداد این است که از نام هایی مانند self و this برای ورودی استفاده نشود و ترجیح بر یک نام کوتاه است . برای مثال: [۳۸][۱۲]
struct User {
age int
}
fn (u User) is_registered() bool {
return u.age > 16
}
user := User{
age: 10
}
println(user.is_registered()) // "false"
user2 := User{
age: 20
}
println(user2.is_registered()) // "true"
مدیریت خطا ها[ویرایش]
نوع اختیاری(Optional type) برای نوع هایی به کار می رورد که ممکن است نوع داده انها none باشد . نوع نتیجه (Result type)می تواند نمایانگر یک خطا که از یک تابع بازگردانده شده است باشد .
نوع اختیاری با قرار دادن "?" در ابتدای نوع متغیر مشخص میشود (Type?). نوع نتیجه از "!" در ابتدای نوع متغیر استفاده میکند (Type!) [۳۹][۴۰][۲۸]
fn do_something(s string) !string {
if s == 'foo' {
return 'foo'
}
return error('invalid string')
}
a := do_something('foo') or { 'default' } // a will be 'foo'
b := do_something('bar') or { 'default' } // b will be 'default'
c := do_something('bar') or { panic("{err}") } // exits with error 'invalid string' and a traceback
println(a)
println(b)
همچنین ببینید[ویرایش]
- مقایسه زبان ها برنامه نویسی
- تاریخچه زبان های برنامه نویسی
- فهرست زبان های برنامه نویسی
- فهرست زبان های برنامه نویسی بر اساس نوع
منابع[ویرایش]
- ↑ "Creator of V". GitHub.
- ↑ صفحه پودمان:Citation/CS1/styles.css محتوایی ندارد."First public release".
- ↑ صفحه پودمان:Citation/CS1/styles.css محتوایی ندارد."Release 0.4.5".
- ↑ Umoren, Samuel. "Building a Web Server using Vlang". Section. Retrieved 5 April 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Lewkowicz, Jakub (25 June 2019). "SD Times news digest: V language now open sourced". SD Times. Retrieved 25 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "The V Programming Language". vlang.io. Retrieved 2023-11-04.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Nasufi, Erdet. "An introduction to V - the vlang". DebConf. Retrieved 24 July 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "How To Maintain And Iterate With V - SYNCS 2023 (Sydney Computing Society at the University of Sydney)". YouTube. Retrieved 18 October 2023.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۱۲٫۰ ۱۲٫۱ ۱۲٫۲ ۱۲٫۳ Independent Laboratory 2020.
- ↑ Nasufi, Erdet. "An introduction to V - the vlang". DebConf. Retrieved 24 July 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "V language: simple like Go, small binary like Rust". TechRacho. Retrieved 3 March 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "GitHub Programming Languages (repository rankings)" – via OSS.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Rao 2021.
- ↑ "V's official mascot". GitHub. Retrieved 8 November 2023.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Umoren, Samuel. "Building a Web Server using Vlang". Section. Retrieved 5 April 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Umoren, Samuel. "Building a Web Server using Vlang". Section. Retrieved 5 April 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Rao 2021, p. 7.
- ↑ "The V programming language is now open source". Packt Hub. 24 June 2019. Retrieved 24 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۲۸٫۰ ۲۸٫۱ Tsoukalos 2022.
- ↑ James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Emy, Jade (29 August 2023). "The programming language V 0.4 Beta is available". developpez. Retrieved 29 August 2023.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Introducing the V Tutorial!". Replit. Retrieved 4 January 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Schlothauer, Sarah. "The trendy five: Blazing hot GitHub repos in June 2019". JAXenter. Archived from the original on 17 February 2020. Retrieved 1 July 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Nasufi, Erdet. "An introduction to V - the vlang". DebConf. Retrieved 24 July 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "The V WebAssembly Compiler Backend". l-m. 26 February 2023. Retrieved 26 February 2023.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Convert Go to V with go2v". Zenn. 26 January 2023. Retrieved 26 January 2023.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۳۷٫۰ ۳۷٫۱ Rao 2021, pp. 28-40.
- ↑ Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Umoren, Samuel. "Building a Web Server using Vlang". Section. Retrieved 5 April 2021.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
مطالعه بیشتر[ویرایش]
- خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
پیوند ها[ویرایش]
This article "V (زبان برنامه نویسی)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:V (زبان برنامه نویسی). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
- زبانهای برنامهنویسی سیستمی
- زبانهای برنامهنویسی ایستا
- کامپایلرهای کد منبع به کد منبع
- نرمافزارهای دارای اجازهنامه امآیتی
- کامپایلرها و مفسرهای آزاد
- نرمافزارهای آزاد چندسکویی
- نرمافزارهای چندسکویی
- زبانهای برنامهنویسی همروند
- زبانهای تابعی
- زبانهای برنامهنویسی رویهای
- زبانهای برنامهنویسی
- نرمافزارهای ۲۰۱۹ (میلادی)
- خطاهای بدون هدف Harv و Sfn