כותב |
|
dror703 משתמש מתחיל
הצטרף / הצטרפה: 30 January 2008
משתמש: מנותק/ת הודעות: 4
|
נשלח בתאריך: 21 February 2008 בשעה 21:04 | | IP רשוּם
|
|
|
|
הייי שלום לכולם !
אני רוצה לשאול זה פשוט כל כך מעניין אותי כל התיכנות וכל זה
אז איך אני יכול ללמוד את התיכנות ? עם איזה תוכנה עובדים? הכל מההתחלה ואם יש מדריך בעברית.
אז תודה לכל המגיבים זה מאוד חשוב לי תודה.
|
חזרה לתחילת העמוד |
|
|
11010010110 פורומיסט על
הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת הודעות: 2621
|
נשלח בתאריך: 21 February 2008 בשעה 22:00 | | IP רשוּם
|
|
|
|
אין כלל ואין תוכנה שאיתה עובדים
יש המון אפשרויות לתכנת
ניתן לתכנת בשפות רגילות שבהם כותבים תוכנות של windows
בשפות שעובדות ישר מול החומרה של המחשב
בשפות מדליקות ונדירות שהגישה שלהן לדברים שונה מכל מה
שאנחנו מכירים
ניתן לבנות תוכנות ללא שפות בכלל - ישר בצ'יפ או אל ידיי
חוטים ובקרים בלוח חשמל. וגם זה תכנות
אני ממליץ להתחיל לתכנת מאסמבלי - זה שפה שמומרת ישירות
למה שהמחשב עושה - ברמה של ה 1 0 ים שעוברים במעבד
http://download.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-lettersize.pdf
|
חזרה לתחילת העמוד |
|
|
berzniz משתמש מתחיל
הצטרף / הצטרפה: 27 January 2008
משתמש: מנותק/ת הודעות: 22
|
נשלח בתאריך: 21 February 2008 בשעה 23:14 | | IP רשוּם
|
|
|
|
אני ממליץ הפוך. להתחיל בשפה שהכי קל לתכנת בה - Java או C#.
הנה מדריך להתחלה שלי, על איך להתחיל בכלל לתכנת ב-Java, החל מהורדת מה שצריך ועד כתיבת תוכניות פשוטות. המדריך לא מלא עד הסוף, אבל הוא יביא אותך עד שלב מסויים.
המדריך כאן: לימוד Java
__________________ תכנות
לימוד Java
אקורדים
|
חזרה לתחילת העמוד |
|
|
dror703 משתמש מתחיל
הצטרף / הצטרפה: 30 January 2008
משתמש: מנותק/ת הודעות: 4
|
נשלח בתאריך: 21 February 2008 בשעה 23:57 | | IP רשוּם
|
|
|
|
תודה לכולם
|
חזרה לתחילת העמוד |
|
|
11010010110 פורומיסט על
הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת הודעות: 2621
|
נשלח בתאריך: 22 February 2008 בשעה 00:06 | | IP רשוּם
|
|
|
|
אסמבלי היא שפה קלה. היא מתאימה לדברים מהירים וקטנים
ושעובדים אם חומרה
|
חזרה לתחילת העמוד |
|
|
dror703 משתמש מתחיל
הצטרף / הצטרפה: 30 January 2008
משתמש: מנותק/ת הודעות: 4
|
נשלח בתאריך: 22 February 2008 בשעה 00:20 | | IP רשוּם
|
|
|
|
אני לא מבין זה תוכנה אסמבלי?
|
חזרה לתחילת העמוד |
|
|
11010010110 פורומיסט על
הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת הודעות: 2621
|
נשלח בתאריך: 22 February 2008 בשעה 03:50 | | IP רשוּם
|
|
|
|
לא
המחשב יכול להריץ תוכנות בינאריות. כלומר - תוכנות
שבנויות מ 1 0 ים כשלצירופים שלהם יש משמעות מסויימת
מה המשמעות ?
נדמיין מחשב (תשכח שניה את כל מה שאתה יודע אל מערכות
הפעלה וכדומה)
המחשב מהיר מאוד
לזיכרון מחובר מסך של 16x16 לדים שמראה כל הזמן מה יש
בזיכרון
במחשב הזה יש זיכרון שהוא רשת 16x16. בכל משבצת של הרשת
יכול להיות 0 או 1 יחיד
לכל שורה של הרשת יש מספר שורה. המספרים הולכים כך (בבסיס
10 ובבסיס 2)
0 0000
1 0001
.
.
14 1110
15 1111
כל שורה שומרת מספר בינארי של 16 ביטים. כמו
1101100011110011
ההוראות של המעבד שלנו הן גם שורות כאלה של 16 ביטים
הוא קורא את ההוראה כך
אם ההוראה מתחילה ב 1 נחלק אותה ל 4 חלקים והם
- 4 ביטים ראשונים - קוד הפעולה (הראשון מהם תמיד 1)
- 4 ביטים - תמיד 0
- 4 ביטים - כתובת א
- 4 ביטים - כתובת ב
כתובת א וכתובת ב הם מספרים של 2 שורות בזיכרון הקטן של
המחשב. מותר ש 2 הכתובות יהיו אותה כתובת
קוד הפעולה הוא קוד שאומר מה המעבד עושה. למשל אצלנו
1000 - פעולה לוגית not
1001 - פעולה לוגית or
1010 - פעולה לוגית and
1100 - חיבור
1101 - חיסור
1111 - תוקע את המחשב
בכל המקרים של פעולת חישוב המשמעות היא
תיקח את מה ששמור בכתובת א
תיקח את מה ששמור בכתובת ב
תחשב מס' א פעולה מס' ב
תשמור את התוצאה בכתובת א (במקום מס' א)
אם זה פעולות לוגיות אז הפעולה נעשית ברמה של הביטים
בפעולת not המעבד מתעלם מכתובת ב - ניתן לכתוב שם מה
שרוצים
למשל
111111001 and 111110101 = 111110001
111111001 or 111110101 = 111111101
111111001 not 111110101 = 000000110
111111001 + 111110101 = 111101110
111111001 - 111110101 = 000000100
אם ההוראה היא לתקוע את המחשב המחשב פשוט נתקע והזיכרון
שלו נשאר באותו מצב כמו שהוא היה
אם ההוראה מתחילה ב 0 אז המחשב מקבל אותה כך
4 ביטים ראשונים - קוד פעולה
4 ביטים אחריהם - כתובת א
8 ביטים אחריהם - כל מה שבא לנו
המחשב ייקח את מה שכתבנו ב 8 ביטים אחרונים וישמור אותם
בזיכרון בחצי הראשון (הימני) או השני (השמאלי) של הכתובת
הזאת ולא ייגע בחצי השני
אם ההוראה מתחילה ב 0000 זה החצי הראשון
אם ההוראה מתחילה ב 0100 זה החצי השני
למשל כדיי לשמור 1101001011000101 בכתובת 0101 ניתן את 2
ההוראות
0100010111010010
0000010111000101
עכשו המשחק יותר מסובך
ברגע שמפעילים את המחשב התוכנית שלנו בעצמה שמורה החל
מהכתובת הראשונה של הזיכרון. אחריי כל הוראה המחשב מבצע
את ההוראה הבאה
בוא נכתוב תוכנית שמחשבת כמה זה 513 + 771 ושומרת את
התוצאה בשורה 15 בזיכרון
התוכנית תהיה
נכתוב 513 לכתובת 15
0100111100100000
0000111100000001
נכתוב 771 לכתובת 11
0100101100110000
0100101100000011
נחבר את הנתון מ 11 ו 15 ונשמור את התוצאה ב 15
1100000011111011
זה התוכנית שלנו :
0100111100100000
0000111100000001
0100101100110000
0100101100000011
1100000011111011
המחשב נדלק כשהתוכנית שמורה בכתובות 0 - 4 ובכל היתר יש
סתם מס' אקראיים (הם לא מפריעים לנו כי אנחנו כותבים את
מה שאנחנו רוצים במקומם בכתובות 11 ו 15 ובכתובות האחרות
לא אכפת לנו בכל מקרה)
אבל . . . . זה לא תמיד יעבוד
למה ?
נניח התוכנית הסתיימה. המחשב הולך לבצע את ההוראה הבאה
שלא כתבנו . . והיא אקראית . . ובמקרה יצאה שם הוראה
שתעשה משהוא בכתובת 15 ותהרוס לנו את התוצאה (ולא נספיק
לראות אותה במסך כי המחשב מהיר)
כדיי למנוע את זה נתקע את המחשב אחריי סיום התוכנית
התוכנית בסוף תהיה
0100111100100000
0000111100000001
0100101100110000
0100101100000011
1100000011111011
1111000000000000
מה שעשינו עכשו היה שפת מכונה
אסמבלי היא שפה שמומרת כמעט ישירות לשפת מכונה. היא נקראת
שפת סף. אנחנו כותבים שם במילים את ההוראות האלה והמחשב
פשוט מעביר אותן ל 0 ו 1 ים
בשפות מתקדמות יותר כמו C אנחנו לא מתעסקים אם זה. אנחנו
כותבים מה אנחנו רוצים שהתוכנית תעשה - ולא איך בדיוק היא
תעשה את זה
כדיי להמיר תוכנית שכתבנו ל 1 0 ים יש תמיד 2 שלבים
שלב 1 - להמיר את התוכנית למשהוא קרוב ל 1 0 ים שנקרא
קובץ מטרה. מה שיש שם זה התוכנית הכמעט שלמה אבל חלקים
ממנה חסרים (דברים שלא כתבנו בתוכנית והמחשב אמור להשלים
אותם)
שלב 2 - להשלים את הדברים האלה
בעבודה באסמבלי השלבים הם
שלב 1 - בניית התוכנית (assemble) (מכאן שם השפה) - המחשב
פשוט ממיר בצורה דיי טפשית את ההוראות שכתבנו בשפה של
בניי אדם ל 1 0 ים - בדיוק כמו שכתבנו את התוכנית
שלב 2 - קישור החלקים של התוכנית שלנו (לעיתים אם קטעים
דל תוכניות אחרות) - מה שמשלים את התוכנית ונותן לה חיים
בעבודה בשפות אחרות התהליך יותר מסובך. התהליך המסובך
(שמכיל את 2 השלבים האלה והרבה מאוד אחרים) נחשב ל 'שלב
אחד גדול' ונקרא קימפול
את התוכנית עצמה אנחנו כותבים בקובץ טקסט פשוט
את השלבים האלה אנחנו מבצעים אל קובץ הטקסט. למשל כדיי
להמיר תוכנית שכתבנו ב code.txt באסמבלי לקובץ exe ב DOS
נעשה את השלבים
נכתוב את התוכנית
masm code.txt
link code.obj
ויש לנו exe
או בגרסאת הלינוקס
נכתוב את התוכנית
as code.txt
ld code.o
ויש לנו a.out (בלינוקס יש את זה במקום exe)
בתוכנית שכתבנו ב c למשל יש שלב אחד מבחינתנו
נכתוב את התוכנית
make code.txt
ויש לנו a.out
ההבדל העקרוני בין שפת סף (אסמבלי) ושפות אחרות (שפה
עילית כמו C D JAVA) הוא
בשפת מכונה אנחנו כותבים את ה 1 0 ים בעצמנו. זה כמו
שנבנה ביית ונייצר כל בלוק במכונת CNC בדיוק איך שבא לנו.
הביית יצא מושלם אבל זה המון עבודה
בשפת סף אנחנו עדיין קובעים מה יהיו ה 1 0 ים של התוכנית
בצורה ישירה אבל את העבודה המשעממת של לכתוב אותם עושה
המחשב. זה כמו לבנות את הביית מבלוקים ידנית בלי להתעייף
בשפות אחרות אנחנו אומרים רק מה אנחנו רוצים שייקרה. כל
התהליך של לתכנן את התוכנית נעשה בצורה אוטומטית. באותה
השוואה לביית זה רמות של בין לצייר תוכנית בניין ולתת
אותה לבנאים ועד ללאמר 'אני רוצה בית' ושהאדריכלים
והמהנדסים ישברו את הראש. רק שעלינו להיות מוכנים לביית
שלא ממש בנוי כמו שרצינו וצריך ללכת מסביב לביית כדיי
להיכנס אליו
במציאות משתמשים באסמבלי במקומות שבהם רוצים תוכנית קטנה
מהירה ואיכותית. ובשפות אחרות איפה שרוצים לעשות שמשהוא
יעבוד וזהו ולא אכפת כל כך ממשאביי מחשב ומהירות עבודה של
התוכנית
לשפות אחרות יש יתרון כזה - כל הוראה קטנה שאנחנו כותבים
ב C למשל יכולה לצאת כמה עשרות הוראות אסמבלי. ב JAVA זה
בטח יוצא כמה מאות או אלפים. ולכן לכתוב תוכניות גדולות
שלמות באסמבלי זה יותר מדיי מסובך. משתמשים באסמבלי רק
במקומות הקריטיים שבהם אכפת לנו
לדעתי כדאי להתחיל מאסמבלי כדיי להתקרב למחשב ולהבין איך
הוא עובד. בשפות אחרות חסר הקטע הזה של להבין. פשוט
כותבים והמחשב עושה וזהו
|
חזרה לתחילת העמוד |
|
|
inHaze משתמש פעיל
הצטרף / הצטרפה: 23 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 119
|
נשלח בתאריך: 23 February 2008 בשעה 10:52 | | IP רשוּם
|
|
|
|
כדי ללמוד אסמבלי יעזור לך מאוד גם ללמוד על מבנה המחשב, כי זו תוכנה שעובדת ישירות עם חומרה ומיועדת לחומרה ספיציפית.
נושאים שיכולים לעזור: מבנה ה-CPU הזכרון הראשי וה-SYSTEMBUS, גישה להתקני קלט/פלט,יצוג בבסיס בינארי (2) והקסדצימאלי(16), לוגיקה בסיסית (OR,AND,NOT...)
אסמבלי והכרת המחשב זה הבסיס לדעתי למתכנת טוב וגם מאוד מעניין ומעשי.
__________________ הבלוג שלי
|
חזרה לתחילת העמוד |
|
|
אביאל אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 26 February 2008 בשעה 17:03 | | IP רשוּם
|
|
|
|
הממ אבל אם הוא ירצה ללמוד אסמבלי או יצטרף גם ללמוד על מבנה המחשב וגם חלקים מ"מיתוג" על מנת שיהיה לו רקע מה שהוא עושה ומה זה עושה בעצם... זה בעצם גם תלוי...אם אתה רוצה רק לתכנת או רוצה גם להבין את הפנים של התיכנות כיצד הוא בנוי וכיצד הכל פועל במקרה כזה אני ממליץ לך להתחיל קודם כל ללמוד על חלקי המחשב+מיתוג ואז להמשיך לשפת C ולהיתקדם לאט לאט
אתה יכול למצא הרבה מדריכים לשפות תיכנות ברשת רק תחפש
|
חזרה לתחילת העמוד |
|
|
אני לעזור אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 29 February 2008 בשעה 18:47 | | IP רשוּם
|
|
|
|
מבלי לבטל אף אחת מן ההצעות ולפי דעתי בלבד, אני מציע לך ללמוד שפת עילית כגון C# , JAVA בסביבת עבודה מפותחת מאשר ללמוד שפת סף כגון אסמבלי וזאת מכמה סיבות:
1. רמת קושי - שפת אסמבלי היא שפה מאד מגושמת הדורשת תיאור פעולה לפרטי פרטים. לדוגמא: נגיד שאתה רוצה להגיד למישהו לקום לזוז, אתה פשוט אומר לו "זוז". יפה, באסמבלי זה ישמע כך: "תנשום, הפעל רגל ימין, תוציא אויר, תנשום, הפעל רגל שמאל,תוציא אויר..." וכך הלאה.
2. יצירתיות - שפה עילית מאפשרת בגלל מגוון הספריות הניתנות ברשותך לבנות יישומים רבים ומגוונים החל מאפליקציות מתמטיות ועד משחקי רשת. גם באסמבלי ניתן לעשות זאת אבל זה יקח לך בערך 30 שנה.
3. דיבוג - קשה מאד אבל מאד מאד לדבג תוכנית אסמבלי בשפה עילית ישנו בד"כ דיבגר מעולה המקל על הבעיה.
היתרון היחיד בשפה כמו אסמבלי היא ההיכרות לפרטי פרטים עם מבנה המחשב, ולכתיבה על מערכות משובצות מחשב.
בלי שום קשר למה שתבחר בהצלחה.
|
חזרה לתחילת העמוד |
|
|