שיחה:תכנות מחשבים
הוספת נושאשפות תכנות
[עריכת קוד מקור]זה רק אני או שהחלוקה המוצעת בדף נראית מעט "מופרכת"?
ממתי HTML/XHTML הן שפות תכנות? CGI מוגדר בכלל כממשק בין שרת ווב לתוכנות חיצוניות.
מלבד זאת אני מתרשם שההפרדה בין "שפות אמיתיות" ל"שפות סקריפט" בעייתית, היוצר כנראה התכוון ליכולת להדר ישירות לקוד מורץ(גאווה בכלל נופלת "בין הכיסאות"), אולם אבחנה זו קושרת שלא בצדק את השפה ליישום שלה.
למשל, באופן תאורטי יוכל פלוני אלמוני לכתוב מהדר לPerl, שאמנם התוצר יזדקק לספרית זמן ריצה, אבל מעבר לכך יהיה מדובר בקוד מכונה טהור.
או להפך, אין שום סיבה שלא יהיה ניתן לכתוב interepter לשפה כמו C.
אני מערער על החלוקה גם אם הכוונה היא פונקציונלית, מה שמוגדר "שפת סקריפט" עשוי לשמש לכתיבת יישומים כבדים, ע"ע Zope לדוגמא.
מה גם שQbasic היא בכלל שפת סקריפט וPHP לא בהכרח שייכת רק שיישומי ווב. החלוקה הזאת מאד בעייתי, צריך למצא פתרון אחר.
QBasic אינה "שפת סקריפט", מדובר הרי בגירסה מצומצמת של QuickBasic שכללה גם מהדר ושאר דברים טובים, אבל כבר הסכמנו שהחלוקה בעייתית.
אולי כדאי לעשות טבלת השוואה לפי מבחר קטגוריות, משתנים סטטיים/דינאמיים, weak/strong typing, פרוצדורות, כיוון עצמים, וכן הלאה.
מתודולוגיות
[עריכת קוד מקור]- שיטות התיכנות המפורטות אינן נחשבות כמתודולוגיות בהנדסת תוכנה. רנדום 17:00, 2 בספטמבר 2006 (IDT)
- תיאור תהליך פיתוח התוכנה כקווי אליבא דמודל מפל-המים הוא הטעיית הציבור, לא פחות. רנדום 13:00, 9 בספטמבר 2006 (IDT)
- זה פשוט לא נכון, יש שפות תכנות פרוצדורליות ויש מתודולוגיה פרצדורלית. זה אמנם קשור מאוד אבל לא זהה, אפשר לעבוד במתודלוגיה מונחת עצמים גם בשפה פרוצדורלית (אף על פי שמניסיון זה הרבה פחות נוח).
- לא הבנתי מה הבעיה עם התיאור, הוא בעיקרון נכון תמיד, כמובן שזה מודל תיאורטי ובפועל העניינים מסתבכים (למשל המערכת מושלמת בחלקים). טרול רפאים 13:08, 9 בספטמבר 2006 (IDT)
קידוד
[עריכת קוד מקור]תכנות מחשבים זה לא רק קידוד. לפי החלוקה למטה יוצא שכתיבת התוכנה היא רק הקידוד שלה. שלב העיצוב, בחירת מבני הנתונים, בחירת השפה נעשים ע"י המתכנת והינם חלק מעיצוב התוכנה ולא מקידודה.
נוטה להסכים עם אוריון
[עריכת קוד מקור]השאלה האם מדובר באמנות או לא ראויה לאזכור, אבל לא באופן כזה: ראשית כל השאלה איננה האם תכנות היא אמנות או מקצוע (פיסול היא אמנות שהיא גם מקצוע). הכותרת בערך הנדסת תוכנה נשמעת סבירה יותר: "הנדסה, מדע או אמנות?". בעיה נוספת היא הניסוח: אנחנו אנציקלופדיה? כן. אז בואו נשאל שאלות? רעיון טוב! ואז גם נענה עליהן? פחות או יותר. טעון שיפור.
כהערת אגב אוסיף ששמו של הספר לא מרמז על דבר. ספר שבו שלושה עמודים עוסקים בדיון אודות פונקציות ה-floow וה-ceiling לא בדיוק מחזק את הטענה שמדובר באמנות. המתעתק • שיחה 02:24, 1 ביולי 2007 (IDT)
- כשמישהו יתלה על קיר ביתו תוכנת מחשב, אסכים להודות שמדובר באומנות. לעת עתה, זה שספר כלשהו, שכאמור לעיל הנו טכני ולא פילוסופי, מעיד על היות התכנות אומנות לא מספיק בעיני. אוריון 22:14, 3 ביולי 2007 (IDT)
- ואגב, במשפט "The Art of Computer Programming " המלה Art כוונתה קרוב לוודאי אוּמנות, לא אוֹמנות. אוריון 22:21, 3 ביולי 2007 (IDT)
מי הוא מתכנת
[עריכת קוד מקור]"העוסקים בתחום אינם נדרשים להסמכה רשמית כלשהי כדי לכנות את עצמם 'מתכנתים' או אף 'מהנדסי תוכנה'" ? אני נעלב... מה בעניין תואר "מהנדס"? --Shambler 21:14, 4 ביולי 2007 (IDT)
- לא הבנתי למה נעלבת... הכתוב בערך מתאר הלכה למעשה את המצב בענף: גם מי שכתב שורת קוד ב-Visual Basic, רשאי לכנות את עצמו "מתכנת" או אף "מהנדס תוכנה", וכידוע, יש כאלה העושים כן :-) הבעיה כמובן היא העדרה של תוכנית הסמכה תקנית למקצוע. רנדום 21:25, 4 ביולי 2007 (IDT)
- כנראה אני מפספס משהו - מה בנושא B.Sc? מוכר לפנקס המהנדסים!.... --Shambler 00:23, 5 ביולי 2007 (IDT)
- אני לא מבין מה אתה נעלב. יש מתכנתים רבים שעובדים במקצוע בלי שום הסמכה רשמית. זה המצב בפועל. יש כמובן גם כאלה עם הסמכה רשמית. המעסיקים (אלו שמבצעים את הדרישה) אינם דורשים תמיד תעודות רשמיות. אפשר אולי להגיד שהמשפט לא מדוייק שכן מי שמכונה מהנדס תוכנה בדרך כלל הוא בעל BSC או מהנדס. האזרח דרור 16:45, 5 ביולי 2007 (IDT)
- אני לא באמת נעלב, לא לדאוג. אני רק אומר שלא ראיתי אף אחד שמציג את עצמו בתור מהנדס תוכנה והוא לא מהנדס, לפחות. --Shambler 17:57, 5 ביולי 2007 (IDT)
- בערך מהנדס יש הסבר על המותר והאסור בתחום זה. דוד שי 18:40, 5 ביולי 2007 (IDT)
- צודק, אני מציע להעביר את הדיון לדף השיחה של הערך, ולאורו לשנות את המשפט הנ"ל. Shambler 18:44, 5 ביולי 2007 (IDT)
- שיניתי. דוד שי 18:59, 5 ביולי 2007 (IDT)
- צודק, אני מציע להעביר את הדיון לדף השיחה של הערך, ולאורו לשנות את המשפט הנ"ל. Shambler 18:44, 5 ביולי 2007 (IDT)
- בערך מהנדס יש הסבר על המותר והאסור בתחום זה. דוד שי 18:40, 5 ביולי 2007 (IDT)
- אני לא באמת נעלב, לא לדאוג. אני רק אומר שלא ראיתי אף אחד שמציג את עצמו בתור מהנדס תוכנה והוא לא מהנדס, לפחות. --Shambler 17:57, 5 ביולי 2007 (IDT)
- אני לא מבין מה אתה נעלב. יש מתכנתים רבים שעובדים במקצוע בלי שום הסמכה רשמית. זה המצב בפועל. יש כמובן גם כאלה עם הסמכה רשמית. המעסיקים (אלו שמבצעים את הדרישה) אינם דורשים תמיד תעודות רשמיות. אפשר אולי להגיד שהמשפט לא מדוייק שכן מי שמכונה מהנדס תוכנה בדרך כלל הוא בעל BSC או מהנדס. האזרח דרור 16:45, 5 ביולי 2007 (IDT)
- כנראה אני מפספס משהו - מה בנושא B.Sc? מוכר לפנקס המהנדסים!.... --Shambler 00:23, 5 ביולי 2007 (IDT)
שפות זרות?
[עריכת קוד מקור]האם אפשר לכתוב תכנה בשפה שהיא לא אנגלית? מישהו ספר לי שהוא כותב תכנות בדיאלקט סיבירי כלשהו. שונרא - שיחה 17:31, 3 בינואר 2009 (IST)
- תוכנה אינה נכתבת באנגלית, היא נכתבת בשפת תכנות, שלה אוצר מילים (מצומצם למדי) משלה. שפות התכנות הנפוצות מתבססות על אוצר מילים שמקורו באנגלית, אך אין מניעה טכנית להמיר את אוצר המילים בכזה שמקורו בשפה אחרת. למעשה, בעת כתיבת מהדר אין קושי רב להוסיף לו יכולת להחליף, בהתאמה חד-חד ערכית, את אוצר המילים שלו באוצר מילים אחר (ומוזר שלא שמעתי על מהדר שיש בו אופציה זו). זכורה לי גרסה של לוגו, שבה אוצר המילים המקורי הוחלף באוצר מילים שמקורו בעברית, למשל "קדימה" במקום FORWARD. לוגו נועדה לילדי בית הספר היסודי, ולכן חשוב בה במיוחד להתאים את אוצר המילים לזה המוכר לילד. דוד שי - שיחה 18:27, 3 בינואר 2009 (IST)
תכנות למתחילים
[עריכת קוד מקור]אני כבן 50 ומעוניין להכיר את העולם של מדעי המחשב, חברים יעצו לי להתחיל ללמוד את שפת c כמעין מבוא לעולם התכנות. האומנם? האם יש ספר מבוא טוב ונוח למתחילים? תודה לעונים. 85.250.46.198 19:49, 1 במרץ 2016 (IST)
- דעה אישית ולא מחייבת אף אחד: לא. שפה ממש לא מתאימה לכך. יגאל (בקשת עזרה, IKhitron ושיחה) 19:50, 1 במרץ 2016 (IST)
- תודה, אם כן, מה כן מתאים? 85.250.46.198 19:53, 1 במרץ 2016 (IST)
- שוב, דעה אישית ולא מחייבת. רק מתוך ניסיון של מי שמלמד עקרונות שפות תכנות באוניברסיטה שנים רבות - כשפה ראשונה עדיף לקחת שפה שאין בה "מוזרויות" שמשנות את המשמעות, נקרא לזה ככה, אלא שפה שמה שרואים בה זה מה שקורה (בבלשנות קוראים לזה שפות פונטיות). מתכנת מנוסה ידע במה מדובר כי הוא יכול להשוות בראש, אפילו בלי לחשוב, אותם דברים בשפות שונות. אני הייתי ממליץ להתחיל מ-java, מ-scheme, או אולי אף מ-logo (רק אחת מהן, בסדר עדיפות יורד). לאחר מכן אפשר לעבור ל-c. יגאל (בקשת עזרה, IKhitron ושיחה) 19:58, 1 במרץ 2016 (IST)
- תודה רבה לך, אם כן, איזה אתר (גם באנגלית) או איזה ספר היית ממליץ? 85.250.46.198 20:04, 1 במרץ 2016 (IST)
- זה כבר לא אליי. אני מלמד ממערכי שיעור שנכתבו "מהזיכרון". אולי מישהו אחר יענה. יגאל (בקשת עזרה, IKhitron ושיחה) 20:06, 1 במרץ 2016 (IST)
- שפת c היא האחרונה שהייתי חושב עליה כמבוא לעולם התכנות. זו שפה קשה מאוד למתחילים שרוצים לדעת יותר מאשר Hello world. ללימוד עצמי אני ממליץ על לוגו, אף שאיננה שפה פרוצדורלית סטנדרטית. אפשרות ממוסדת יותר היא לקחת קורס מבוא באוניברסיטה הפתוחה. דוד שי - שיחה 07:06, 2 במרץ 2016 (IST)
- אפשר גם לקחת קורס ב-coursera. יש שם קורסים למתחילים ב-python ואולי בעוד שפות. אינג. יונה ב. - שיחה - הבה נכחילה 08:13, 2 במרץ 2016 (IST)
- תודה רבה לעונים. 93.173.132.0 08:37, 2 במרץ 2016 (IST)
- https://www.codecademy.com/ ―אנונימי לא חתם
- תודה רבה לעונים. 93.173.132.0 08:37, 2 במרץ 2016 (IST)
- אפשר גם לקחת קורס ב-coursera. יש שם קורסים למתחילים ב-python ואולי בעוד שפות. אינג. יונה ב. - שיחה - הבה נכחילה 08:13, 2 במרץ 2016 (IST)
- שפת c היא האחרונה שהייתי חושב עליה כמבוא לעולם התכנות. זו שפה קשה מאוד למתחילים שרוצים לדעת יותר מאשר Hello world. ללימוד עצמי אני ממליץ על לוגו, אף שאיננה שפה פרוצדורלית סטנדרטית. אפשרות ממוסדת יותר היא לקחת קורס מבוא באוניברסיטה הפתוחה. דוד שי - שיחה 07:06, 2 במרץ 2016 (IST)
- זה כבר לא אליי. אני מלמד ממערכי שיעור שנכתבו "מהזיכרון". אולי מישהו אחר יענה. יגאל (בקשת עזרה, IKhitron ושיחה) 20:06, 1 במרץ 2016 (IST)
- אני אישית לא מת על ג'אווה כשפה למתחילים: לעניות דעתי צריכים לכתוב שם יותר מדי דברים לא מובנים כדי להתחיל לקבל תוצאות (נסה להסביר מהי המשמעות של כל דבר בתוכנית Hello world). מהבחינה הזו אני מעדיף את פייתון. Tzafrir - שיחה 12:12, 2 במרץ 2016 (IST)
- אני דווקא חושב שכל דבר שם מובן מאליו. ומעולם לא למדתי פייטון כי אני לא סובל את הרעיון מאחוריו. יגאל (בקשת עזרה, IKhitron ושיחה) 13:01, 2 במרץ 2016 (IST)
- למה הכוונה, אם אפשר לשאול? (אני גם לא יודע פייתון, אבל מכיר שפות אחרות) עופר קדם - שיחה 04:59, 3 במרץ 2016 (IST)
- אפשר. הדקדוק שלה. אם מוסיפים רווח נוסף בין שתי מילים שמורות, המשמעות של הקוד המשתנה. יגאל (בקשת עזרה, IKhitron ושיחה) 15:11, 3 במרץ 2016 (IST)
- תוכל להרחיב על כך? אני כותב בפייתון (לצרכי הדלים) כבר הרבה שנים, ומעולם לא נתקלתי במה שאתה מתאר. אני גם לא מצליח למצוא שום אזכור לכך בגוגל. תומר א. - שיחה - משנה ויקיפדית 18:11, 3 במרץ 2016 (IST)
- אוכל להביא דוגמה:
- תוכל להרחיב על כך? אני כותב בפייתון (לצרכי הדלים) כבר הרבה שנים, ומעולם לא נתקלתי במה שאתה מתאר. אני גם לא מצליח למצוא שום אזכור לכך בגוגל. תומר א. - שיחה - משנה ויקיפדית 18:11, 3 במרץ 2016 (IST)
- אפשר. הדקדוק שלה. אם מוסיפים רווח נוסף בין שתי מילים שמורות, המשמעות של הקוד המשתנה. יגאל (בקשת עזרה, IKhitron ושיחה) 15:11, 3 במרץ 2016 (IST)
- למה הכוונה, אם אפשר לשאול? (אני גם לא יודע פייתון, אבל מכיר שפות אחרות) עופר קדם - שיחה 04:59, 3 במרץ 2016 (IST)
- אני דווקא חושב שכל דבר שם מובן מאליו. ומעולם לא למדתי פייטון כי אני לא סובל את הרעיון מאחוריו. יגאל (בקשת עזרה, IKhitron ושיחה) 13:01, 2 במרץ 2016 (IST)
- תודה רבה לך, אם כן, איזה אתר (גם באנגלית) או איזה ספר היית ממליץ? 85.250.46.198 20:04, 1 במרץ 2016 (IST)
- שוב, דעה אישית ולא מחייבת. רק מתוך ניסיון של מי שמלמד עקרונות שפות תכנות באוניברסיטה שנים רבות - כשפה ראשונה עדיף לקחת שפה שאין בה "מוזרויות" שמשנות את המשמעות, נקרא לזה ככה, אלא שפה שמה שרואים בה זה מה שקורה (בבלשנות קוראים לזה שפות פונטיות). מתכנת מנוסה ידע במה מדובר כי הוא יכול להשוות בראש, אפילו בלי לחשוב, אותם דברים בשפות שונות. אני הייתי ממליץ להתחיל מ-java, מ-scheme, או אולי אף מ-logo (רק אחת מהן, בסדר עדיפות יורד). לאחר מכן אפשר לעבור ל-c. יגאל (בקשת עזרה, IKhitron ושיחה) 19:58, 1 במרץ 2016 (IST)
- תודה, אם כן, מה כן מתאים? 85.250.46.198 19:53, 1 במרץ 2016 (IST)
num = float(input("Enter a number: "))
if num >= 0:
if num == 0:
print("Zero")
else:
print("Positive number")
- מול
num = float(input("Enter a number: "))
if num >= 0:
if num == 0:
print("Zero")
else:
print("Positive number")
- אני לא אומר שזה רע אובייקטיבית, זה פשוט עושה רע לי אישית. יגאל (בקשת עזרה, IKhitron ושיחה) 19:24, 3 במרץ 2016 (IST)
- זה רע אובייקטיבית. תוכנה היא יצור חד-ממדי: רצף של תווים שהקומפיילר יודע לקרוא. לרשות המחשב עומדים תווי-רווח מכמה סוגים שאי אפשר להבדיל ביניהם בעין (רווח רגיל, טאב, סוף שורה). ההבדל בין שתי הדוגמאות שהבאת אינו ניתן להצגה חד-ממדית בלי שימוש בתווים המיוחדים האלה (בגלל האפשרות להוסיף רווחים בסוף שורה), ולכן במעבר לתצוגה לעין-אנוש ההבדל מופיע אך ורק במבנה הדו-ממדי. כלומר, הוספנו ממד שלם, בלי להרוויח שום דבר. עוזי ו. - שיחה 15:36, 4 במרץ 2016 (IST)
- אתה אמרת. יגאל (בקשת עזרה, IKhitron ושיחה) 15:53, 4 במרץ 2016 (IST)
- וביננו, אם היו אומרים לי לבחור במה לעבוד - פייטון או intercal, התשובה היא not obvious. יגאל (בקשת עזרה, IKhitron ושיחה) 16:17, 4 במרץ 2016 (IST)
- אתה אמרת. יגאל (בקשת עזרה, IKhitron ושיחה) 15:53, 4 במרץ 2016 (IST)
- זה רע אובייקטיבית. תוכנה היא יצור חד-ממדי: רצף של תווים שהקומפיילר יודע לקרוא. לרשות המחשב עומדים תווי-רווח מכמה סוגים שאי אפשר להבדיל ביניהם בעין (רווח רגיל, טאב, סוף שורה). ההבדל בין שתי הדוגמאות שהבאת אינו ניתן להצגה חד-ממדית בלי שימוש בתווים המיוחדים האלה (בגלל האפשרות להוסיף רווחים בסוף שורה), ולכן במעבר לתצוגה לעין-אנוש ההבדל מופיע אך ורק במבנה הדו-ממדי. כלומר, הוספנו ממד שלם, בלי להרוויח שום דבר. עוזי ו. - שיחה 15:36, 4 במרץ 2016 (IST)
- אני לא אומר שזה רע אובייקטיבית, זה פשוט עושה רע לי אישית. יגאל (בקשת עזרה, IKhitron ושיחה) 19:24, 3 במרץ 2016 (IST)
char* num_test(int num) {
if (num >= 0)
if (num == 0)
return "Zero";
else
return "Positive number";
return "A number";
}
- מול
char* num_test(int num) {
if (num >= 0) {
if (num == 0) {
return "Zero";
}}
else
return "Positive number";
return "A number";
}
- בתוכנית הראשונה היישור מרמז על כך שה־else הוא מה־if החיצוני. בפועל נדמה לי שהוא מה־if הפנימי, אבל לא זכור לי בדיוק. במקרה השני היישור שוב מטעה וזאת למרות נוכחותם של סימני {}, מכיוון שהשימוש בהם לא לגמרי סטנדרטי (ולא, לא צריך להעיר לי שהקוד הזה לא מתקמפל. שמתי לב).
- התוכניות הללו מדגימות איך תוכניתנים בפועל מסתכלים קודם על היישור ורק לאחר מכן על הסימנים התחביריים האמתיים. Tzafrir - שיחה 18:29, 7 במרץ 2016 (IST)
- לא ברור לי מה אתה מנסה להוכיח באמצעות דוגמא שאינה מתקמפלת. אפשר להשוות דוגמאות שכן מתקמפלות, שבהן ההצגה הגרפית סותרת לכאורה את תחביר השפה, ולשאול איך יבין *אותן* מתכנת מן השורה. אני חולק על ההנחה שרוב מכריע יטעה רק בגלל העימוד. עוזי ו. - שיחה 18:53, 7 במרץ 2016 (IST)
- ערכתי קצת, ועכשיו הן נבנות (עם האזהרה המתבקשת). התוספת שנדרשה הייתה הטיפול במקרה שבו לא החזרתי כלום. כמוכן שיניתי במקצת את הדוגמה השנייה. וכמובן שיש טעויות מפורסמות שנגרמו מסיבות דומות. Tzafrir - שיחה 19:42, 7 במרץ 2016 (IST)
- ההזחה אמורה לעזור בקריאה, לא בהדרה. יגאל (בקשת עזרה, IKhitron ושיחה) 19:57, 7 במרץ 2016 (IST)
- ערכתי קצת, ועכשיו הן נבנות (עם האזהרה המתבקשת). התוספת שנדרשה הייתה הטיפול במקרה שבו לא החזרתי כלום. כמוכן שיניתי במקצת את הדוגמה השנייה. וכמובן שיש טעויות מפורסמות שנגרמו מסיבות דומות. Tzafrir - שיחה 19:42, 7 במרץ 2016 (IST)
- לא ברור לי מה אתה מנסה להוכיח באמצעות דוגמא שאינה מתקמפלת. אפשר להשוות דוגמאות שכן מתקמפלות, שבהן ההצגה הגרפית סותרת לכאורה את תחביר השפה, ולשאול איך יבין *אותן* מתכנת מן השורה. אני חולק על ההנחה שרוב מכריע יטעה רק בגלל העימוד. עוזי ו. - שיחה 18:53, 7 במרץ 2016 (IST)
חזרה לשאלה המקורית: התגלגל לידי ספר בשם: Code Complete בתרגום לעברית של אשר ברק, ואף על פי שהספר מיועד לאנשי מקצוע ותיקים מצאתי בו עניין רב, ושאלתי היא האם יש ספרים דומים בעברית? כלומר, ספר שנותן מידע מעמיק לצד דיון פשוט ביסודות. תודה לעונים.109.186.37.7 18:58, 5 במרץ 2016 (IST)
- כיוון שאתה שואל על מדעי המחשב, ולאו דווקא על תכנות, אני ממליץ בחום על ספריו של דוד הראל, "פרקי יסוד במדעי המחשב" ו"אלגוריתמיקה: יסודות מדעי המחשב". דוד שי - שיחה 22:50, 5 במרץ 2016 (IST)
- מבחינת פשטות - שפת ה־BASIC כשמה כן היא - תחביר בסיסי פשוט מאוד, זו הייתה שפת התכנות הראשונה שלי שנלמדה בחוג (לאחריה נלמדו לוגו ופסקל במסגרות בית-ספריות, בפועל עוסק כיום בעיקר בשפת הסקריפטים BASH). נת- ה- - שיחה 23:03, 5 במרץ 2016 (IST)