אפריל 18th, 2008למה ששפה תמות אם יש לה קהילה?
יש לי חבר שמשוכנע שלינוקס, PHP ועוד טכנולוגיות נוספות שאינן מבית מיקרוסופט, ימותו, וכל העולם יעבור למיקרוסופט. הטענה העיקרית שלו היא ההתפתחות של דוט נט שבכל מחזור נוספים המון תכונות ושיפורים, ואף זלזל בטענות הנגד עקב דברים שקיימים בדוט נט ואני לא מכיר מוצר דומה בPHP לדוגמה. מה שנפלתי בדיון הוא בהבהרה של נושא הקהילה. למה ששפה או טכנולוגיה כלשהיא תמות אם יש קהילה שאוהבת ומפתחת אותה?
קהילה תורמת המון להישארות שפה או טכנולוגיה במגוון דרכים:
- פיתוח של השפה עצמה. אם הם חושבים שצריך להוסיף משהו, מה ימנע מהם להוסיף? ואם באמת יש משהו אצל ה"מתחרה" שעדיין אין אצלה, והם רואים בו משהו חשוב, אז אין שום סיבה שבמוקדם או במאוחר הוא לא יגיע.
- מקומות עבודה, אנשי הקהילה שמגיעים למעמד להיות בעלי החופש לבחור את הטכנולוגיה בחברה שלהם או מקימים אחת כזו בעצמם, יבחרו את השפה שהם אוהבים, וכך יעלו את הדרישה לשפה בקרב מחפשי העבודה, ואף יכניסו אנשים חדשים לתוכה, אם הם מוכנים שילמדו אותה שם. העובדה שהשפה נחשבת "ישנה" לא תמנע מאף אחד להקים את הסטארטאפ שלו באמצעותה.
- תמיכה - אתרי אנטרנט, פורמים, אפילו מודעות דרושים כל אלה תורמים לרוח החיה שלה.
כמובן, יש סיבות שיכולות לפגוע קשות בשפה, ויותר חשוב בקהילה שלה, כמו היותה תלויה בחברה אחת שמפתחת אותה בקוד סגור, ועקב פעולות שונות יכולה לפגוע מאוד בקהילה ולצמצם אותה מהר מאוד, למרות אהבת האנשים אל אותה שפה.
קהילה היא דבר חשוב מאוד לשמירת השפה, וגם היא השפה מעולה בהעדר קהילה, אז לא יצפה לה עתיד מזהיר. דוגמא קלאסית לכך היא שפת עדה. באמצע המאה הקודמת, היה משבר גדול בתחום שפות התכנות. שפת התכנות הנפוצה אומנם היתה C, אבל בהיעדר תקן, כל חברה לקחה אותה ושינתה אותה, ובעצם יצרה שפה חדשה הדומה לC. מה שדרש ממתכנתים שעוברים מחברה לחברה ללמוד מחדש את השפה, והיו חברות שכתבו פרוייקטי ענק באסמבלר מסיבות אלה ההשקעה בפיתוח עלתה פי כמה וכמה מעלויות החומרה. כתוצאה מיכך משרד ההגנה של ארה"ב רצה שתיהיה שפה חדשה שתכיל עקרונות פיתוח חדשים, ואף ניסה כמה שיותר שתיהיה בינלאומית ע"י פתיחת תכנון השפה לכולם וקבלת מתכננים מחוץ לאמריקה. עדה היתה שפה מעולה, אולם אחת הסיבות לירידתה היא שאנשים אהבו את שפות הC ונולדה סי++ זמן לא רב אחרי, ולכן לא נוצרה קהילה חזקה שהוביל לדעיכת השפה.
דוגמה הפוכה לקהילה שנפגעה היא פסקל או גרסאת ההמשך שלה OOפסקל. בורלנד הוציאה גרסה חינמית לדלפי וגרסה בתשלום עם תוספות, אולם אחרי זמן מה הקהילה פיתחה את את התוספות של הגרסה בתשלום ואז לא היתה סיבה לקנות אותה. כתוצאה מיכך בורלנד החליטה לסגור את הגרסה החינמית, וכך פגעה קשות בקהילה עד כמעט העלמתה. (המפתחים של דלפי עברו לפתח את C# של מיקרוסופט).
אבל מסתבר שאם יש קהילה טובה, אין שום סיבה בעולם ששפה תמות. אנשים שאהבו את פסקל, התחילו לפתח תחליף בשם Free Pascal ואף הוא קיבל ייתרונות שלא היה לשפה מיקודם, כמו לכתוב פעם אחת ולקמפל את אותו קוד בכל מקום. גם את הIDE של דלפי התחילו ליצור תחליף בשם לזרוס. וככה הקהילה ממשיכה לקדם ולחזק את פסקל.
השפה לא נשארה מאחור, וממשיכה להתקדם ולהתרענן. ויש לה גם קהילה גדולה שעושה משחקים, והוציאה הרבה משחקים יפים. לכן, אין שום סיבה שאף שפה תמות, וגודל הקהילה שלה לא צריך להשפיע עליכם בבחרית השפה, כי אתם חלק ממנה, ותורמים לגדילתה.
התחלנו להקים, להשיב, ולשקם את הקהילה בארץ, ולבנתיים הקמנו רק ערוץ IRC שנמצא בirc.freenode.net #fpc-il. אם אתם יודעים קצת פסקל, גם אם הוא ישן, או סתם מתעניינים בשפות ואו רוצים לעזור להקמת קהילה מוזמנים להצטרף.
שיהיו מספיק אנשים פעילים, נוכל ביחד לקדם בצורה הרבה יותר טובה. (אתר אנטרנט וכו')
מה לי ולפסקל?
בעקרון אין, אני לא יודע פסקל, לא למדתי, ורק לפני פחות משבוע עשיתי תוכנית ניסוי ראשונה שלי.
למרות זאת, אני מעוניין בקידומה מהסיבות הבאות:
- רוב השפות של היום נהיות "וירטואליות" יותר ויותר, דינמיות ולכן פחות יעילות וכתוצאה מיכך ידרשו יותר משאבים, אומנם במקרים רבים זה יקל מאוד את זמן הפיתוח, אבל זה לא מדד עיקרי, ובנוסף לכך עם כלים טובים, ניתן גם בכלים טובים להגיע לתוצאות מהירות בשפות "מסורתיות"
- יש ייתרון רב בכך שניתן לקמפל לכל סביבה, ולכל ערכת פקדים, *מבלי לשנות שורה אחת* של קוד, אין צורך לציין להשתמש בGTK או QT בקוד, אלא רק בקימפול, ואז ניתן לחסוך את המצב כיום, שבו שבד"כ מערבבים בסיביבה אחת תוכניות מערכות פקדים שונות כי ככה באה התוכנה, והסבה שלהם לערכה אחרת, יהיה תהליך מורכב מאוד עקב שינויים נרחבים בקוד.
- השפות המובילות בשפות ה"מסורתיות" (כאלו שמקמפלות לאסמבלי של המעבד) הן C וC++ . הבעיה איתן שהן לא מפותחת בצורה מרוכזת, ויותר נכון אין אינן מפותחות. ישנו תקן שמגדיר אותם, וכל השאר זה ספריות שאנשים וחבברות יצרו, מה שיוצר מגוון רחב של ספריות שעושות דברים דומים, ולכן זה יוצר קצת "בלאגן"
אפריל 18th, 2008 בשעה 18:14
הערה, קטנה בקשה ל"שפות שלא מתפתחות". אתה טועה. אני מחכה בקוצר רוח לסטנדרט החדש לשפת C++, כי הכניסו בו של כל כך הרבה דברים מועילים כמו ביטוי lambda, הכניסו חלק גדול מ־boost ועוד.
gcc-4.3 כבר ממש חלק מהיכולות שלו.
אפריל 18th, 2008 בשעה 19:03
טוב, כאמור כפי שארתיום ציין C ו-C++ בהחלט מתפתחות. לאחרונה יצא סטנדרד חדש של C++ בשם C99 שמגדיר הרחבות טובות ורבות. הבעייה היא כאמור שחלקן הגדול לא ממומשות על ידי המהדרים של מיקרוסופט (ובורלנד) ולכן אם אתה רוצה להשתמש בהן אז אתה חייב להשתמש ב-gcc ובמהדרים אחרים תקניים יותר. גם ל-C++ מוגדרים דברים חדשים. הייתה שמועה שהוסיפו ל-C++ מנגנון Garbage Collection כדוגמת Managed C++ של .NET, אבל ייתכן שזאת הייתה רק שמועה. אני אישית מאוד לא הייתי רוצה לראות ב-C++ דבר כזה.
בכל מקרה, גם אם יש מספר ספריות שממשות את אותו הדבר - במה זה רע? לפרל יש אוסף עצום של מודולים (ספריות למעשה) ב-CPAN, עם לא מעט כפילות. כל מי שרוצה יכול להרשם ולהעלות מודולים חדשים, גם אם קיים כבר משהו שמממש אותם. אם אתה מונע מאנשים לכתוב ספריות גרועות, אתה תמנע מהם גם לכתוב ספריות טובות.
כרגע, לפסקל יש חוסר במשאבים, ולכן אנשים מתמקדים במספר קטן של ספריות כשכל אחת משמשת למטרה יעודית ויחודית. אבל אם וכאשר פסקל תהיה פופולרית, תסמוך עלי שיווצר מצב דומה לסי או לפרל, שבה יהיה ריבוי של ספריות עם פיצולים ומימושים מאפס רבים. בכל זאת מדובר על קוד פתוח שבו כל אחד יכול לפצל את הקוד, או לכתוב ספריה משלו מאפס. וגם בטכנולוגיות רבות שאינן קוד פתוח יש "בעיה" דומה.
ראה מה שאנדי לסטר כתב על כך.
אפריל 18th, 2008 בשעה 19:21
אחלה של פוסט (חוץ מהאי דיוק של התפתחות השפות), ממש נהנתי לקורא
אפריל 18th, 2008 בשעה 19:23
שלומי: דיברתי בהקשר זה על שפות שמקמפלות לאסמבלי, פרל אינה חלק מהן. כי שפות דינמיות יש באמת הרבה ספריות.
אומנם גם לסי וסי++ יש הרבה ספריות, אולם הם אינם תחת קורות גג אחת, ולכן כל מקום משתמש בדברים שלא.
אין לי בעיה עם כפילויות בסה"כ כל דבר והצורך שלו, אבל אין את הCPAN של C וC++
גם בלי קשר לCPAN לפרל ולרוב השפות ה"מודרניות" יש כבר הרבה ספריות שבאות בבסיסה ואז אתה יכול תמיד לדעת שאם אתה משתמש בהם, אתה יכול להריץ+לקמפל אותם בכל מקום שיש בו את המהדר/מפרש של השפה, סלי לדאוג לתלויות אחרות. כמו כן ראה תגובה לארתיום (נוסף רק בשביל הרקורסיביות :P)
ארתיום: אני יודע שהתקן האחרון של סי++ היה ב99, ואני חושב, אם כי לא בדקתי, שהתקן לפסקל הרבה יותר ישן, אולם תקן זה לא הכל, יש המון ספריות מסביב, ראה תגובה לשלומי
אפריל 18th, 2008 בשעה 19:35
האמת נראה לי שהנעיין הפוך.
אם יש קהילה שמפתחת, אז השפה לא מתה, למרות שהחברה חדלה לפתח אותה.
אני הייתי בקהילה של מפתחים למחשב כף יד שנעלם מהעולם בשם clie, מכשיר של סוני, שרץ על פאלם. סוני סגרה את האתר שהיא פתחה לפיתוח למכשיר. ולמרות זאת, אנשים עדיין מפתחים. ואפילו יש מקומות שמפיצים מחדש את הקוד שהיא בעצמה שחררה בזמנו תחת GPL.
זה נראה לי ממש פרדוקסלי שאת ערכת הפיתוח הייתי צריך לחפש עמוק ברשת, למרות שהיא הייתה תחת GPL.
אפריל 18th, 2008 בשעה 22:41
בהקשר למה ששמוליק אמר, הנה מספר תיקונים:
1. לדעתי בלבלת קצת בין עדה המקורית לעדה 95'. כאשר חבר שלי מהאוניברסיטה הפתוחה דיבר על "עדה" הוא בד"כ התכוון לעדה 95'. עדה 95' היא לפי כל מה ששמעתי הבדל של שמיים וארץ מעדה המקורית שהייתה שפה מאוד שנואה. אך כאמור, כשהסטנדרד יצא ב-95' עדה כבר הייתה פחות פופולרית וגם C ושפות אחרות נעשו פחות רלבנטיות בשל הקידום של ג'אווה והשפות הדינמיות השונות.
2. אני לא בטוח שהייתה יותר מדי פרגמנטציה בעולם ה-C כפי שאתה מתאר. אומנם הסטנדרד הראשון (C89) בא מאוחר יחסית אבל המהדורה הראשונה של הספר של Kerninghan and Ritchie נכתב יחסית מוקדם והיה מעין סטנדרד. בכל מקרה, למהדרים הייתה נטייה להעתיק אחד מהשני, וכאמור gcc פותח יחסית מוקדם, ואפשר קומפילציה פורטבילית של ANSI C על מרבית מערכות היוניקס עם מספר רב של הרחבות זה זמן רב. אני חושב שכל מנהל מערכת שהיה שווה משהו התקין את gcc על מערכת היוניקס שלו, ועבור חלק גדול מהאנשים זה היה אינסנטיק לכתוב gcc במקום cc.
אפריל 18th, 2008 בשעה 23:48
בדיוק השבוע פורסמה כתבה על ADA :
http://developers.slashdot.org/article.pl?sid=08/04/15/1554234&from=rss
מסתבר שעדיין משתמשים בה בתעשיית התעופה והעידכון האחרון שלה יצא ב 2005.
הסתכלתי על התחביר שלה והוא נראה נחמד מאד - מאד קריא, מזכיר קצת פסקל.
חשבתי לעצמי שהיא יכולה לשמש "כשפה למתכנתים פשוטים" בסיגנון VB .
VB היא בעצם שפה (אם אפשר לקרוא לך כך) מאד גרועה, אבל אתם חייבים להסכים שהיתה לה תקופת זוהר שנתנה למיקרוסופט דחיפה לא נורמלית.
אפריל 18th, 2008 בשעה 23:58
עוד משהו קטן.
אני מאד מתעניין בשפות. לאחרונה יצאתי לחיפוש אישי אחר השפה העתידית שתוכל לתת תשובה ל C# בעולם הקוד הפתוח (יכול להיות שבסוף אחליט שהשפה הזו היא object pascal - החיפוש עוד לא נגמר).
במהלך החיפוש נתקלתי בשפת D . קראתי עליה קצת והיא נשמעת לי מאד מעניינת. יש פה הרצאת הקדמה למי שמעוניין:
http://video.google.com/videoplay?docid=-7073020265668105471
(השפה נראית מאד "זרה" למתכנת מנוסה. אני ממליץ לא לפסול על הסף אלא לנסות להפתח לרעיונות בזמן הצפייה)
אפריל 19th, 2008 בשעה 0:13
ג'אווה לא נותנת מענה לC#? (למרות שזה להפך)
מצאתי שיש גם ada#:
http://www.usafa.af.mil/df/dfcs/bios/mcc_html/a_sharp.cfm
מאי 9th, 2008 בשעה 16:26
הי שוב אני…
הקרציה מהרוסית…
לא יודעת אם ראית את ההודעה שלי אבל לא ענית.
אז או שאתה מתעלם ומקווה שאני אעלם, או שפשוט לא ראית אותה.
עצה שלי, אני אעלם הרבה יותר מהר אם לפחות תענה ותגיד שראית. :0)
אז ככה, שמי טליה ואני באטרף ללמוד רוסית.
הבלוג שלך מקסים ונעזרתי בקישורים לאתרים אותם מצאת.
כתבתי לך שאשמח לדבר איתך בנושא, אולי לקבל ממך עצות נוספות…
מה דעתך?