תגיד משהו השתנה מאז ?

לפני שבוע עשיתי הרבה טיולים למרכז, ואחד מהטיולים היה ללכת להרצאות של נזירי פרל (Perl Mongers) אשר Sawyer ארגן. חבר אשר עובד באיזור החליט גם הוא להגיע ולשמוע קצת מה קורה שם.

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

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

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

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

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

אז מה השתנה מאז ? ובכן משנת 2009 הרבה השתנה ב FPC ואפילו דלפי. למשל אני יכול כיום ליצור משתנים בעברית בדלפי 2010 (אבל למה ?!) ממש כמו בשפות דינאמיות אחרות (כן, דלפי כבר פחות ופחות שפה מהודרת ויותר שפה דינאמית), ב FPC וגם בדלפי יש כבר מזמן (יחסית) תמיכה ב operator overloading, יש אפילו תמיכה ב genercis ובעוד המון יכולות, כולל קבלה של איטרטורים טבעיים בשפה (ממש כמו ברובי). והרשימה רחוקה מלהיות מלאה. חלק מהדברים שנכנסו לפרל 5.10 ו 5.12 שלא לדבר על פרל 6, כבר קיימים כמה שנים טובות בפסקל ולמרות שהם מוצגים כחידושים, הם בעצם מחיזור רעיונות שממומשים כבר.

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

אז אני לא מבין את השאלה, מה השתנה מאז מה בפסקל ?

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

21 תגובות על תגיד משהו השתנה מאז ?

  1. ארתיום הגיב:

    שני ציטוטים שלך:

    ראשון:

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


    השני

    מרבית השפות הם write only כדוגמת ++C‏

    עידו, מתי כבר תלמד C++‎ ותפסיק לשעשע קהל? :-)

    עכשיו ברצינות… באמת, תעשה מאמץ להבין את השפה, אתה פשוט בא עם גישה לא נכונה.

    האמת, גם אני כשהתחלתי לכתוב ב־C++‎ לא ממש אהבתי מה שהיה לה להציע, עד שהתחלתי להבין את החשיבה שלה והבנתי עד כמה היא מקצרת את התהליכים ומזרזת את הפיתוח.

    גם למדתי לקרוא אותה בצורה נכונה… כל שפה צריך ללמוד כדי שמה שכתוב בה לא ייראה כמו ג'יבריש.

    בנימה אופטימית זאת שאלה קצרה על generics ב־FPC. האם הם דומים יותר למה שיש ב־C#/Java או לאלה שיש ב־C++‎. קרי

    האם בדוגמה הזו: http://wiki.freepascal.org/Generics

    אני יכול להוסיף למשל מתודה:

    procedure TList.CallFooForAll(Value: T);
    begin
      for i:=1 to Length(Items) do
          Items[i].Foo;
    end;
    

    כאשר אני לא מגדיר **שום דרישה** על ממשק של T. כי למשל ב־C#/Java אתה צריך להגדיר ב־TList ש־T הוא מממש ממשק כמו IFooCallable כדי שהוא ידע של־T יש מתודה Foo

    • ik_5 הגיב:

      ארתיום, אני מכיר קרוב ל25 מתכנתי ++C ורק אחד מהם יודע להסתדר עם כל דבר שיתנו לו בה, והאדם הזה הוא אתה.

      מה שמדהים זה שאני לפעמים מבין קוד שנותנים לי ב ++C ומי שנותן לי אותו שמתכנת בשפה לא מבין בכלל מה כתוב שם.

      דבר שני, הגישה של פסקל מאז ומתמיד היא של strong type. כלומר אני חייבים לדעת מה התיפוס שמשתמשים בו, וזה לא שונה עם generics, אתה צריך להגדיר משהו שהוא specialized במשהו. יש דרך נחמדה לעשות "hack" לזה אבל בתוך המחלקה שלך, על ידי הגדרה שם של specialized של T, ואז זה תמיד יעבוד עבורך.

      • ארתיום הגיב:

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

        תשמע, בתור מי שמתפרנס מכתיבת הקוד ב־C++‎ וגם קורא קוד של C++‎ של אחרים. תאמין לי ב־C++‎ יש הרבה רמות כתיבה שונות.

        אפשר לכתוב כמו שכותבים כתבה בבלוג או ב־Ynet וכולם יבינו ואפשר לכתוב כמו שש"י עגנון היה כותב… ואף אחד לא יקרא את זה.

        שוב עידו, תלמד את השפה. כי אתה לא ממש יודע על מה אתה מדבר (ותאמין לי אני דיבגתי, ערכתי ותיקנתי דברים שכתובים נוסח ביאליק – טלאים ששלחתי ל־Boost.Asio) וכמובן אני ראיתי המון קוד שכתוב ברמת "Ynet" שקל לקרוא, תחזק ולדבג גם למי שלא מי יודע את השפה.

        • ik_5 הגיב:

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

  2. meir הגיב:

    האדם ששכחת את שמו: אילן

  3. Shlomi Noach הגיב:

    כמה הערות ברשותך:

    מה שכתבת על C++ לא שונה מהתרעומת שלך על היחס שיש לאנשים כלפי פסקל.

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

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

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

    • ik_5 הגיב:

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

      ד"א יש את חלקם ב ++C (לא כולם). וזה לא עניין של גישה אלא פיזית לא קיימים. כלומר אין לי מחרוזות. יש לי מערך של תווים. בד"כ אני אצור אותו גם במשתנה דינאמי ולא סטטי (אותו הדבר אני יכול לעשות בפסקל אם אני צריך). אין ניהול זיכרון דינאמי כדוגמת new delete של ++C או new dispose בפסקל, אלא רק זיכרון סטטי שאתה צריך להתעסק בו בכל שלב ושלב.
      אין לך יכולת להחזיר ערכים לפרמטרים בפונקציות שלך, או להגדיר איך להתנהג עם הפרמטרים. אתה יכול לעשות hack מסויים שהוא לקבל את הכתובת זיכרון של הפרמטר ואז לשנות את הערך לפי הכתובת, אבל זה hack ולא תמיכה רשמית של השפה, שלפי K&R השפה לא זקוקה לזה.

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

      • Shlomi Noach הגיב:

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

        הדבר הכי חשוב במה שכתבת הוא שלא ענית לשאלה: מה פסקל יכולה לבצע ש-C לא יכולה. אין דבר כזה. אתה משווה פיצ'רים של השפה. זה לא אומר שפסקל יכולה *לבצע* יותר, אלא שיש לשפה פיצ'ר כזה וכזה, שכיף להשתמש בו.

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

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

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

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

        כל הדברים שפירטת מתייחסים למבנה השפה ונוחיות השימוש בה. נכון! פסקל תהיה יותר נוחה לשימוש, כמו Java וכמו python וכמו C# וכו'. שפות אלה נוחות יותר ללימוד, מייצרות פחות באגים (או, לייתר דיוק, מצמצמות את כמות הבאגים הקריטיים ו/או משפרת את הנגישות לתיקון שלהם).

        חלק הארי בשפת תכנות הוא כמות ואיכות הספריות הבאות איתה. כאן קשה לנצח את java, python, c# וכו'. יש להם עושר אדיר של ממשקים, פריימוורקים וכו'.

        אבל עשית מה שלא רצית שיעשו לך: בשביל לתמוך בפסקל החלטת לרדת על C. מה הקשר?

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

        • ik_5 הגיב:

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

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

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

          "אולי אתה מתכוון שאין garbage collection? נכון. אז מה? במה זה אוצר שפסקל מסוגלת לבצע משהו ש-C לא יכולה לעשות?
          ל-garbage collection יש יתרונות רבים, וגם חסרונות רבים. יש מערכות רבות שלא תוכל לכתוב בשפה שיש בה garbage collection."

          אני לא מדבר על garbage collector אלא על new ו delete שיש לך ב ++C ועל new ו dispose בפסקל. אתה לא מקצה שם גודל קבוע של זיכרון אלא גדל בהתאם לצורך ללא צורך שלך להתערב בזה כל פעם. זה נקרא ניהול זיכרון דינאמי, בניגוד ל GC אשר עוקב אחרי העבודה שלך ומנסה להחליט מתי אתה לא צריך זיכרון מסויים ומשחרר אותו או אוגר אותו בצד.

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

          "מה? C זוהי ה-שפה שבה עושים אינטגרציה עם אסמבלי."
          אין לך ב C תמיכה באסמבלר, יש לך תמיכה בלהעביר פרמטרים למקשר שהם בשפר אסמבלר. אתה לא שולט בזה, אלא מעביר אוסף תווים שמפורשים כאסמבלר. אם אתה רוצה להעביר ערך, אז אתה מעביר עם format string

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

          "כל הדברים שפירטת מתייחסים למבנה השפה ונוחיות השימוש בה. נכון! פסקל תהיה יותר נוחה לשימוש, כמו Java וכמו python וכמו C# וכו'. שפות אלה נוחות יותר ללימוד, מייצרות פחות באגים (או, לייתר דיוק, מצמצמות את כמות הבאגים הקריטיים ו/או משפרת את הנגישות לתיקון שלהם)."

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

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

          "חלק הארי בשפת תכנות הוא כמות ואיכות הספריות הבאות איתה. כאן קשה לנצח את java, python, c# וכו'. יש להם עושר אדיר של ממשקים, פריימוורקים וכו'."
          מצטער לאכזב אותך, אבל כמה ש C בשימוש וכמה ספריות שיש לה, עדיין לבנות ולהפיץ קוד זה סיפור מסובך ואתה צריך ללמוד 20 טכנולוגיות שונות בשביל זה.

          בפסקל אני מדבר עם המהדר במקום המתאים. אני יודע להגיד לו אם הקוד הוא ספרייה (משותפת, סטטית, וכו'), אני יודע להגיד לו אם אני מייבא (או מייצא) את הקוד הזה ממקור מסויים, ומה המקור והרשימה עוד ממשיכה. אם אני צריך להתאים את עצמי לMakefile של עולם היוניקס, בגלל C, אתה תראה 2-3 שורות אם אני כותב אותו לבד ללא כלים (קיימים שיש עם FPC למשל).
          בפסקל אני צריך להדר את ההקובץ הראשי אם הוא ספרייה או התוכנה וכמעט בכלל ללא צורך להעביר משהו למהדר עצמו.
          יש לך מנהל חבילות ומנהל פרוייקטים משותפים בפסקל. יש לי ספריות לכל דבר שאתה לא חולם עליו. וזה כולל כמובן binding וגם כלי אוטומטי שעושה את זה (שאני לא אוהב ומעדיף לעבוד קשה יותר ידנית).

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

          "לדעתי האישית הבעייה האמיתית של פסקל היא שהיא לא נפוצה היום. היא אכן מתאימה ללימוד. אם היא היתה חוזרת להיות פופולרית – למה לא? אבל היא לא פופולרית היום."
          אז איך זה שאני מקבל בישראל אחת לתקופה הצעות עבודה כמתכנת דלפי, ופוגש פעם בחודש עד 3 חודשים מתכנתים חדשים שיודעים פסקל בצורה מקצועית ? איך זה שבפורום של פסקל בlinkedin מתחננים לעוד מפתחי פסקל כי יש יותר ביקוש עבודה מאשר אנשים שמחפשים עבודה בזה ?

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

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

          • Shlomi Noach הגיב:

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

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

            פופולריות של שפה היא בעיני פרמטר חשוב בבחינת כדאיות השימוש בה וכדאיות הלימוד שלה. כמה קל למצוא חומר כתוב? כמה גדולה קהילת המשתמשים?
            לצורך השוואה, אני עובד הרבה עם MYSQL. אני חי בסביבה שלו. קיים מוצר מצויין מתחרה ושמו PostgreSQL. אני סבור שהבעייה העיקרית של postgresql היא חוסר הפופולריות שלו. אני בכלל לא נכנס לעניינים טכניים. אין ספרים טכניים על פוסטגרס מאז 2005. קשה מאוד מאוד למצוא חומר כתוב מקצועי, הרצאות וקורסים הם נדירים (בארץ יש שמועה על מישהו אחד שמעביר קורסים, בפרטי). הקהילה קטנה באופן משמעותי *ביחס* ל-mysql. *ביחס*.
            המשמעות היא שקל יותר (וגם זה יחסי, כי קשה) למצוא מומחים ל-mysql מאשר מומחי postgresql. זה פרמטר קריטי עבור חברות. חברות מחפשות טכנולוגיה שבה קיימים פתרונות זמינים, קיים ידע זמין, קיים יעוץ זמין, קיימת תמיכה זמינה.
            ככל שמוצר/שפה/טכנולוגיה הם יותר פופולריים, כך הכדאיות להשתמש בהם עולה, לפי הפרמטר הזה.

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

          • ik_5 הגיב:

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

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

            אתה חושב שיש ב C מחרוזות ? אז אם אני נותן לך את ההצהרה הבאה:
            char * foo

            במה מדובר ? האם אתה בטוח שמדובר במחרוזת ולא במשתנה דינאמי שמכיל בתים אשר לא קשורים לתווים ?

            אותו הדבר ד"א לגבי
            char foo[]

            השימוש שלך בהצהרות האלו הוא מה שמשנה האם אתה תראה בזה כמחרוזת או כאסופה של בתים.

            לפני כמה חודשים ברשימת דיוור של רובי ישראל, מישהו העלה צורך ליצור מערכת גרפית כלשהי לעבודה עם תמונות, כאשר הוא לא רוצה לתכנת עם image magic. אמרתי לו שמה שהוא תאר, הוא יכול לעשות עם דלפי ב4 שורות קוד בערך, והוא אמר שהוא מאוד היה שמח לחזור לדלפי (וואוו אנשים יודעים דלפי בכל מקום), אבל הוא צריך לעבוד מול מתכנתי C ובסוף הם כתבו אפליקציה של למעלה מ3,000 שורות קוד לעשות בדיוק אותו הדבר, וזה מדהים כמה הדבר חוזר על עצמו בעולם.

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

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

          • Shlomi Noach הגיב:

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

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

  4. ג'וני בוי הגיב:

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

    • ik_5 הגיב:

      אני למען האמת מפתח מוצר בעסק שלי כרגע מבוסס על fpWeb ולא על שפה דינאמית מסיבות מאוד פרקטיות. אני חייב לציין שבהתחלה פחדתי הרבה מאוד מלפתח בפסקל אפליקציות מבוססות web, אבל עכשיו כשאני עובד על זה, אני רואה שהשד לא נורא כל כך, והזמן שלוקח לי לבדוק ולתקן בעיות בין לבין הוא מאוד מהיר, היות ואני מתקן, לוחץ על CTRL+SHIFT+F9 שאצלי זה אומר לבנות, ועושה refresh או משהו בסגנון בדפדפנים. לא לוקח לי חודש להדר, אל מספר שניות בודדות, וכמעט כל התלויות שלי לא דורושת ממני התקנה של מנהלי חבילות וכו' אלא אני יכול לספק קובץ בודד שעושה הכל, שזה יתרון עצום במקרה הספציפי שלי ובגללו בחרתי בזה (סוג של מוצר מדף שצריך כמה שפחות התערבות ועבודה בהתקנה שלו).

      • ארתיום הגיב:

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

        שאלה לא קשורה, מאיזו סיבה בחרת ב־Pascal ולא ב־Ruby למשל?

        אגב, במקומך הייתי בוחר ב־CppCMS במקום fpWeb :-)

  5. Lior Kaplan הגיב:

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

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

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

    • ik_5 הגיב:

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

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

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

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

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

  6. Gabor Szabo הגיב:

    I sorry for changing to English but though I read and speak Hebrew, writing would take me ages and would mostly generate amusement with my typos.

    I was at the meeting and I think I remember the laugh I did not think it was hurtful. So I would like to apologize in the name of the Perl Mongers if that bothered you.

    Recently SawyerX wrote about why he does not write in Pascal.

    I think he also told you that we would be happy to hear a presentation about Pascal during the Tel Aviv Perl Mongers meetings.
    I personally would also be interested on the features you think make the Pascal IDE so great. So I might be able to copy some of the ideas to the IDE I am building.

    One thing that is probably obvious to you but was a bit unclear to me from some of the earlier responses in this blog. IMHO you cannot convince people to switch to Pascal. You might get some people to try it and start using it too where it is appropriate.

    • ik_5 הגיב:

      Hi Gabor, I did not get ofended by people laughing at it, nad unlike what it seems, I do not get offended by people that mock the language.

      The problem like I wrote in Hebrew, is that I often been told to be quit and not to talk about it at all. People try to force me not to talk about tools and trades of Pascal that truly can help people to do better job, and ease their work, sometimes even where Perl can not do so. If you'll read my answer to Lior Kaplan and few others, you see that I mention it.

      Another thing is, that for example Hamakor constantly try to talk about how good open source is, but when I showed Lior (not only him, but his response was very harsh) that with FPC you have a very interesting thing going on regarding the propriety market that start using FPC, and even sell additional tools for it like they do with .NET, Delphi, and even Java, whil FPC is open source project that does not have any commercial support what so ever, it's completely voluntary project with no money at all.
      Lior refused to listen and even bashed me to offer such idea. so I have no real stage to share things about it. And I constantly get attack from people like I wrote before, when talking about this tool, so I'm getting more fanatic with the way I present things because people try to quite me.

      Regarding Pascal IDE, well you have to choose what is the IDE you wish to know about, for FPC alone you have 3 open source IDE's, and for the entire Pascal language (and dialects) you have a lot more. :)

      Like I wrote in few of my blog posts, I meet a lot of people that really love to program in Pascal, but have no idea that besides Delphi you have anything else, and they moved from Delphi when it started to be an implementation of .NET. And I do not have a clear stage (unlike Perl, Ruby and Python) to talk about this things, and I already explained the rest of the problem…

  7. Gabor Szabo הגיב:

    Talk to Sawyer regarding a possible talk at the Tel Aviv Perl Mongers. You could also talk to the organizers of the various other user groups to see if any of them is interested in such a talk.
    You might need to adapt your message and presentation to the specific group though.

    Regarding IDEs, I am interested in features not in specific IDEs. So if you want to give a presentation (or blog) about the 10 most important or coolest features of *any* of the Pascal IDEs then go ahead. The features don't have to be in a single IDE!

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s