חמשת השינויים המובילים מ- VB 6 ל- VB.NET

01

של 08

חמשת השינויים המובילים בין VB 6 ל- VB.NET

חמשת השינויים המובילים

Visual Basic 1.0 הייתה רעידת אדמה גדולה במהלך כל התכנות. לפני VB1, היית צריך להשתמש ב- C, C ++ או בסביבת פיתוח איומה אחרת כדי ליצור יישומי Windows. מתכנתים ממש בילו שבועות רק בציור חלונות על גבי מסכים עם קוד בררן, מפורט, שקשה לבצע ניפוי באגים. (אותו הדבר שאתה יכול לעשות על ידי גרירת טופס מסרגל הכלים תוך מספר שניות.) VB1 היה להיט וגזיליוני מתכנתים התחילו להשתמש בו מייד.

אבל כדי לגרום לקסם לקרות, מיקרוסופט עשתה כמה פשרות אדריכלות חשובות. בפרט, מכיוון ש- VB1 יצר את הטפסים והבקרות, הם לא אפשרו למתכנת גישה לקוד שעשה זאת. אתה נותן ל- VB ליצור הכל, או שהשתמשת ב- C ++.

VB 2 עד 6 שמרו על אותה ארכיטקטורה. מיקרוסופט ביצעה כמה עדכונים חכמים מאוד שהעניקו למתכנתים שליטה רבה יותר, אך בסופו של דבר המתכנתים עדיין לא הצליחו לשלב את הקוד שלהם עם קוד ה- VB. זו הייתה קופסה שחורה - וגם לא בדרך OOP הטובה. דרך נוספת לומר זאת הייתה שלמתכנת לא הייתה גישה ל"אובייקטים "הפנימיים של VB, ודרך נוספת לומר שה- VB6 עדיין לא היה לגמרי" מונחה עצמים ".

02

של 08

VB 6 - נפילה מאחורי עקומת הטכנולוגיה

instagram viewer

בינתיים, ג'אווה, פייתון ועוד המון שפות תכנות אחרות שהיו מוכוונות לאובייקט החלו להופיע. Visual Basic הלך והתקדם - בגדול! זה מצב שמיקרוסופט לא סובלת... והם החליטו לפתור את הבעיה אחת ולתמיד. הפיתרון הוא .NET.

אבל כדי לעשות את הדברים ש- NET צריכה לעשות, מיקרוסופט החליטה שהם צריכים "לשבור תאימות". כלומר, תוכניות Visual Basic היו (עם חריגים מינוריים מאוד) "תואמות כלפי מעלה" מ- VB1 עד VB6. תוכנית שנכתבה באותה גרסה ראשונה של VB תמשיך לערוך ולהפעיל בגירסה הבאה. אבל עם VB.NET, מיקרוסופט גילתה שהם פשוט לא יכולים להפוך את השפה ל- OOP לחלוטין ולשמור על תאימות כלפי מעלה.

ברגע שקיבלו את ההחלטה הבסיסית הזו, נפתחו שערי השיטפונות על עשר שנים של שינויים "ברשימת המשאלות" שהצטברו וכולם נכנסו ל- VB.NET החדשה. כמו שאומרים בבריטניה, "פני אגורה, תמורת קילוגרם."

ללא דיחוי נוסף, הנה הרשימה האישית מאוד שלי עם חמשת השינויים המובילים מ- VB6 ל- VB.NET בסדר הפוך.

ובכן... רק עיכוב אחד נוסף. מכיוון שאנחנו משתנים מ- VB6, שם מערך שהוכרז כ- my myArray (5) יש ל 6 יש לנו שישה מהם. זה רק מתאים ...

(גליל תוף בבקשה ...)

03

של 08

פרס (5) - שינויים בתחביר דמוי C

"פרס (5)", שלנו מקום 6 הפרס מוענק לבחירת קבוצות C: שינויים בתחביר דמוי C!

עכשיו אתה יכול קוד + = 1 במקום a = a + 1, ולחסוך שלוש מפתחות שלמים!

מתכנתים של העולם, לשמוח! VB הועלה לרמת C, ודור חדש לגמרי שמנסה ללמוד VB יתקרב מעט לבלבול ההמוני שמעמת את תלמידי C ++.

אבל חכה! יש עוד!

VB.NET כולל כעת "היגיון קצר חשמלי" שהכניס באגים עדינים לקוד C ++ במשך שנים כדי לחסוך ננו-שניות יקרות של זמן מעבד. היגיון קצר חשמלי מעריך רק מספר תנאים בהצהרה לוגית במידת הצורך. לדוגמה:

עמום R כמו בוליאני
R = פונקציה 1 () ופונקציה 2 ()

ב- VB6, שתי הפונקציות מוערכות אם הן זקוקות לכך או לא. ב- VB.NET, אם פונקציה 1 () שגויה, פונקציה 2 () מתעלמת מכיוון ש- R אינו יכול להיות נכון. אבל, מה אם משתנה גלובלי ישתנה בפונקציה 2 () - ממש במקרה (מתכנתים C ++ היו אומרים "על ידי תכנות לקויה ".) מדוע הקוד שלי מניב תשובה שגויה בחלק מהזמן שהוא מתורגם ל- VB.NET? יכול להיות שזה!

ל נסהקשה יותר, VB.NET תעשה זאת לתפוס קצת מזל ו סוף סוף קבל הכרה בטיפול בשגיאות "יוצא דופן".

ל- VB6 היה ה- GoTo האחרון להחזקה: "בשגיאה GoTo". אפילו אני חייב להודות שטיפול החריג המובנה בסגנון "נסה לתפוס סוף סוף" מסוג C ++ הוא שיפור עצום, ולא רק שיפור עצום למחצה.

מה, אתה אומר "בשגיאה GoTo" עדיין נמצא ב- VB.NET? ובכן... אנחנו משתדלים לא לדבר על זה יותר מדי.

04

של 08

מקום 5 - שינויים בפקודה השונים

מקום 5 הבחירה היא פרס קבוצתי: הפיקוד השונה משתנה! הם חייבים לחלוק את הפרס הזה ויש בזה גאזיליון. מיקרוסופט חוסכת כבר עשר שנים והם באמת התנתקו.

VB.NET כבר לא תומך בפונקציות VarPtr, ObjPtr ו- StrPtr אשר קיבלו את כתובת הזיכרון של המשתנים. וזה לא תומך ב- VB6 LSet ששימש להמרת סוג מוגדר על ידי משתמש לסוג אחר. (לא להתבלבל עם VB6 LSet שעושה משהו אחר לגמרי - ראה להלן.)

אנו מציעים גם להוסיף, Let, Is Missing, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar, ו- (המועדף האישי שלי!) GoSub.

המעגל השתנה ל- GDI + DrawEllipse. כך גם לגבי קו ל- DrawLine. בחישוב יש לנו עכשיו אתאן במקום Atn, Sign נכנס ל- Sgn ו- Sqrt מתאים למשחק הגדול במקום Sqr.

בעיבוד מחרוזות, למרות שהם עדיין זמינים אם אתה מתייחס לתאימות של מיקרוסופט מרחב שמות, יש לנו PadRight ל- LSB של VB6 (שוב, שונה לחלוטין מ LSet של VB6, כמובן) ו- PadLeft עבור RSet. (הנה שלוש הקשות ששמרנו באמצעות "+ ="!)

וכמובן, מכיוון שאנו נמצאים כעת ב- OOP, אל תדאג אם ערכת הרכוש, הנכסים הרוכשים ורכוש השג לא מתקיימים ב- VB.NET, אתה בטוח!

לבסוף, ניפוי באגים. ההדפסה הופכת לאחת מהאיכות של באגים. כתוב או ניפוי באגים. WritLine. רק חנונים מדפיסים הכל בכל מקרה.

זה אפילו לא נוגע בכל הפקודות החדשות ב- VB.NET, אבל עלינו לעצור את השטויות האלה איפשהו.

05

של 08

מקום רביעי - שינויים בשיחות נוהל

בתוך מקום רביעי, יש לנו שינויים בשיחות נוהל!

זהו פרס "הטוב, הטוהר והסגולה הבריאה" ומייצג הרבה קמפיינים קשים על ידי סיעת "הקוד הלא מרושל יותר".

ב- VB6, אם משתנה של פרמטר פרוצדורה הוא מסוג מהותי, אז זה ByRef, אלא אם קידדת אותו ByVal במפורש, אבל אם זה לא מקודד ByRef או ByVal וזה לא משתנה מהותי אז זה ByVal... הבנתי את זה?

ב- VB.NET, זה ByVal אלא אם כן הוא מקודד ByRef.

ברירת המחדל של ByVal VB.NET, אגב, גם מונעת מהופעה של שינויים במשתני פרמטרים בפרוצדורות בחזרה לקוד השיחה - חלק מרכזי בתכנות OOP טובה.

מיקרוסופט גם "מעמיסה" על VB.NET עם שינוי בדרישות הסוגריים בשיחות נוהל.

ב- VB6, יש צורך בסוגריים סביב ויכוחים בעת ביצוע שיחות פונקציה, אך לא כאשר מתקשרים לשכנת משנה כשלא משתמשים בהצהרת השיחה, אך הם נדרשים בעת שימוש בהצהרת השיחה.

ב- VB.NET, סוגריים תמיד נדרשים סביב רשימת טיעונים שאינם פטורים.

06

של 08

מקום 3 - מערכים הם 0 מבוסס במקום 1 מבוסס

פרס הארד - מקום 3, הולך ל מערכים מבוססים על 0 במקום על בסיס 1!

זה רק שינוי תחביר אחד, אך שינוי זה מקבל סטטוס "פודיום מדליות" מכיוון שהוא מצביע, "סביר להניח שיזיק את לוגיקת התוכנית שלך". זכרו, מקום 3 IS "פרס (2)" ברשימה שלנו. אם יש לך מונים ומערכים בתוכנית VB6 שלך (וכמה לא), זה יעלם אותך.

מזה עשר שנים אנשים שואלים "מה עישנה מיקרוסופט כשהם עשו את זה ככה?" ובמשך עשר שנים, יש מתכנתים סוג של התעלמות אוניברסלית מהעובדה שיש אלמנט myArray (0) שפשוט תפס מקום ולא התרגל ל כל דבר... למעט המתכנתים ששימשו את זה והתוכניות שלהם נראו, אני מתכוון, פשוט "מוזר".

עבור אני = 1 עד 5
MyArray (אני - 1) = לא משנה מה
הבא

אני מתכוון, באמת! ...

07

של 08

מקום שני - סוג הנתונים של הווריאנט

מדליית הכסף של מקום שני הולך לכבד חבר ותיק שהושלך לדלי התוכנות עם חלוף ה- VB6! אני מדבר על לא אחר מאשר, סוג הנתונים של הווריאנט.

ככל הנראה אף תכונה אחרת לא אחת של Visual Basic "notNet" מייצגת טוב יותר את הפילוסופיה של "מהיר, זול ומשוחרר". תמונה זו כללה את VB ממש עד הצגת VB.NET. אני מבוגר מספיק כדי לזכור את הצגת Visual Basic 3.0 מאת מיקרוסופט: "אוי וואו! Lookee כאן! עם סוג נתוני הווריאנט החדש והמשופר, אינך צריך להכריז על משתנים או לא. אתה יכול פשוט לחשוב אותם ולקוד אותם. "

מיקרוסופט שינתה את המנגינה שלה די מהר על זו והמליצה להכריז על משתנים עם א סוג נתונים ספציפי כמעט מייד, והשאיר רבים מאיתנו לתהות, "אם אינך יכול להשתמש בגרסאות, מדוע יש אותם?"

אבל בזמן שאנחנו בנושא נתונים, אני צריך להזכיר שהרבה סוגים של נתונים השתנו בנוסף להזרמת וריאנט למלט רטוב. יש תאריך חדש של Char וסגנון נתונים ארוך שהוא 64 סיביות. עשרוני הוא דרך שונה. קצר ומספר שלם כבר לא באותו אורך.

ויש סוג חדש של "אובייקט" שיכול להיות כל דבר. האם שמעתי מישהו אומר "בן הווריאנט"?

08

של 08

מקום ראשון - VB.NET סוף סוף לגמרי מונחה עצמים

סוף סוף! מדליית הזהב, מקום 1, הפרס הגבוה ביותר שאני יכול להעניק הוא ...

טה דה!

VB.NET סוף סוף לגמרי מונחה עצמים!

עכשיו כשאתה הולך לחוף הים, מתכנתי C ++ לא יבעטו חול בפנים שלך ויגנבו את שלך (חברה / חבר - בחרו אחד). ואתה יכול עדיין קוד איזון ניסיון של ספר חשבונות כללי מלא בזמן שהם מנסים להבין אילו קבצי כותרת לכלול.

בפעם הראשונה, תוכלו לקוד את הצ'יפ קרוב ככל שתצטרכו ולגשת לכל פנימי המערכת אשר לבכם חפץ בלי צורך לפנות לאותן קריאות ממשק API של Win32. יש לך ירושה, עומס יתר על פונקציות, ריבוי רב-אסינכרוני, איסוף זבל ועוד הכל הוא חפץ. האם החיים יכולים להשתפר?

האם שמעתי שמישהו אומר ש- C ++ יש ירושה מרובה. NET עדיין לא?

לשרוף את הכופר!

instagram story viewer