ABA


"מה היא שפה חזקה? איך משווים שפות תיכנות?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #5554 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 5554
dryice

דרג אמינות חבר זה
   21:27   02.04.03   
אל הפורום  
  מה היא שפה חזקה? איך משווים שפות תיכנות?  
 
   עבר עריכה לאחרונה בתאריך 02.04.03 בשעה 21:29
 
(חזרתי מחופשה קצרה, עכשיו אני כאן)
אני נעלתי אשכול קודם רק בשביל לעשות קצת סדר.

בשאלה מה היא שפה חזקה, עלינו לבחון מספר תחומים:
1) expressibilty מה היכולת להשתמש בשפה בשביל לבטא את הרעיונות
שלי?
2) efficincy מה היעילות שבא היא עובדת, זמן פיתוח כולל,
זמן ריצה כולל, זמן קומפילציה כולל.
3) נוחות למתכנת.

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

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

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

נוחות, זה הדבר שהכי קשה להשוות. אבל מה שלמעשה מסתכלים עליו
זה על עקומת הלמידה, כמה זמן לוקח ללמוד ולתרגל כדי להגיע לרמת
בקיאות/נוחות כלשהיא.

עם כלים אלו(ואחרים אם אתם רוצים להציע) אפשר לחזור ולהתווכח
על VB וC וC++ ועוד.

DRYICE


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  ובכן... AlexKarpman 02.04.03 23:26 1
     זמן קומפילציה, dryice 03.04.03 13:00 2
         וואו AlexKarpman 03.04.03 14:31 3
             צריך קצת יותר מאוטומט מחסנית. dryice 04.04.03 14:48 9
  יש לי דבר אחד וחשוב מאוד להוסיף: Dudenland 03.04.03 20:59 4
     אתה הולך לפתוח פו ויקוח נוסף AndreyT 03.04.03 21:21 5
         קרא את השורות האחרונות בהודעה הראשונה... Dudenland 03.04.03 22:56 6
     נכון AlexKarpman 04.04.03 11:49 7
         צודק ! שגיאות יש לכולנו- בתחום אחד או אחר!!! Fire_Bullet 04.04.03 13:24 8
         אני רואה שלקחתם קשה את ה''שגיאות כתיב''... Dudenland 04.04.03 15:11 10
             אין לי שום דבר נגדך! להיפך אתה אחלה גבר- Fire_Bullet 04.04.03 17:47 11
                 עם כל השפות ניתן לעשות הרבה מאוד דברים אבל... Vidi 04.04.03 19:17 12
                     ביטאת את עצמך מצויין ! Dudenland 04.04.03 22:35 13
                         דבר ראשון אני לא עולה חדש ! AndreyT 05.04.03 00:48 14
                             קודם כל, סליחה אם קיבלת את הרושם המוטעה... Dudenland 05.04.03 12:55 15
                                 שוב טעות AlexKarpman 09.04.03 19:15 17
                                     ההגדרות אומנם לקויות, אבל מאחוריהם יש משהוא. dryice 09.04.03 21:40 18
                                         אתה מבין... AlexKarpman 10.04.03 14:12 19
                                             טוב או רע זכות לבחור זה טוב. dryice 10.04.03 18:34 20
                                                 אני לא אחזור על זאת שוב AlexKarpman 10.04.03 18:51 21
             לא קשור AlexKarpman 09.04.03 19:08 16

       
AlexKarpman

   23:26   02.04.03   
אל הפורום  
  1. ובכן...  
בתגובה להודעה מספר 0
 
   עבר עריכה לאחרונה בתאריך 02.04.03 בשעה 23:28
 
בס"ד

כמה דברים לפני שאני אכנס לעניין:
1. נזכרת לנעול את האשכול *אחרי* שאני ו-DUDENLAND הגענו להסכמה.
2. דיי נדחפת אלינו :-P , אבל זה בסדר כי מילא רציתי לשאול אותך...
:-)

עכשיו לעניין:
1. בנוגע ל-Expressibility.
זה חשוב מאוד, אבל -
*זה אישי ומשתנה בין אדם לאדם.
*שפה מסויימת יכולה להיות מאוד expressable לגבי משימה אחת, ו-unexpressable לגמרי לגבי מדימה אחרת.
אבל בכ"ז זה מדד טוב.

2. יעילות.
*לפעמים חשובה יותר היעילות של האלגוריתם מאשר ה"יעילות" של השפה.
לעתים עדיף להשקיע באלגוריתם טוב יותר, או בארכיטקטורה טובה יותר, ולא לעבור לשפה אחרת; במיוחד במקרים בהם השפה נבחרה בגלל סיבות כמו expressibility וכו'.
*אני דיי נוטה להתעלם מזמן הידור, אבל אולי זה חשוב.
אםתוכל לתת דוגמא בה זה חשוב אני אודה לך.
*מהניסיון שלי זמן פיתוח בא על חשבון זמן ריצה ולהפך(אם ניקח את VB ואת CPP כדוגמא).

3. נוחות למתכנת.
אני מכליל את ה"נוחות למתכנת" תחת ה-expressibilty.

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

4. עד כמה השפה נתמכת ותומכת בטכנולוגיות שונות שיכולות לעזור בפיתוח.
לדוגמא: אם אנחנו מתכננים יישום מבוזר על רשת TCP/IP, באיזושהי נגזרת של ארכיטקטורת n-tier, אולי נרצה להשתמש בדוטנט ואז שפות דוטנט מקבלות עדיפות, אולי נרצה להשתמש בטכנולגויות JAVA במקום, ואז JAVA מקבלת עדיפות, אולי נרצה להתשמש ב-COM+ ואז VB ו-CPP בסביבת VCPP מקבלות עדיפות.
אני חותר לכך שלפעמים המצב הכולל משפיע על בחירת השפה.


עמדתי לכתוב עוד, אבל אני רוצה ללכת להמשיך לראות את המשחק...
אז נמשיך אח"כ.
בינתיים - תגובות!


בברכה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   13:00   03.04.03   
אל הפורום  
  2. זמן קומפילציה,  
בתגובה להודעה מספר 1
 
   זמן קומפילציה יכול להפוך לבעיה, קומפיילרים הם לא תמיד יצורים
יעילים במיוחד, בשביל שפה כלשהיא המבוססת על דקדוק חסר הקשר
כלשהוא(ללא מגבלות עליו) ניתן להדר רק בO(N^3) רובם ככולם של
השפות שאנו נתקלים בהם היום תוכננו במיוחד(ע"י הגבלת סוגי
הדקדוקים) בשביל שיהיה אפשר להדר אותם בO(N)
ואילו עדיין בפרויקטים גדולים, זמן ההידור יכול להיות בעייתי.
הKernel של לינוקס דורש מספר שעות לבנייה מחדש.
להדר מערכת Gen2 לוקח לרוב מספר ימים, על מחשב ביתי חזק.

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

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

כמובן שלintrepter יש את החסרונות שלו, בזמן ריצה וביכולת זיהוי
שגיאות בעיקר.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   14:31   03.04.03   
אל הפורום  
  3. וואו  
בתגובה להודעה מספר 2
 
   בס"ד

אני מבין שבשאר הדברים אתה מסכים איתי:-)

אוקיי...
לא ממש השקעתי בללמוד על מהדרים, או על "אוטומטים ושפות פורמליות":-)
אז נסתפק בידע כללי...

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

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

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

אולי עדיף שאתה תפרט במקום שאני סתם אזרוק שטויות לאויר...:-P


מה זה Gen2?

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

בברכה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   14:48   04.04.03   
אל הפורום  
  9. צריך קצת יותר מאוטומט מחסנית.  
בתגובה להודעה מספר 3
 
   אכן ניתן לבנות אוטומט מחסנית עבור כל דקדוק חסר הקשר
ולזהות תקינות בזמן O(N) אבל לצורך קומפילציה צריך יותר מזה,
צריך לבנות עץ גזירה של ממש, והוא צריך להיות של הדקדוק
שאותו כתבנו ולא איזה דקדוק שקול אליו. בבניית אוטומט
אנו תמיד מעבירים את הדקדוק לצורה קנונית כלשהיא, בצורה הקנונית,
אי אפשר לכתוב קומפיילר, אין שום משמעות לאף משתנה.

בפועל יש מספר טכניקות לבנות קומפיילרים כיום, ולכל אחת
יש איזו תת-קבוצה של דקדוקים חסרי הקשר, בגדול מטפלים רק בדקדוקים
שניתן לזהות בסריקה משמאל לימין.
לרוב אנשים לא כותבים את הקומפיילר בעצמם אלה נעזרים בכלים
כמו YAC/BISON בשביל לכתוב את הקומפיילר, אלו בעצם נותנים לנו
צורה לספר למחשב מה זאת השפה מה המשמעות וכו.
יש דקדוקים חסרי הקשר שעושים צרות בהקשר הזה, למשל רקורסיה
שמאלית:
S -> Sa|e
על כן נמנע מרקורסיה שמאלית ונשתמש ברקורסיה ימנית:
S->aS|e

כמובן שרקורסיה שמאלית היא לא תמיד פשוטה כל כך לזיהוי:
S->ABc
A->B|e
B->c|S
גם פה יש רקורסיה שמאלית.

זה לא חומר פשוט מאוד, אני אמליץ על ספר שנהוג לכנותו
"הדרקון האדום" של Aho שמו הרשמי אם זכרוני אינו מטעני(העותק
שלי בחיפה כעת ואני לא שם)
Compilers Principle Techniques and Design
ספר מצוין, כל העולם עובד עמו והוא מסביר מצוין כל מה שצריך לדעת כל קומפיילרים. יש גם פרקי מבוא, להשלמת רקע באוטומטים
ושפות פורמאליות.


Gen2 זאת הפצה של לינוקס שמיועדת שתקמפל הכל הכל הכל אצלך
על המחשב עם אופטימיזציות למחשב שלך, זה יכול להוסיף לך 10%
לביצועים בקלות.

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

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   20:59   03.04.03   
אל הפורום  
  4. יש לי דבר אחד וחשוב מאוד להוסיף:  
בתגובה להודעה מספר 0
 
   לא נאמר כאן שום דבר על תלות של שפה.
שפת תכנות, בין אם היא מתאימה או מיועדת ליצירת ממשקים, או בין אם היא מתאימה לפיתוח תוכנות לחומרה וכו', אם היא תלויה בתלות בלתי ניתנת לוויתור בשפת תכנות אחרת, לא תחשב, לפחות לדעתי, ליעילה.
אמנם, כל שפת תכנות תלויה במידה מסוימת באסמבלי, אבל לא צריך להיכנס לתלות הזו, מכיוון שזוהי תלות מחייבת, כמו התלות של הקומפילר בשפת המכונה.

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

VB קרובה יותר לשפת סקריפט מאשר לשפת תכנות...

Dudenland


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AndreyT

   21:21   03.04.03   
אל הפורום  
  5. אתה הולך לפתוח פו ויקוח נוסף  
בתגובה להודעה מספר 4
 
   על נושה שכבר התוקחנו עליו מספיק.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   22:56   03.04.03   
אל הפורום  
  6. קרא את השורות האחרונות בהודעה הראשונה...  
בתגובה להודעה מספר 5
 
   בכל מקרה... אתה לא יכול להימנע מכל השגיאות כתיב האלה ?

Dudenland


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   11:49   04.04.03   
אל הפורום  
  7. נכון  
בתגובה להודעה מספר 4
 
   עבר עריכה לאחרונה בתאריך 04.04.03 בשעה 11:50
 
בס"ד

לא נאמר כאן דבר על תלות של שפה, כי, אני לפחות, לא מרגיש שזה קריטריון.

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

אז בוא אני ארה לך מה כתבת, ואז תראה כמה זה נעים שמראים לך את השגיאות שלך:
*אם היא תלויה בתלות בלתי ניתנת לוויתור בשפת תכנות אחרת, לא תחשב, לפחות לדעתי, ליעילה.
-אתה פותח קריטריון חדש?(לפי הניסוח של המשפט הראשון)
או שאתה מרחיב את המושג יעילות(לפי המשפטו השני)?
ובכלל, אם אני אכתוב מהדר CPP בעל אותה יעילות במחינת זמן ריצה כמו תוכנה מקבילה ב-ASM, אתה תטען שה-CPP הזה פחות יעיל מ-ASM כי הוא תלוי בו?
מגוחך!


*אין דבר כזה "שפה שתלויה בשפה אחרת".
לדוגמא:
VB לא תלויה ב-CPP.
VB תלויה ברכיבים חיצוניים(פקדי ActiveX) שיכולים להכתב בכל שפה.

*איזו תלות?
"אבל עצם התלות שלה לכשהיא יוצרת את הממשקים הללו, מעידה על חולשה אמיתית"
על איזו תלות מדובר???


*ההשוואה לא הוגנת כמו שהסרתי בשרשור הקודם.
-שפת מכונה
-שפת סף
-שפת ביניים
-שפה עילית

יש חלוקה בין שפות ביניים לשפות עיליות.
CPP היא שפת ביניים.
VB היא שפה עילית.

אנימודע לכך השחלוקה הזו לא מקובלת על כולם.
אבל אין תקן לחלוקה הזו, ולכן יש חלוקי דעות...
מה לעשות...ככה זה!


*"VB קרובה יותר לשפת סקריפט מאשר לשפת תכנות..."
עכשיו בורותך נחשפה לעיני כל!
שפת תסקריט היא גם שפת תכנות.
מעצם ההגדרה - כל שפה שמתכנתים בה - היא שפת תכנות!(טעות 1)
VB היא לא שפת תסריט כי היא לא עונה לקריטרונים של שפת תסריט(טעות 2)

היו לך 2 טעויות במשפט 1 - ממש ראוי לציון!!!

מהי שפת תסריט?
לא מצאתי הגדרה ברורה לכך, אז ננסה ליצור הגדרה על בסיס השפות:
VBScript, JSCript, Perl, ActionScript.
כל השפות הנ"ל:
*פשוטות למדי(פרל לא כ"כ פשוטה, אבל אני מנסה למצוא הגדרה כללית מספיק).
*אינן מהודרות(אפשר לכתוב מהדר לפרל, אבל לא עושים את זה בד"כ, AS "נתקע" לתוך קובץ הפלאש, אבל לא מהודר למיטב ידיעתי).
*משמשות לכתיבת תסריטים קטנים לביצוע משימות פשוטות למדי(למעט פרל).
*משמשות להרחבת פונקציונאליות של מערכת(AS מוסיף לפלאש, JS ו-VBS מוסיפות את ה-D ל-HTML).

נכון יש הרבה שפות שנחשבות לשפות תסריט והן ***לא*** פשוטות עד כמה שתיארתי.
אבל הסיבה לקרוא להן שפות תסריט היא אינטואיטיבת(Python של סקריפט???)

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fire_Bullet

   13:24   04.04.03   
אל הפורום  
  8. צודק ! שגיאות יש לכולנו- בתחום אחד או אחר!!!  
בתגובה להודעה מספר 7
 
   ואם כבר אז תתקן אותו- וזה רק במקרה שהוא מתיר לך לעשות זאת.
ככה לפחות הוא ילמד (רק אם הוא רצה, כאמור).


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   15:11   04.04.03   
אל הפורום  
  10. אני רואה שלקחתם קשה את ה''שגיאות כתיב''...  
בתגובה להודעה מספר 7
 
   אפשר לחשוב... מה כבר אמרתי... לא נראה לי שמישהו באמת נעלב מזה...
לדעתי, זה רק חלק מה"התקוממות" שלכם נגד הדברים שלי, ואתם משתמשים בזה, לא שיש לזה קשר, כדי להצדיק את אימרתכם.
אני בטוח שאתם לא רוצים שיעור לשון, אבל בשבילכם, זה נראה הכרחי:

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

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

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

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

כשדיברתי על VB, לא טענתי בכלל שהיא שפת סקריפט, אלא הא משהו בין סקריפט, לתוכנה, ואלו הסיבות:
1. פשוטה למדי, כמו בשפות סקריפט.
2. לא מחויבת להידור... פועלת בצורה דומה ל-VBA, ולכן, אפילו מאפשרת להריץ קוד VB בזמן ריצה, בדיוק כמו בסקריפט.
ישנן עוד הרבה סיבות, אבל אני לא אפרט אותן כאן, כי מה שהצגתי מתאר בהחלט את הסיבה לדברי.

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

Dudenland


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fire_Bullet

   17:47   04.04.03   
אל הפורום  
  11. אין לי שום דבר נגדך! להיפך אתה אחלה גבר-  
בתגובה להודעה מספר 10
 
   עבר עריכה לאחרונה בתאריך 04.04.03 בשעה 17:47
 
לפי מה שהתרשמתי ממך בכל זמן שהותי בפורום.
אין לי ידע רב בתיכנות אבל גם לי פעם היו מלא, אבל באמת מלא, שגיאות
כתיב. לא אהבתי את זה וביקשתי מאנשים לתקן אותי ועכשיו מספר השגיאות כתיב
שלי ממש הצטמצם! זה לא הנושא לדיון- לפחות לא באשכול זה.

מצטער אם מה שכתבתי היה נראה לך כמשהו אישי... בכלל לא!

המשךגלישהמהנהבפורום!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות
   19:17   04.04.03   
אל הפורום  
  12. עם כל השפות ניתן לעשות הרבה מאוד דברים אבל...  
בתגובה להודעה מספר 11
 
VB היא שפה שמיקרוסופט המציאה.
מה שמיקרוסופט בעצם רצתה זו שפה המיוחסת רק לה אשר קלה מאוד לשימוש בכדי למשוך מתכנתים רבים לסביבת העבודה של הווינדוס.
כאשר מיקרוסופט בנתה שפה זו היא התחשבה רק בנוחותה ולכן היא ממישה כמות גדולה של פעולות ממשק שישמשו את המשתמשים בה.
מיקרוסופט נכשלה בקטע זה מכיוון שישנם הרבה פעולות ממשק אשר עובדות לאט, לא עובדות או מיוצגות בדרך לא טובה ותלותית.
לדוגמא אם תבנו תוכנית ב VB ותפרסמו אותה היא לא תעבוד בשום מחשב שאין לו את הדיאלאלים של VB שהם דיאלאלים שכוללים את פעולות הממשק של מיקרוסופט.
C++ לעומת זאת היא שפה שיותר קרובה למערכת, בC++ המתכנת בונה לעצמו את פעולות הממשק ואת רוב הייצוגים, ב C++ התלות בגורמים חיצוניים (חוץ מיחידות הספרייה שלה) קטן בהרבה מ VB מכיוון ש C++ לא מיוחסת לשום מערכת הפעלה אלא ממומשת בכולם.
אני מקווה שהבנתם את מה שכתבתי כי אני לא מבטא את עצמי טוב מידי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   22:35   04.04.03   
אל הפורום  
  13. ביטאת את עצמך מצויין !  
בתגובה להודעה מספר 12
 
   זה בערך מה שאני מנסה להעביר פה כבר כמה ימים, ומשום מה אני נתקל ב"מכשולים"...

VB היא כן שפה שמותאמת לצרכיה של Microsoft, והיא שפה תלותית בכל מה שקשור לעבודה עם פקדים, ולתפקוד במערכת ההפעלה.

אגב, ++C אינה תלויה ביחידות הספריה שלה, מכיוון שלאחר קומפילציה, הלינקר מחבר את כל הקבצים, כולל את ההדרים לקובץ בינארי אחד.
++C עובדת ישירות מול מערכת ההפעלה, באמצעות קריאות לפונקציות שהמערכת מספקת לשם יצירת התכנית, לא משנה אם מדובר ב-Windows או ב-Linux/Unix וכו'...


Dudenland


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AndreyT

   00:48   05.04.03   
אל הפורום  
  14. דבר ראשון אני לא עולה חדש !  
בתגובה להודעה מספר 13
 
   אני כבר 8 שנים בארץ.
ושגיעות הכתיב הם בגלל שאני לא כל כך השקעתי זמן
בלהיפתר מהם.

דבר שני ,אנחנו חוזרים שוב על אותו הויקוח.
אני לא חושב שמישהו כאן ישתכנע שהצד השני צודק,
הויקוח יכול רק לבלבל את המתחילים.

דבר שלישי,כל שפה מותאמת למתרות שבישבילם בנו אותה .
ולדעתי מה שצריך לעשות זה טבלה (או אשקול חדש)
ושם יכתב יתרונות,חסרונות ,מטרות,ונתונים נוספים על כל שפה
ושכל אחד יוכל לבחור את השפה המתאימה לו על פי צרכיו.

ועוד דבר,
נכון תוכנה שנכתבה בVB זקוקה ל DLL ים כדיי לפעול
אבל ה DLL ים האלה באים יחד עם WIN XP .
שהוא ה WINDOWS שיש לרוב האנשים היום ,לכן הבעיה הזות
תיפתר מעצמה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   12:55   05.04.03   
אל הפורום  
  15. קודם כל, סליחה אם קיבלת את הרושם המוטעה...  
בתגובה להודעה מספר 14
 
   בכל מקרה, הויכוח הזה לא אמור לשכנע... אין פה עניין של שכנועים...
הדיון פה מסובב על עובדות, על מקרים שאנחנו נתקלים בהם, ועל המסקנות שאנחנו מסיקים מכך...
להיפך, מתחילים יכולים ללמוד מכך הרבה מאוד, וזה מאוד חשוב... במיוחד כשמדובר בלמידה של משהו...

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

כמו שאמרת, תוכנה ב-VB זקוקה ל-DLL's כדי לפעול, וזה לא ממש נכון להגיד שאותם DLL's באים יחד עם Windows XP...
בכל אופן, אתה צריך גם להתקין את הפקדים הנוספים, אלו שהוספת לתכנית שלך באופן עצמאי, כדי שהתכנית תפעל במחשב אחר...
כל זאת, מצביע על המגמה של Mirosoft בהפקת הסביבה VB, ומצביע גם על תלות נוספת - לפי מה שאתה אומר, אם כי אני לא מסכים עם זה, פשוט כי אצלי יש Windows XP, וכשהפעלתי תכנית שכתבתי והידרתי כשלא היה לי Visual Studio מותקן, התכנית לא פעלה, התכניות תלויות רבות בגרסת המערכת... אפילו כאשר לא משתמשים בפונקציות שנוספו לה, ושאין אותם בגרסאות הקודמות...

Dudenland


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   19:15   09.04.03   
אל הפורום  
  17. שוב טעות  
בתגובה להודעה מספר 15
 
   עבר עריכה לאחרונה בתאריך 09.04.03 בשעה 19:17
 
בס"ד

כמו שאמרת, תוכנה ב-VB זקוקה ל-DLL's כדי לפעול, וזה לא ממש נכון להגיד שאותם DLL's באים יחד עם Windows XP...
בכל אופן, אתה צריך גם להתקין את הפקדים הנוספים, אלו שהוספת לתכנית שלך באופן עצמאי, כדי שהתכנית תפעל במחשב אחר...
כל זאת, מצביע על המגמה של Mirosoft בהפקת הסביבה VB, ומצביע גם על תלות נוספת - לפי מה שאתה אומר, אם כי אני לא מסכים עם זה, פשוט כי אצלי יש Windows XP, וכשהפעלתי תכנית שכתבתי והידרתי כשלא היה לי Visual Studio מותקן, התכנית לא פעלה, התכניות תלויות רבות בגרסת המערכת... אפילו כאשר לא משתמשים בפונקציות שנוספו לה, ושאין אותם בגרסאות הקודמות...


ואם תכתוב תוכנה ב-CPP שמתשמת ברכיבים חיצוניים האם לא תזדקק להם על מחשבי המתמש?
הרכיבים היחידים שתוכנה ב-VB זקוקה להם הם VBRUN למיניהם.
כל השאר הם "הפקדים הנוספים, אלו שהוספת לתכנית שלך באופן עצמאי", שיכול להיות שהשתמשת בהם מכל שפה!


אל תדבר שטויות.
אתה מביך את עצמך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   21:40   09.04.03   
אל הפורום  
  18. ההגדרות אומנם לקויות, אבל מאחוריהם יש משהוא.  
בתגובה להודעה מספר 17
 
   תלות בשפה אחרת זה מינוח לא נכון. אבל בכל זאת
הצורה בה VB עובד, כאשר צריך סביבה נוספת שלא קיימת בכל מחשב,
ושכל תוכנית צריכה לעשות שימוש בהמון חבילות נוספות מבחוץ
שלא נמצאות על כל מחשב.

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

לא פעם ולא פעמיים, שלחו לי תוכניות שנכתבו בVB ולא יכולתי
להריץ אותם. מאוד נדיר שאני מקבל תוכנית שנכתבה בC ואני לא
מצליח להריץ אותה.

הניידות הן של executables והן של קוד מקור של VB היא ירודה מאוד.
בייחוד בהשוואה לC.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   14:12   10.04.03   
אל הפורום  
  19. אתה מבין...  
בתגובה להודעה מספר 18
 
   בס"ד

יש פה כמה עניינים.

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

שוב, הרכיב החיצוני היחיד שבאמת נדרש הוא ה-VB RunTime Libs.
ואם מפתח אמיתי פיתח אותו ולא החברים שלך(שאני די ממעיט בערכם) הוא ישלח את ה-RUNTIMES עם התוכנה, כמובן.

אם מדובר ברכיבים חיצוניים נוספים, אפשר להשתמש בהם, ואכן משתמשים בהם, מכל שפה.
אם הטענה שלך היא שב-VB משתמשים בהם יותר(מאשר ב-C טהור לדוגמא), אתה צודק רק בחלק מהמקרים, כי אם מפתחים לווינדוס לדוגמא, כמובן שמשתמשים ברכיבים חיצוניים, ול-RT לדוגמא, בכלל VB לא מתאימה אז ההשוואה נעלמת.
זהו מקרה מאוד מצומצם.
אם הטענה שלך שהחולשה של VB היא בכך שא"א לפתח תוכנה בלי שימוש ברכיבים, דבר שאפשרי ב-C לדוגמא, אתה צודק - אבל לא נוהגים להמציא את הגלגל מחדש, ובשביל זה הומצאו הרכיבים החיצוניים.
אם הטענה שלך היא שב-C אפשר לקשר את הרכיבים החיצוניים סטטית - יש לי 2 תשובות:
הראשונה היא שקישור סטטי הוא דבר רע(הודעה נפרדת ודיון נפרד).
השניה היא שיש פתרון קישור סטטי ל-VB שנקרא Fusion התוכנה מקשרת סטטית את כתונה ה-VB שלך עם כל הרכיבים החיצוניים הנדרשים.

למען האמת כאן הגענו לוויכוח אחר, לא VB מול C, אלא:
*האם עדיף קישור סטטי או דינמי?
*האם שימוש ברכיבים חיצוניים הוא טוב או רע?

בברכה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   18:34   10.04.03   
אל הפורום  
  20. טוב או רע זכות לבחור זה טוב.  
בתגובה להודעה מספר 19
 
   כשאני כותב פרויקט בC, אני יכול להסתכל על מגוון הגלגלים שיש לי
אם אחד מהם מתאים, אני אשתמש עמו, אם לא, יש לי היכולת
להמציא את הגלגל מחדש כאשר זה נוח לי.

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

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   18:51   10.04.03   
אל הפורום  
  21. אני לא אחזור על זאת שוב  
בתגובה להודעה מספר 20
 
   בס"ד

יש פתרונות קישור סטטיים ל-VB.
מובן?

העניין הוא שקישור סטטי הוא דבר חסר תועלת!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   19:08   09.04.03   
אל הפורום  
  16. לא קשור  
בתגובה להודעה מספר 10
 
   בס"ד

1. אולי בלשון אתה טוב, אבל לא בהבנת הנקרא.
אתה לא מסוגל לנתח טקסט פשוט כמו ההודעה שלי.
אני אמרתי:
"אז בוא אני ארה לך מה כתבת, ואז תראה כמה זה נעים שמראים לך את השגיאות שלך:
*אם היא תלויה בתלות בלתי ניתנת לוויתור בשפת תכנות אחרת, לא תחשב, לפחות לדעתי, ליעילה.
-אתה פותח קריטריון חדש?(לפי הניסוח של המשפט הראשון)
או שאתה מרחיב את המושג יעילות(לפי המשפטו השני)?
ובכלל, אם אני אכתוב מהדר CPP בעל אותה יעילות במחינת זמן ריצה כמו תוכנה מקבילה ב-ASM, אתה תטען שה-CPP הזה פחות יעיל מ-ASM כי הוא תלוי בו?
מגוחך!"

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

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

3. לא ענית לי..
C תלוי ב-ASM.
לפי ההודעה שלך קוד ב-C פחות יעיל מקוד מקביל ב-ASM כי הוא תלוי בו.
תחליט:
*אתה מודה בטעות שהודעה הקודמת שלך ; או
*אתה עדיין טוען כך למרות שזה לא נכון(ראיות אמפיריות).

4. בקיצור.
זה לא קשור.
הודגמא של פקדי ה-ActiveX מראה עד כמה עניין ה"תלות" מגוחך.
נניח שאני כותב תוכנה בשפה דמויית VB, ומשתמש בפקדים מסויימים(דמויי ActiveX), וישנו פקד אחד בלתי יעיל, שלא נחוץ לפרוייקט שלי.
האם זה משפיע?
כלל וכלל לא!

5. ב-CPP זה פשוט ליצור Docking Windows?
זה לא יכול להיות מסובך יותר ב-VB.
עובדתית.
קח את הקוד ב-C ותקרא לאותן פונקציות API מ-VB.
וואלה!!

6. אם אני כותב עכשיו MsgBox "Hello World!" ושומר את זה בקובץ עם סיומת VBS בווינדוס - זו תוכנה.
זה שהיא כתובה בשפת תבריט ולא מהודר לא קשור כהוא זה.
לא הזכרתי CGI בהודעה שלי ולכן ה"הידור" שהוא עובר(לטענתך) לפני ההרצה לא קשור.
דיברנו על שפות תסריט.
אל תסטה מהנושא.

7. VB היא לא שפת תסריט אלא שפת תכנות שאניה שפת תסריט מכיון שהיא עונה על הדרישות משפת תכנות ולא מתאימה לדרישות של שפת תסריט.
נקודה.


8. "בין..."
אין דבר כזה "בין..."
או שפת תכנות שהיא שפת תסריט, או שפת תכנות שאינה שפת תסריט, אין קבוצה שלישית.

9. "פשוטה למדי..."
דוגמאות.
VB הרבה יותר מסובכת מ-VBS או מ-DOS Batch.
במה היא כ"כ פשוטה?

במה היא יותר פשוטה מ-CPP?


10. "לא מחוייבת להידור"?
כמובן שכן.
אם לא מהדרים, איל אפשר להריץ?!?
אתה מדבר שטויות!

"אפילו מאפשרת להריץ קוד VB בזמן ריצה"
מתי להריץ?
בזמן עיצוב???
גם תוכנה ב-CPP רתה בזמן ריצה.
ההגדרה של זמן ריצה היא הזמן שבו התכנית רצה.

"בדיוק כמו בסקריפט"
מה הקשר בדיוק?

11. CPP חרא של שפה.
כל השפות חוץ מ-VB לא שוות כלום.
אבל אני לא אפרט.
(ככה מה שאמרת נראה, לא קשור ושטותי)
(באותה מידה שסעיף 11 שלי לא נכון מעצם היותו - כך השורה הלפני אחרונה שלך לא נכונה - מעצם היותה!)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net