![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
micro-chipset |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Возникла проблема со следующей задачей. Задача из из книги Б. Керниган, Д. Ритчи "Язык программирования Си" Глава 1.6 упражнение 1.13 Книгу онлайн можно найти тут
Сама задача Програма должна выводить гистограмму длин слов во входном потоке. т.е. надо чтобы выводился массив допустим длинной 15 первый элемент слово из нуля букв второй символ слово из одной буквы третий символ из 2 букв ну и так далее. набросок программы
Программа компилируется, но выдает не верные результаты. Наверное не верно заполняю массив, как поправить. Зарание спасибо за помощь. |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
а почему именно C, а не C++ ? Или тебе для микроконтроллеров ?
Для начала - учимся основам: 1) форматирование кода (тут я лично мой варинт покажу, но он не самый плохой. Я даже уверен, что он хороший ![]() 2) инициализация с учётом вышесказанного, программа в стиле C будет выглядеть уже так Раскрывающийся текст
Сообщение отредактировал Алексей1153 - 29.1.2011, 12:55 |
|
|
micro-chipset |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
1) С форматированием согласен еще не вошло в привычку придерживаться нормального стиля.
На данный код компилятор ругается: Ошибки компилятора gcc power.c -o power power.c: В функции ‘main’: power.c:21: предупреждение: несовместимая неявная декларация внутренней функции ‘memset’
Этот кусочек не совсем ясен. Особенно что такое enum и зачем так делается. И зачем инитить массив что это дает. У Керниган и Ритчи пока такого не встречал если можно поясните пожалуста. Хотелось бы понять. |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
На данный код компилятор ругается: надо заголовочник добавить <memory.h> enum - это объявление константы типа int (причём, эта константа будет иметь область видимости, что очень хорошо) arrlen*sizeof(*length) - это выражение даст длину массива в байтах ( arrlen * длину_одного_элемента_массива) (*length) - это разыменование указателя, так что sizeof этого выражения вернёт размер указуемого элемента для статического массива можно было бы и просто sizeof(length) написать, но я не стал тебя путать и показал универсальный вариант для статических и для динамических массивов И зачем инитить массив что это дает инициализировать нужно абсолютно всё, иначе сюрпризы будут появляться в программах постоянно Сообщение отредактировал Алексей1153 - 29.1.2011, 16:19 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
DEADHUNT |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
На данный код компилятор ругается: надо заголовочник добавить <memory.h> enum - это объявление константы типа int (причём, эта константа будет иметь область видимости, что очень хорошо) arrlen*sizeof(*length) - это выражение даст длину массива в байтах ( arrlen * длину_одного_элемента_массива) не понятно чему ты учишь, но в C нету memory.h, функция memset определёна в string.h/cstring. по поводу arrlen*sizeof(*length), проще так:
Сообщение отредактировал DEADHUNT - 29.1.2011, 20:23 |
|
|
Rocky |
![]()
Сообщение
#7
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Кстати, а в ANSI C есть операторы "++" и "--" постфиксной и префиксной форм? (имеющие тот же смысл что и в С++)
Я просто помню помню фразу преподователя со 2-го курса института "Знаменитый оператор ++ языка С++....." которая предполагала, что все это было введено уже в С++.... А т.к. компилятора ANSI C у меня никогда не было =), я так и остался в неведении... |
|
|
BRE |
![]()
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Rocky |
![]()
Сообщение
#9
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Буду знать, пасиб)
|
|
|
micro-chipset |
![]()
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Программа компилируется и работает. Но выдает не верный результат. Проверяю так:
то есть должна посчитать длинны слов в файле 1 в файле один содержится:
А программа выдает:
А должно быть:
Программа имеет вид: Исходный код программы
|
|
|
DEADHUNT |
![]()
Сообщение
#11
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
файл utf8, а ты его как ASCII читаешь.
|
|
|
micro-chipset |
![]()
Сообщение
#12
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#13
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
фразу-то не закончил. Какую область видимости будет иметь константа? как то есть где, в том блоке, где определена не понятно чему ты учишь, но в C нету memory.h, функция memset определёна в string.h/cstring. по поводу arrlen*sizeof(*length), проще так: memset(arr, 0, sizeof(arr)); http://msdn.microsoft.com/en-us/library/aa246471(VS.60).aspx тут два заголовочника. Можно любой ![]() Насчёт "проще" - я выше написал, почему я именно так сделал - а то он и динамический массив так инициализировать будет |
|
|
micro-chipset |
![]()
Сообщение
#14
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А все же что с решением задачки. Работает она не верно же
|
|
|
Алексей1153 |
![]()
Сообщение
#15
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
micro-chipset, покажи алгоритм на обычном русском языке - что ты делаешь. Без алгоритма не напишешь и не отладишь
|
|
|
DEADHUNT |
![]()
Сообщение
#16
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
А как поправить? для работы с UTF можешь использовать например ICU. http://msdn.microsoft.com/en-us/library/aa246471(VS.60).aspx тут два заголовочника. Можно любой ![]() Насчёт "проще" - я выше написал, почему я именно так сделал - а то он и динамический массив так инициализировать будет когда я начинал писать программы на C, я подключал <malloc.h> вместо <stdlib.h>(когда мне были нужны malloc/realloc/calloc/free). Да работает, но это не правильно. И в один момент компилятор может выдать ошибку, потому-что это не стандартный заголовочный файл. Сообщение отредактировал DEADHUNT - 30.1.2011, 17:13 |
|
|
micro-chipset |
![]()
Сообщение
#17
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А как поправить? для работы с UTF можешь использовать например ICU. А поподробней Алгоритм словами если ну примерно так представляю: Считываем посимвольно входной поток при помощи getchar(). Начиная с первого символа проверяем слово это или пробел или табуляция или перевод на новую строку если буква увеличиваем переменную на один если следующая снова буква то увеличиваем еще на один в итоге в переменной накопится количество букв слова. Далее нужно вывести в нужную ячейку массива ячейка масива с номером равным количеству букв. и так повторить снова со следующим словом. Может грубо сформулировано но как понимаю она должна работать. Поправьте пожалуйста если что то не так. |
|
|
Алексей1153 |
![]()
Сообщение
#18
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
micro-chipset, это ты уже почти программу пытаешься написать, только словами
![]() 1) инициализировать переменные и массив, в котором хранится текущее содержимое гистограммы 2) считать очередное слово. Определить его длину, инкрементировать нужный счётчик в массиве гистограммы 3) если строка не закончилась, перейти к пункту 2 4) иначе - распечатать гистограмму 5) ждать нажатие клавиши 6) выйти |
|
|
micro-chipset |
![]()
Сообщение
#19
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.1.2011 Пользователь №: 2371 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
micro-chipset, это ты уже почти программу пытаешься написать, только словами ![]() 1) инициализировать переменные и массив, в котором хранится текущее содержимое гистограммы 2) считать очередное слово. Определить его длину, инкрементировать нужный счётчик в массиве гистограммы 3) если строка не закончилась, перейти к пункту 2 4) иначе - распечатать гистограмму 5) ждать нажатие клавиши 6) выйти Тут все понятно только наверное не согласен с пунктом 3 думаю не строка а входной поток(проверить через EOF) строк может быть и несколько. И дальше как это реализовать в программе с алгоритмом все ясно. |
|
|
Алексей1153 |
![]()
Сообщение
#20
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
строку можно тоже представить потоком, а новые строки разделены символами возврата каретки и перевода строки .
А дальше берёшь каждый пункт основного плана, так сказать, и детализируешь 1 - это уже сделали выше. 2 - например, сделай процедуру, которая на вход получает: -начало потока (вернее, текущее место, откуда начинать), -максимальная длина, которую разрешено обработать, возвращает: -длину слова -позицию начала ещё не обработанных символов прототип примерно такой const char* void F(const char* beg, const int len, int& wordlen); Сообщение отредактировал Алексей1153 - 30.1.2011, 18:55 |
|
|
Iron Bug |
![]()
Сообщение
#21
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
enum { arrlen=15, }; в этом куске неявно определён НЕИМЕНОВАННЫЙ элемент. в хвосте, перед закрывающей скобкой, не должно быть запятой. иначе компилятор считает, что там ДВА элемента и при переборе констант он таки будет считать, что есть неименованный элемент, значение которого равно 16. по-моему, нет смысла юзать enum там, где можно обойтись define'ами (поверьте старому системному программисту) ![]() далее, ошибка в самой исходной программе в определении j: если ты сканируешь алфавитный диапазон, то смещение первой буквы будет j='a'; (это ASCII код 61h) а у тебя смещение фиг знает где и length[c-j] где-то явно вне границ диапзона length. да и сама строка ++length[c-j]; стоит не в том месте, где полагается - она плюсует количество слов на каждой букве. в общем, проверяй диапазоны и логику. |
|
|
Алексей1153 |
![]()
Сообщение
#22
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ну, запятую я случайно оставил, да.
в этом куске неявно определён НЕИМЕНОВАННЫЙ элемент. в хвосте, перед закрывающей скобкой, не должно быть запятой. иначе компилятор считает, что там ДВА элемента и при переборе констант он таки будет считать, что есть неименованный элемент, значение которого равно 16 а доказательства ? И какие-то разве последствия будут ? Я не просто так спрашиваю, дело в том, что у меня довольно часто вот так запятая там стоит - по причине визуального выравнивания кода (ну это долгая и никому неинтересная история), однако никогда ошибок или проблем не было. Создаётся впечатление, что пустоту после запятой в енуме компилятор просто игнорирует. А перечислял я и маски, и инкрементные идешники. Никогда ничего не покривилось ) Ежели тут есть опасность, то перестану так делать |
|
|
Iron Bug |
![]()
Сообщение
#23
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
а доказательства ? И какие-то разве последствия будут ? это определение структуры языка. в enum можно пропускать символические константы (типа { one=1, ,three=3,,,six=6 }). последняя константа - не исключение. можешь проверить, у меня просто было достаточно опыта с такими глюками. потенциальные проблемы - в пропускании тегов посередине. если потом используются манипуляции с последовательной нумерацией. не смертельно, но найти сложно. хотя, может, не все компиляторы такое позволяют, но у меня точно была такая проблема однажды. Сообщение отредактировал Iron Bug - 31.1.2011, 19:50 |
|
|
Алексей1153 |
![]()
Сообщение
#24
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Iron Bug, так я же не спорю, что если в середине пропустить, будет лишний инкремент. Но вот с последней запятой - что страшного ? И даже не узнать, что там компилятор сделал дальше
![]() |
|
|
DEADHUNT |
![]()
Сообщение
#25
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
это определение структуры языка. в enum можно пропускать символические константы (типа { one=1, ,three=3,,,six=6 }). вообще-то так нельзя делать. ISO/IEC 9899(Programming Language C): Цитата enum-specifier:
enum identifieropt { enumerator-list } enum identifieropt { enumerator-list , } enum identifier enumerator-list: enumerator enumerator-list , enumerator enumerator: enumeration-constant enumeration-constant = constant-expression |
|
|
Алексей1153 |
![]()
Сообщение
#26
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Iron Bug |
![]()
Сообщение
#27
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
вообще-то так нельзя делать. ISO/IEC 9899(Programming Language C): а, наверное, это в плюсах. но я помню, что однажды был какой-то страшный гемор из-за этих запятых у меня в одном из проектов. деталей не помню, ибо проектов просто до чёрта. если вдруг вспомню или наткнусь в коде - сообщу. Сообщение отредактировал Iron Bug - 31.1.2011, 21:42 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#28
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
DEADHUNT, нет ли у тебя в закромах ссылки на текст стандарта? А то я как-то рылся по инету и пришёл к выводу, что это только за деньги, либо обрывки (кто, что выложил).
|
|
|
Rocky |
![]()
Сообщение
#29
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
У меня был где-то... если нужен поищу.. дай мыло скину )
|
|
|
DEADHUNT |
![]()
Сообщение
#30
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
а, наверное, это в плюсах. нету такого ни в C ни в C++. DEADHUNT, нет ли у тебя в закромах ссылки на текст стандарта? А то я как-то рылся по инету и пришёл к выводу, что это только за деньги, либо обрывки (кто, что выложил). официальные draft'ы: open-std.org (они бесплатные, далее стандартизируются и оф. стандарт платный) |
|
|
Iron Bug |
![]()
Сообщение
#31
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
DEADHUNT |
![]()
Сообщение
#32
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
как минимум gcc и msvc это поддерживают. и сдаётся мне, что есть такой стандарт, ибо я это не из головы самостоятельно придумала. может не стандартное расширение не скомпилировалось: http://codepad.org/dhHhA6n1 Цитата $ g++ test.cpp
test.cpp:5: error: expected identifier before ‘,’ token test.cpp:5: error: expected identifier before ‘,’ token |
|
|
igor_bogomolov |
![]()
Сообщение
#33
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
У меня компилируется. Но значения не сдвигаются
gcc version 4.4.5 20101112 (ALT Linux 4.4.5-alt3) (GCC) |
|
|
Jason-GTK |
![]()
Сообщение
#34
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 27.4.2014 Пользователь №: 4114 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
как-то так ... сам недавно начал .
и не надо говорить , что тема баян . прекрасно ищется в гугле , а потому я считаю нужным оставить скрин и текст кода здесь . |
|
|
Jason-GTK |
![]()
Сообщение
#35
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 27.4.2014 Пользователь №: 4114 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Может на этом форуме и нет живых , но для случайных посетителей оставлю здесь поправленный код с книги Кернигана (2 и 3 издание) . Ибо у меня не заводилось с первого раза с главы 1.9. Символьные массивы .
Раскрывающийся текст ![]()
|
|
|
Martein |
![]()
Сообщение
#36
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 22.6.2014 Пользователь №: 4174 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
lanz |
![]()
Сообщение
#37
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Студию Express можно поставить русскоязычную. Я с ней намучился когда к Qt Creator подключал
![]() |
|
|
Iron Bug |
![]()
Сообщение
#38
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Слушайте, а где это мне нарыть русскоязычный компилятор? а зачем? программист в любом случае должен свободно читать по-английски. потому что в 99% случаев никто ему не будет переводить документацию. так что если собираешься работать программистом - лучше сразу как можно раньше начинать изучать английский, хотя бы технический. ну и при использовании русскоязычного компилятора могут возникнуть проблемы взаимодействия с другими программистами: я, например, не могу читать вывод русскоязычных компиляторов и затрудняюсь дать какой-либо совет, когда человек приводит такой вывод. слишком сложно догадаться, что имелось в виду, когда читаешь ужасы перевода сообщений компилятора на русский язык ![]() |
|
|
Анна |
![]()
Сообщение
#39
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
Слушайте, а где это мне нарыть русскоязычный компилятор? а зачем? программист в любом случае должен свободно читать по-английски. потому что в 99% случаев никто ему не будет переводить документацию. так что если собираешься работать программистом - лучше сразу как можно раньше начинать изучать английский, хотя бы технический. ну и при использовании русскоязычного компилятора могут возникнуть проблемы взаимодействия с другими программистами: я, например, не могу читать вывод русскоязычных компиляторов и затрудняюсь дать какой-либо совет, когда человек приводит такой вывод. слишком сложно догадаться, что имелось в виду, когда читаешь ужасы перевода сообщений компилятора на русский язык ![]() Полностью согласна. Перевод сообщений компилятора на русский язык не всегда адекватен. Особенно, сообщения о нетривиальных ошибках... Или наоборот, слишком тривиальных. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 1.6.2025, 4:31 |