ABA


"שאלה לגבי שפות תיכנות פונקציונליות."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10663 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10663
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   10:10   18.04.12   
אל הפורום  
  שאלה לגבי שפות תיכנות פונקציונליות.  
 
   עד כמה משתמשים בהם בתעשייה?

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


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

הייתי שמח לדעת איך ניתן לעשות את זה.


תודה!



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

  האשכול     מחבר     תאריך כתיבה     מספר  
  ברגע שתכתוב את ה-DLL שאתה יוצר כ-COM Nesher  18.04.12 13:48 1
  לא נכנסו בכלל לתעשיה. רק שפות סקריפטים ופונקציונליות ldan192  19.04.12 00:32 2
     מכתב Yariv-H 19.04.12 21:16 3
         הכוונה שרוב התוכנות כיום דורשות הרבה i/o ldan192  20.04.12 01:49 4
             הבנתי =] תודה. Yariv-H 20.04.12 09:50 5
             מכתב Zippo  20.04.12 10:04 6
                 צודק, בכלל זה לא המונח הנכון, אבל האחוז מאוד מאוד שולי ldan192  21.04.12 13:12 7
                     השאלה העקרית לדעתי... Yariv-H 21.04.12 13:31 8
                     שפה היא שפה. Zippo  23.04.12 01:21 9

       
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   13:48   18.04.12   
אל הפורום  
  1. ברגע שתכתוב את ה-DLL שאתה יוצר כ-COM  
בתגובה להודעה מספר 0
 
אפשר יהיה להשתמש בו מכל שפה אחרת

יש שפות שגם תומכות בייבוא DLLים ב-C כמו שפות הדוטנט שמאפשרות DllImport
אני קצת פחות זוכר איך זה הולך עם זה, די בטוח שלא חייב שזה יהיה COM אבל אתה מוזמן לבדוק


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   00:32   19.04.12   
אל הפורום  
  2. לא נכנסו בכלל לתעשיה. רק שפות סקריפטים ופונקציונליות  
בתגובה להודעה מספר 0
 
למרות שבהחלט יש שפות ענקיות וגאוניות, בין היתר ML, Prolog ועוד...
הסיבה העיקרית בעיניי היא:
א. הרבה מהתכנים לא דורשים שפות פונקציוליות
ב. בשביל לתכנת בשפות פונקציוליות צריך לדעת לתכנת טוב, שאת זה קשה לומר על הרבה מהמתכנתים...


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   21:16   19.04.12   
אל הפורום  
  3. מכתב  
בתגובה להודעה מספר 2
 
   מה הכוונה שהרבה מהתכנים לא דורשים שפות פונקציונליות ?

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

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

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


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


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


הוא גם אמר שהסקשן הזה תופס תנופה בזמן האחרון והולך לפרוץ.

נקווה שזה נכון..




                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   01:49   20.04.12   
אל הפורום  
  4. הכוונה שרוב התוכנות כיום דורשות הרבה i/o  
בתגובה להודעה מספר 3
 
ולאוו דווקא בעיה חישובית, אז פונקציונליות פחות עוזרות


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   09:50   20.04.12   
אל הפורום  
  5. הבנתי =] תודה.  
בתגובה להודעה מספר 4
 
  



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   10:04   20.04.12   
אל הפורום  
  6. מכתב  
בתגובה להודעה מספר 4
 
בתעשייה לא משתמשים בשפות פונקציונאליות?!?!
מאיפה הבאת את זה?

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

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

יש שימוש מאד נרחב בשפות פונקציונאליות בתעשייה. אפילו בשפות משנות ה-60 כמו ML ו- Scheme
(אם כי יהיה לי קשה יותר למצוא משהו שמוכר לך היום שפותח בשפות האלו)

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

אגב, תהייה קטנה:
אמרת ש:
רוב התוכנות כיום דורשות הרבה i/o, ולאוו דווקא בעיה חישובית, אז פונקציונליות פחות עוזרות
ציטוט מאת: ldan192

מה הקשר?
שפה פונקציונאלית =\= שפה לפתרון בעיה חישובית.
ומה הקשר ל- I\O?
אשמח אם תסביר לי למה התכוונת...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   13:12   21.04.12   
אל הפורום  
  7. צודק, בכלל זה לא המונח הנכון, אבל האחוז מאוד מאוד שולי  
בתגובה להודעה מספר 6
 
כמו שניתן לראות גם פה:
http://langpop.com

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


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   13:31   21.04.12   
אל הפורום  
  8. השאלה העקרית לדעתי...  
בתגובה להודעה מספר 7
 
   למה השפות האלו באמת נפוצות היום בשוק?

אם בוודאות ישנה דרך לעשות דברים יותר מהר ויותר יעיל ופחות קוד?

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



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   01:21   23.04.12   
אל הפורום  
  9. שפה היא שפה.  
בתגובה להודעה מספר 7
 
יכולת ביצוע פעולות היא זהה בכל השפות. השאלה רק בכמה מאמץ ושורות קוד.
מבחינת יכולת חישובית, כלומר יעילות, יש טיעונים לכאן ולכאן.
garbage collection למשל, בשפות פונקציונאליות, הוא פי כמה יותר מהיר ויעיל,
ואין לך סכנה לדליפת זיכרון. ולכן אם יש לך צורך לבצע פעולה ממושכת עם הרבה הקצאות זמניות (למשל מנגנון ניהול טרנזקציות במסד נתונים), כתיבה בשפה פונקציונאלית היא בחירה הגיונית וטבעית.

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

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

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

3- שפה היא כלי. אין כזה דבר שפה "יותר טובה". יש שפה שיותר מתאימה למשימה מסוימת. צריך גם לדעת לזהות נכון את היתרונות של והחסרונות. "אינטראקטיביות" כלשונך, היא לא חיסרון בשפות פונקציונאליות.
אני מניח שמעולם לא כתבת GUI בשפה פונקציונאלית. אני כן.
זה מאתגר, מצריך חשיבה, ושונה ממה שאתה רגיל. זה לא בהכרח רע.
כשחושבים על event-ים כעל אובייקטים immutable שיכולים לשמש כהודעות ל-actor-ים, אפשר להבין איך שפה פונקציונאלית יכולה לתמוך בצורה מלאה בתכנות event driven. שוב, זה פשוט מצריך שינוי תפיסתי. ובכל אופן, אני לא אומר לזרוק את הישן, ולדבוק בחדש. יש משימות שאני מעדיף לבצע בשפות כמו C, או JAVA, מאשר בשפות כמו סקאלה. הכל תלוי במטרה. מתכנת טוב לא צריך לפחד משפה או מפרדיגמת תכנות שונה. להיפך, קח את זה כהזדמנות ללמוד ולהחכים.

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

לילה טוב.


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

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

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



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