פורסם: 17/01/2018 - 15:25
נושא ההודעה: מעוניין ללמוד c++ דרך קוד מקור של תוכנות בלינוקס
|
האם זה ריאלי?
בתור מתחיל שאין לו שמץ - האם יש תוכנה פשוטה כזו? (פקודה כמו ls ? )
תודה.
|
|
חזרה לתוכן הדיון |
פורסם: 17/01/2018 - 17:11
נושא ההודעה:
|
לדעתי זאת לא דרך מומלצת להתחיל ללמוד אף שפה, בטח לא C++.
תתחיל מהבסיס, תלמד עקרונות, תכתוב כמה דברים בעצמך, ורק אחרי זה תכנס לקוד של אחרים.
|
|
חזרה לתוכן הדיון |
פורסם: 17/01/2018 - 20:50
נושא ההודעה:
|
1- הליבה של לינוקס כתובה ב־C.
2- הקוד של ls נמצא ב-coreutils למשל. הינה המימוש שלו:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
זאת לא הדרך להתחיל ללמוד. אבל זה דרך טובה מאוד ללמוד.
---
עריכה:
הינה הקוד של ls ב־busybox:
https://github.com/mirror/busybox/blob/master/coreutils/ls.c
---
ערכה שלישית:
הינה קוד המקור של dir ב־freecom (המימוש החופשי של DOS - FreeDOS).
https://github.com/FDOS/freecom/blob/master/cmd/dir.c
נערך לאחרונה על-ידי elcuco בתאריך 18/01/2018 - 09:42, סך-הכל נערך פעם אחת
|
|
חזרה לתוכן הדיון |
פורסם: 17/01/2018 - 21:47
נושא ההודעה:
|
זו דרך טובה ללמוד תכנות מתקדם, לא להתחיל.
זה כמו להתחיל ללמוד הנדסה מלקרוא תוכניות של מגדל מורכב
|
|
חזרה לתוכן הדיון |
פורסם: 17/01/2018 - 23:48
נושא ההודעה:
|
לא מצאתי משהו מאוד קטן ופשוט שכתוב ב־C++ בדביאן.
במערכת דביאן יש תגיות (אופציונליות) לכל חבילה. אפשר לחפש לפי תגיות.
קוד: |
aptitude search '~Gimplemented-in::c\+\+'
|
במערכת שלי זה מחזיר כמעט 10000 תוצאות. דוגמה להגבלת החיפוש: הוספת התנאי שתאור החבילה יכלול את השם foob:
קוד: |
aptitude search '~Gimplemented-in::c\+\+ ~dfoob'
|
בעיקרון זה אמור גם לעבוד במערכות אחרות שמבוססות על דביאן (כגון אובונטו), אבל לא ברור לי אם aptitude מותקנת שם אוטומטית.
אם החלטתי שאני רוצה לבנות, הנה הדרך הפשוטה לקבל גרסה של קוד המקור שלה ולבנות אותו:
קוד: |
apt-get source lxmusic
sudo apt-get build-dep lxmusic
cd lxmusic-0.4.7
./debian/rules build
|
זו אינה המלצה דווקא על lxmusic (סתם בחרתי חבילה).
היתרון בשיטה הזו הוא שמובטח שהחבילה תיבנה ללא בעיות (בהפצות אחרות יש שיטות דומות) ואין בזבוז זמן מיותר על מציאת דרישות הבניה. הגרסה אינה בהכרח הגרסה הכי חדשה. אבל בכל מקרה זה לא מה שנדרש כאן.
ls (ושאר coreutils) כתובות ב־C.
|
|
חזרה לתוכן הדיון |
פורסם: 18/01/2018 - 01:12
נושא ההודעה:
|
אין לך שמץ של ידע בתכנות כלל או אין לך ידע בתכנות CPP?
כי אם יש לך ידע בתכנות אני חושב ש- elcuco צודק.
אם אין לך ידע בתכנות כלל, אני נוטה יותר לכיוון האורח שענה ל- elcuco.
|
|
חזרה לתוכן הדיון |
פורסם: 18/01/2018 - 15:18
נושא ההודעה:
|
תודה רבה!
אלקוקו - 5K שורות ל ls זה מטורף. אם כבר c אז אלך על פקודה כמו pwd
צפריר תודה. יבדק בערב.
האורח מעל - אין לי תואר במדמ"ח. אבל אני כותב פה ושם קוד (סקריפטים) ואם node.js כתובה ב C++ אני רוצה ללמוד C++
ניסיתי פעם לקרוא דוקומנצטיה של QT ו GTK (חלונות ויזואלים זה יותר מגניב) אבל לא הייתי עקבי
אולי אחזור לזה
https://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD
אז שוב, תודה.
קיבלתי הכוונה.
|
|
חזרה לתוכן הדיון |
פורסם: 18/01/2018 - 15:26
נושא ההודעה:
|
וכמובן שטעיתי.
הדוגמה של GTK כתובה ב C
אופס
|
|
חזרה לתוכן הדיון |
פורסם: 19/01/2018 - 14:45
נושא ההודעה:
|
אם אתה מחפש משהו פשוט ב-C++ אולי שווה לך להסתכל על qhcora שכתובה ב-Qt והמנוע עצמו כתוב ב-C.
https://github.com/elcuco/qhocr/tree/master/src
|
|
חזרה לתוכן הדיון |
פורסם: 22/01/2018 - 21:59
נושא ההודעה:
|
אזהרה קלה:
שפת ++C נמצאת במהלך של שינוי גדול מהשנים האחרונות. ייתכן ותבחר בפרוייקט ותיק שהקוד שנכתב בו מיושן (משתמש ב־raw pointers, new delete). לא כדאי שתרכוש הרגלים מסוימים רק בגלל שהקוד נכתב לפני זמן רב. אני חושב שזה המצב ברוב התוכנות.
אולי chaiscript יהיה שונה כיוון שהמחבר משתמש בפרויקט הזה כמעבדה לבחינת קוד מודרני.
|
|
חזרה לתוכן הדיון |
פורסם: 29/01/2018 - 04:19
נושא ההודעה:
|
למה לא ללמוד בדרך רגילה ? כלומר למשל תלמד משתנים, פלט קלט, אופרציות, פונקציות וכן הלאה חלק חלק ואז תתחיל להרכיב דברים. אתה הולך למבנה מורכב מאוד ומתקדם נורא שקרוב יותר לשכבות חומרה ועובד מול אינספור אלמנטים אחרים מאשר להבנת היסודות. תלמד את אבני הבניין הבסיסיות ואז תרכוש השכלה בהתאם לכיוון שמעניין אותך ותתפתח אליו.
תקרא קצת, תכתוב קצת, תקרא יותר ,תכתוב יותר. למה מכל העולמות להתחיל מתוכניות של מדינה לפני שאתה יודע לבנות יחידת דיור ? איך לערבב מלט ?
|
|
חזרה לתוכן הדיון |
פורסם: 29/01/2018 - 11:56
נושא ההודעה:
|
borsood : | אזהרה קלה:
שפת ++C נמצאת במהלך של שינוי גדול מהשנים האחרונות. ייתכן ותבחר בפרוייקט ותיק שהקוד שנכתב בו מיושן (משתמש ב־raw pointers, new delete). לא כדאי שתרכוש הרגלים מסוימים רק בגלל שהקוד נכתב לפני זמן רב. אני חושב שזה המצב ברוב התוכנות.
אולי chaiscript יהיה שונה כיוון שהמחבר משתמש בפרויקט הזה כמעבדה לבחינת קוד מודרני. |
למישהו שידע C++ על בוריה לפני 8 שנים, אבל מאז מתעסק בשפות שפויות - מה היית ממליץ אם אני רוצה לוותר על שפיותי ולחזור ל- C++ מודרנית?
|
|
חזרה לתוכן הדיון |
פורסם: 29/01/2018 - 15:05
נושא ההודעה:
|
מתפלא : | למה לא ללמוד בדרך רגילה ? כלומר למשל תלמד משתנים, פלט קלט, אופרציות, פונקציות וכן הלאה חלק חלק ואז תתחיל להרכיב דברים. אתה הולך למבנה מורכב מאוד ומתקדם נורא שקרוב יותר לשכבות חומרה ועובד מול אינספור אלמנטים אחרים מאשר להבנת היסודות. תלמד את אבני הבניין הבסיסיות ואז תרכוש השכלה בהתאם לכיוון שמעניין אותך ותתפתח אליו.
תקרא קצת, תכתוב קצת, תקרא יותר ,תכתוב יותר. למה מכל העולמות להתחיל מתוכניות של מדינה לפני שאתה יודע לבנות יחידת דיור ? איך לערבב מלט ? |
כי.
אני די זקן ודל משאבים (זמן, מרץ ואנרגיה, IQ , ממון ..) בשביל להתחיל תואר במדמ"ח.
מושגים כמו by ref/by val כבר די מוכרים לי.
והכי חשוב - לא ממתינה לי משרה בסיום הויה דה לה רוזה, אז למה להתעמק?
(כן, זה לא מקובל אבל אני קודם מאתר דרישה ואז לומד את המטריה)
ומצטרף לשאלה בדבר הC++ המודרנית.
האם זה שבר גדול כמו בפייתון?
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2018 - 03:15
נושא ההודעה:
|
בהצלחה איש!
|
|
חזרה לתוכן הדיון |
פורסם: 31/01/2018 - 08:57
נושא ההודעה:
|
[quote="Anonymous"] מתפלא : |
ומצטרף לשאלה בדבר הC++ המודרנית.
האם זה שבר גדול כמו בפייתון? |
לא, התאימות אחורה היא עקרון יסוד בשפה כך שגם קוד מיושן מאד יעבודץ וזה מקור האזהרה.
יש כלים שעוזרים ונותנים אזהרות, אבל אני לא מכיר קוד פתוח גדול שמשתמש בלעדית ב++C מודרני.
chaiscript שהזכרתי הוא פרוייקט קוד שהמחבר שלו משתמש בו גם לבחינת פרדיגמות תכנותיות מודרניות.
אם ידעת ++C לפני שמונה שנים אולי תשמח לראות את השינויים שהשפה עברה ותמשיך לעבור. אולי אפילו צתליח לשמור על שפיותך
|
|
חזרה לתוכן הדיון |
פורסם: 02/02/2018 - 19:17
נושא ההודעה:
|
אוקיי הורדתי את coreutils מפה git://git.sv.gnu.org/coreutils.git
ומה שאני לא מנסה לקמפל זה לא מצליח. חסר לו config.h מדוע?
קוד: | $ gcc whoami.c :(
whoami.c:21:10: fatal error: config.h: No such file or directory
#include <config.h>
^~~~~~~~~~
compilation terminated.
|
אגב זה לטרול שרושם פה כל הזמן שסטולמן פרזיט -
קוד: | grep -i stallman * :(
grep: blake2: Is a directory
cat.c: By tege@sics.se, Torbjorn Granlund, advised by rms, Richard Stallman. */
cat.c: proper_name ("Richard M. Stallman")
comm.c:/* Written by Richard Stallman and David MacKenzie. */
comm.c: proper_name ("Richard M. Stallman"), \
ls.c:/* Written by Richard Stallman and David MacKenzie. */
ls.c: proper_name ("Richard M. Stallman"), \
od.c: Based on a function written by Richard Stallman for a
rm.c:/* Initially written by Paul Rubin, David MacKenzie, and Richard Stallman.
rm.c: proper_name ("Richard M. Stallman"), \
split.c: proper_name ("Richard M. Stallman")
tee.c:/* Mike Parker, Richard M. Stallman, and David MacKenzie */
tee.c: proper_name ("Richard M. Stallman"), \
uniq.c:/* Written by Richard M. Stallman and David MacKenzie. */
uniq.c: proper_name ("Richard M. Stallman"), \
|
|
|
חזרה לתוכן הדיון |
פורסם: 02/02/2018 - 20:48
נושא ההודעה:
|
אתה באמת מצפה לקמפל קבצים של פרוייקט ישירות בלי להפעיל את ה-makefile?
יש readme עם הוראות איך לקמפל את הפרוייקט, תשתמש בו.
|
|
חזרה לתוכן הדיון |
פורסם: 03/02/2018 - 01:59
נושא ההודעה:
|
אני מצטרף לאזהרה של בורסוד (borsood) ומתנגד להצעה של elcuoco:
C++ עברה שינויים מאוד משמעותיים בשבע השנים האחרונות, וכל 3 שנים בערך תקן השפה מתעדכן. לא כל 3 שנים השינויים הם דרסטיים, אבל ב-2011 היו שינויים עצומים. אמנם נכון, שהשינויים עברו תוך שמירה על תאימות לאחר, אבל כאן גם בדיוק הבעיה: קוד מודרני ב-C++ נראה מאוד שונה מקוד "בסגנון ישן"; אבל קוד בסגנון ישן, אשר היום ממש לא כדאי לכתוב, עדיין יתקמפל ויעבוד כרגיל ובלי הערות ואזהרות. כך שאתה עלול לסגל לעצמך סגנון עבודה לא מוצלח.
הנה הרצאת הסבר נגישה וחביבה של Herb Sutter:
C++ מודרנית - מה שאת/ה צריך לדעת
בה תקבלו טעימה קטנה של השינוי בלי לצלול לעומק.
רוב התוכנה שכתובה ב-C++ כתובה ב"סגנון ישן" - כי היא נכתבה לפני 2011 . יתר על כן, ישנן ספריות ופלטפורמות רבות אשר מתוכננות בצורה "עקומה" כדי לעקוף או להתגבר על קשיים ב-C++ כפי שהתקיימה בעבר - ואילו היום אין במעקפים האלו צורך. כך למשל לגבי Qt. גם אם היינו "מעדכנים" את המימוש של Qt , עדיין כל הרעיון לא היה מתאים ל-C++ מודרני (ולא אכנס כאן להסבר מדוע).
זו סיבה אחת מדוע לא כדאי ללמוד C++ על בסיס הקוד של תוכנה קיימת. סיבה שניה היא שבתוכנה קיימת, גם אם היא כתובה היטב, באים לידי ביטוי המון סיבוכים ושיקולים וצרכים אשר חורגים ממה שתלמיד מתחיל של שפת התכנות צריך לחשוב עליהם - וזה מבלבל (בלי קשר ל-C++).
|
|
חזרה לתוכן הדיון |
פורסם: 03/02/2018 - 02:02
נושא ההודעה:
|
ההודעה הקודמת היא שלי, לא הייתי מחובר...
|
|
חזרה לתוכן הדיון |
פורסם: 03/02/2018 - 11:39
נושא ההודעה:
|
Anonymous : | אתה באמת מצפה לקמפל קבצים של פרוייקט ישירות בלי להפעיל את ה-makefile?
יש readme עם הוראות איך לקמפל את הפרוייקט, תשתמש בו. |
תודה על התשובה.
זה לא טריוויאלי מבחינתי לקבל תשובה לשאלה כל כך בסיסית אשר בטח אם הייתי בצד השני שמבין - היתה מעוררת בי אנטגוניזם.
תודה רבה גם לשאר התורמים לדיון. (אינפו כלום )
|
|
חזרה לתוכן הדיון |
פורסם: 05/02/2018 - 20:50
נושא ההודעה:
|
זה אני מאשכול אחר פה, אבל הבחור עשה גם סרטון על C++ מלפני 3 שנים (כך שלדעתי מאוד עדכני), אז אתה מוזמן גם לשם ולא רק לקוד המקור:
https://www.youtube.com/watch?v=Rub-JsjMhWY
זה שעה ועשר דקות.
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2018 - 07:05
נושא ההודעה:
|
לא.
מלמד על raw pointers ו raw arrays.
בהחלט לא.
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2018 - 13:04
נושא ההודעה:
|
נדמה לי שהתכוונת שהוא *לא* מלמד על המצביעים שהזכרת ולא שהוא כן מלמד.
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2018 - 16:09
נושא ההודעה:
|
מהמעט שראיתי עושה רושם שהוא מלמד את אותם דברים שאני מכיר מ-c++ מלפני 20 שנה, זה בטח לא השינויים והעדכונים ש-borsood מתכוון אליהם.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2018 - 07:12
נושא ההודעה:
|
הבהרה: מלמד על raw arrays החל מ 13:50.
מלמד על raw pointer החל מ 42:00.
לכן הוא מלמד ++c מיושן.
הוא גם משתמש הרבה בendl. והנה סרטון קצר שמסביר למה זה רעיון רע במציאות
https://www.youtube.com/watch?v=6WeEMlmrfOI
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2018 - 13:39
נושא ההודעה:
|
borsood : | הבהרה: מלמד על raw arrays החל מ 13:50.
מלמד על raw pointer החל מ 42:00.
לכן הוא מלמד ++c מיושן.
הוא גם משתמש הרבה בendl. והנה סרטון קצר שמסביר למה זה רעיון רע במציאות
https://www.youtube.com/watch?v=6WeEMlmrfOI |
אה, אם כך מתנצל בפניך.
עכשיו הבנתי .
|
|
חזרה לתוכן הדיון |
|