V היא שפת תכנות חדשה, קוד פתוח, בהקלדה סטטית שנוצרה על ידי אלכסנדר מדוודניקוב. V מבטיח להיות פשוט, מהיר ובטוח לבנות איתה תוכנה הניתנת לתחזוקה. מספר שפות השפיעו על העיצוב של V כולל אוברון, סוויפט, קוטלין ופייתון.
למד על V, התכונות שלו וכיצד הוא משתווה לשפות אחרות.
דברים שאתה יכול לעשות עם V
ל-V יש כוח רב ואתה יכול להשתמש בו כמעט בכל תעשייה, כולל תכנות מערכות, פיתוח אתרים ופיתוח משחקים. השפה פשוטה, מהירה ובטוחה.
V מציעה מגוון רחב של ספריות גרפיות חזקות לפיתוח משחקים. אלה מתבססים על GDI+/Cocoa Drawing ו-OpenGL ליישומי 2D/3D מתוחכמים יותר.
ל-V יש מודול ממשק משתמש המעסיק ערכות כלים מקוריות של GUI עבור אפליקציות לנייד, WinAPI/GDI+ עבור Windows, Cocoa עבור macOS וציור מותאם אישית עבור לינוקס.
סיבות לנסות את V
למרות ש-V היא שפה חדשה, היתרונות הללו הופכים אותה לאופציה לגיטימית.
פַּשְׁטוּת
כדי לבנות את הפרויקט שלך, אתה רק צריך להפעיל:
v.
אינך צריך להגדיר סביבת בנייה, ליצור קובץ makefile, לייבא כותרות או להגדיר סביבה וירטואלית. אם ברצונך להתקין ספריות חדשות באמצעות vpm (מנהל חבילות V), פשוט הפעל
v להתקין <שם חבילה>
בְּטִיחוּת
כברירת מחדל, ל-V יש:
- משתנים בלתי ניתנים לשינוי
- מבנים בלתי ניתנים לשינוי
- אפשרויות/תוצאה ובדיקות שגיאה חובה
- סוגי סכום
- גנריות
- args של פונקציה בלתי ניתנת לשינוי
ולא:
- ריק
- הצללה משתנה
- התנהגות לא מוגדרת
- משתנים גלובליים (ניתן להפעיל עבור אפליקציות ברמה נמוכה כמו גרעינים, באמצעות דגל)
מהירות קומפילציה
שפות תכנות מסוימות מהירות יותר מאחרות, מבחינת ביצוע או קומפילציה. V הוא בעל ביצועים כמו C. הוא מתהדר בזמני קומפילציה של בסביבות 110k loc/s עם backend C וכמיליון loc/s עם מקוריים ו-tcc backends. V גם מתרחק מהקצאות מיותרות כדי לספק גישת קידוד פשוטה נטולת הפשטה.
ניהול זיכרון
V לא משתמש באספן אשפה, מה שמבדיל אותו משפות כמו Go ו-Java. במקום זאת, V מנהל את הזיכרון בזמן ההידור, אך עובד רק עבור מצבים בסיסיים. אתה צריך לנהל אותו באופן ידני עבור מקרים מורכבים יותר.
עיצוב עבור עקביות בסגנון קוד
אתה יכול להשתמש ב vfmt פורמט כדי לעצב את קוד ה-V שלך ולשפר את הקריאות שלו על ידי הפעלת:
v fmt -w <your_filename>.v
הודעות שגיאה ידידותיות
הודעות השגיאה של V מפורטות, אינפורמטיביות ומועילות. תסתכל על הדוגמה הזו:
user.v:8:14:שגיאה: 'עדכון_משתמש' פָּרָמֶטֶר 'משתמש' ניתן לשינוי, אתה צריך לספק `מוט`: `update_user (מוזר משתמש)`
7 | mut user := משתמש{}
8 | update_user (משתמש)
| ~~~~
9 | }
בעזרת הודעת השגיאה, תוכל לתקן את הקוד הזה:
mut user := משתמש{}
update_user (השתקת משתמש)
C++ לעומת לך מול V: השוואה בין שלוש השפות
בדוגמאות אלה, אתה יכול לראות כיצד קוד C++, Go ו-V שונה במקרים ספציפיים של שימוש בתכנות.
שלום עולם
ב-C++:
#לִכלוֹל <iostream>
intרָאשִׁי(){
std:: cout <<"שלום עולם!"<< std:: endl;
}
ב-Go:
חֲבִילָה רָאשִׁי
יְבוּא "fmt"
func רָאשִׁי(){
fmt. Println("שלום עולם!")
}
ב-V:
println('שלום עולם!')
בתוכנית מאוד בסיסית זו-הדפסת הטקסט "שלום עולם!"— אתה יכול לראות ש-V הוא הרבה יותר פשוט מ-C++ או Go. אינך צריך לייבא או לכלול ספריות כלשהן עבור תוכנית פשוטה כל כך.
אתחול וקטור
ב-C++:
std:: וקטור<int> מספרים = {1, 2, 3, 4};
ב-Go:
מספרים := []int{1, 2, 3, 4}
ב-V:
מספרים := [1, 2, 3, 4]
במקרה השימוש הזה, אתה יכול לראות ש-V עדיין מייצר קוד נקי יותר משני האחרים. בניגוד לגו ו וקטורים C++, V אינו דורש מהווקטורים שלו להחזיק ערכים מסוג קבוע.
הדפסת וקטור
ב-C++:
סטד::copy (numbers.begin(), מספרים.סוֹף(),
std:: ostream_iterator<int>(std:: cout, ""));
std:: cout << std:: endl;
ב-Go:
fmt.הדפסה(מספרים)
ב-V:
println (מספרים)
הפונקציה println של V יכולה להדפיס את המשתנה הוקטור באופן מקורי, בדיוק כמו של Go, למרות שהאחרון משתמש בחבילת fmt. קובצי הכותרת של C++ iostream מספקים פונקציונליות דומה. עם זאת, עדיין תצטרך לדאוג להדפיס את האלמנטים הבודדים של הווקטור בעצמך.
קריאת קובץ
ב-C++:
#לִכלוֹל
#לִכלוֹלintרָאשִׁי(){
סטד::חוּט path = "/etc/hosts";
סטד::ifstream ו(נָתִיב);
סטד::חוּט טֶקסט;
text.assign(סטד::istreambuf_iterator<לְהַשְׁחִיר>(ו), {});
אם (!ו)
סטד::cerr << "שגיאה בקריאה מהקובץ" << סטד::endl;
}
ב-Go:
חֲבִילָה רָאשִׁי
יְבוּא (
"io/ioutil"
"עֵץ"
)func רָאשִׁי(){
נתיב := "/etc/hosts"
ב, טעות := ioutil. ReadFile (נתיב)אם שגיאה != אפס {
עֵץ.הדפסה(לִטְעוֹת)
לַחֲזוֹר
}
טקסט := מחרוזת (ב)
}
ב-V:
יְבוּא OS
נתיב := "/etc/hosts"
text := os.read_file (נתיב) או {
eprintln (שגיאה)
לַחֲזוֹר
}
לקריאת קבצים, V משתמש במודול OS כדי לספק פונקציות נפוצות של מערכת הפעלה/פלטפורמה עצמאית. אלה מטפלים במשימות כמו גישה לארגומנטים של שורת הפקודה, קריאת קבצים וטיפול בתהליכים. במקרה זה, אנו רוצים לקרוא קובץ נָתִיב ולהחזיר את התוכן, כדי שתשתמש ב- read_file (נתיב) פוּנקצִיָה. read_file מחזיר שגיאה אם אין תוכן קיים בנתון נָתִיב. אם אתה רוצה ללמוד עוד על מודולים אחרים של V, אולי תרצה לבדוק את התיעוד שלהם.
מוכן לנסות את V?
V היא שפת תכנות חדשה שעדיין נמצאת בשלבי הפיתוח המוקדמים שלה. למרות זאת, יש לו כוח רב והוא מהיר, בטוח, קל וניתן לתחזוקה.
ל-V יש קוד נקי יותר מ-C++ ו-Go. זה מצביע על כך ש-V יכול לסייע למתכנתים לעמוד באחד מעקרונות התכנות הבסיסיים. אז, האם אתה מוכן לנסות את V?