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 להתקין <שם חבילה>
instagram viewer

בְּטִיחוּת

כברירת מחדל, ל-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?