Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Язык C  (Прочитано 5343 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Antonio77

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Язык C
« : 25 Февраля 2012, 18:21:14 »
Всем привет! Возникла такая проблема, я написал свой первый Hello, World, как его теперь открыть? Файл сохранял через программу Geany с расширением .o

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Язык C
« Ответ #1 : 25 Февраля 2012, 19:53:29 »
Здесь всё расписано: https://forum.ubuntu.ru/index.php?topic=100976.0
Если только начали изучать С в среде линукс, не надо использовать сразу
оболочки. Всё лучше научиться для начала в консоле.

Пользователь решил продолжить мысль 25 Февраля 2012, 20:30:23:
Здесь всё расписано: https://forum.ubuntu.ru/index.php?topic=100976.0
Если только начали изучать С в среде линукс, не надо использовать сразу
оболочки. Всё лучше научиться для начала в консоле.

Для примера пишем в любом редакторе код:
#include <stdio.h>

main()
{
   printf ("Hello World!\n");
}
Сохраняем его в файле hello.c
Компилируем в консоле: ~$ gcc hello.c
Получаем скомпилированный файл: a.out
Запускаем его: ./a.out
Hello World!
Вуаля!

« Последнее редактирование: 25 Февраля 2012, 20:30:23 от Señor_Gaga »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #2 : 25 Февраля 2012, 21:19:05 »
Всем привет! Возникла такая проблема, я написал свой первый Hello, World, как его теперь открыть? Файл сохранял через программу Geany с расширением .o

1. я не знаю что такое "программа Geany", но, если это действительно язык С, то берите читайте вот это (я вам уже давал ссылку, но вы не читаете, только пишете ;)):
Инструменты Linux для Windows-программистов
название не должно смущать, но там очень коротко и сжато (конспект) о том как:
- компилировать программу gcc;
- как для этого использовать make;
- как строить свои и использовать чужие библиотеки;
- самые специфические для UNIX стороны использования С;
это в форме конспекта отобрано то, что вы будете по крохам разыскивать по-частям как минимум год от начала изучения С.

2. как здесь уже ответили, по первых временах вас совершенно не нужно использовать в Linux какие-то IDE, оболочки для разработки - это вам не виндузя...
вполне достаточно любимого народного mc с его редактором по F4.
до тех пор пока вы не перейдёте к проектам >4-5 файлов кода .с, суммарным объёмом в несколько сот строк - никакие IDE вам не нужны! - они только замедлят ваше освоение С. 

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Язык C
« Ответ #3 : 26 Февраля 2012, 01:16:59 »
Пришел к выводу: кто хочет стать реальным программистом, то надо
обратить внимание на два языка программирования:
Forth - даст понимание на уровне ячеек памяти, стеков и проч..
Python - эффективная работа со списками, кортежами и проч...
Хотя я могу ошибаться, ибо встречал людей,
которые ни чего не знают о регистрах процессора -
но пишут классные веб-приложения.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #4 : 26 Февраля 2012, 02:49:11 »
Пришел к выводу: кто хочет стать реальным программистом, то надо
обратить внимание на два языка программирования:
Forth - даст понимание на уровне ячеек памяти, стеков и проч..
Python - эффективная работа со списками, кортежами и проч...
Хотя я могу ошибаться
Forth - был интересный проект ... лет 10 назад, с тех пор только - очень красивая игрушка.
Python - новомодная штучка ... время покажет, какое у неё будущее.

А чего это вас такая грусть взяла? языки программирования перебирать? ... это лет 20 назад модно было.

И почему эти только 2 выделились? Я вам ещё как минимум 30 имён могу назвать с равным набором достоинств своих каждый...

Совершенно другой способ оценивания языков-инструментов для тех "кто хочет стать реальным программистом" - это покопаться в листах вакансий крупных софт-разработчиков ... можно аутсорсеров, чтоб говорить о "мировой потребности" + сложить по этому прайсу рейтинг на основе 2-х критериев: потребность + уровень оплаты...
Я вам могу сразу предсказать что у вас получится:
1. Java
2. C (Linux/UNIX)
3. Python
4. C#
...

Оффлайн Antonio77

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Язык C
« Ответ #5 : 26 Февраля 2012, 06:07:21 »
Спасибо за ответы!

Пользователь решил продолжить мысль 26 Февраля 2012, 06:19:27:
Можно с каким нибудь программистом поговорить в личке? У меня много вопросов.
« Последнее редактирование: 26 Февраля 2012, 06:19:27 от Antonio77 »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1690
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Язык C
« Ответ #6 : 26 Февраля 2012, 06:58:15 »
Господа, вопрос: Где находятся файлы реализации стандартной библиотеки C++? Заголовочные я без труда нашел в /usr/include, но вот где лежит имплементация?
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #7 : 26 Февраля 2012, 12:29:16 »
Господа, вопрос: Где находятся файлы реализации стандартной библиотеки C++? Заголовочные я без труда нашел в /usr/include, но вот где лежит имплементация?

1. Зачем? после продолжительных поисков вы убедитесь, что они вам не нужны...

2. Реализация большинства вызовов библиотеки С++ - это простая ретрансляция в вызовы библиотеки С, ваша программа C++ просто тупо использует всё великое множество API C. Соберите самую-самую простую программу, чтоб ничем не усложнять и не засорять:
#include <iostream>

using std::cout;
using std::endl;

int main( int argc, char *argv[] ) {
   cout << "Hello, world!" << endl;
   return 0;
};
а теперь ... о ужас:
$ g++ prog_cc.cc -o prog_cc
$ ldd ./prog_cc
        linux-gate.so.1 =>  (0x0048f000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x03927000)
        libm.so.6 => /lib/libm.so.6 (0x0098f000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0054c000)
        libc.so.6 => /lib/libc.so.6 (0x007ff000)
        /lib/ld-linux.so.2 (0x007dc000)
- libc.so это и есть С библиотека в параллель с libstdc++.so.

3. Исходные коды библиотек С/С++ находятся в составе проекта компилятора GCC. В вашей системе их нет. Для этого нужно устанавливать проект GCC в исходниках.

4. Но и это вам очень мало что даст, потому как большинство вызовов библиотек С/С++ - это будет:
- ретрансляция вызова С++ в вызов С;
- ретрансляция вызова С в вызов такой функции как syscall();
- а код требуемых действий syscall() выполняется в ядре Linux...
- ... и возвращается в ваш С++ вызов ;).

Вот так то вот, где-то... Так что реализации большинства вещей ищите ... в ядре Linux.
Чего делать я вам не советую ;).


Пользователь решил продолжить мысль 26 Февраля 2012, 14:08:50:
Господа, вопрос: Где находятся файлы реализации стандартной библиотеки C++? Заголовочные я без труда нашел в /usr/include, но вот где лежит имплементация?
в смысле этого вопроса интересное обсуждение и вот здесь: "что мы, как и откуда ставим":
https://forum.ubuntu.ru/index.php?topic=184210.0
« Последнее редактирование: 26 Февраля 2012, 14:08:50 от Olej »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #8 : 28 Февраля 2012, 10:55:32 »
Спасибо за ответы!

Пользователь решил продолжить мысль 26 Февраля 2012, 06:19:27:
Можно с каким нибудь программистом поговорить в личке? У меня много вопросов.

раз уж пошёл разговор о С (тема так называется), то всякому работающему с С это должно быть интересно:

1. вот, мне подсказали, проект нового открытого стандарта С, April 12, 201 :
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

2. а вот здесь последние тексты стандартов POSIX (на которые все ссылаются, но которые, чаще всего, в глаза не видели) IEEE Std 1003.1-2008 :
http://pubs.opengroup.org/onlinepubs/9699919799/idx/xsh.html

И там и там - всё о библиотеках, API и т.д. (только там и там по-разному).
Безумно полезно!

 

Оффлайн HappyTree

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Язык C
« Ответ #9 : 28 Февраля 2012, 11:07:07 »
Python - новомодная штучка ... время покажет, какое у неё будущее.


Совершенно другой способ оценивания языков-инструментов для тех "кто хочет стать реальным программистом" - это покопаться в листах вакансий крупных софт-разработчиков ... можно аутсорсеров, чтоб говорить о "мировой потребности" + сложить по этому прайсу рейтинг на основе 2-х критериев: потребность + уровень оплаты...
Я вам могу сразу предсказать что у вас получится:
1. Java
2. C (Linux/UNIX)
3. Python
4. C#
...

Питону что-то гдето 20 лет уже. Новомодная штучка?

И С# я бы сразу за java ставил. Именно там его место на рынке. А С где-то с конца.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #10 : 28 Февраля 2012, 11:23:13 »
Python - новомодная штучка ... время покажет, какое у неё будущее.


Совершенно другой способ оценивания языков-инструментов для тех "кто хочет стать реальным программистом" - это покопаться в листах вакансий крупных софт-разработчиков ... можно аутсорсеров, чтоб говорить о "мировой потребности" + сложить по этому прайсу рейтинг на основе 2-х критериев: потребность + уровень оплаты...
Я вам могу сразу предсказать что у вас получится:
1. Java
2. C (Linux/UNIX)
3. Python
4. C#
...

Питону что-то гдето 20 лет уже. Новомодная штучка?
20 лет - это если с кем сравнивать ;) :
- если с какими-то совсем новоделами, то 20 лет - срок...
- а если с египетскими пирамидами ... или хотя бы с языком С? ... то - детский возраст.
P.S. и при всех хвалебных отзывах, я не встречал ни одной крупной разработки на Python, крупной - это соизмеримой по объёму, например, с VoIP коммутаторами: Asterisk, FreeSWITCH...

И С# я бы сразу за java ставил. Именно там его место на рынке. А С где-то с конца.
А вот это уже возможно и справедливо, но только для каких-то других операционных систем, отличных от Linux/UNIX/POSIX:

- .NET и С# - это вообще "вторичная" технология, ничем не отличающаяся в принципах от Java, которая (Java) имеет тот единственный недостаток, что выдумана и принадлежит не MS...
- я не думаю, что С# имеет какое-либо право и шансы на жизнь в мире UNIX ...
- по крайней мере, ни об одном проекте, крупнее "hello world!" в UNIX на C# не слышно ;)

- а на C прописано ядро Linux, и дописывать к нему модули можно исключительно на С, и ни на чём больше...
- а драйверы всем писать хочется ;)
- только по этой одной простой причине С никак не может быть в Linux "в конце".

P.S. и ещё маленькое примечание относительно С:
- опять же, поскольку на C прописано ядро Linux...
- то ... "если ты не знаешь С, то ты не можешь знать Linux" ;) - хоть бы ты был семи пядей во лбу ;)
 

Оффлайн Gekko

  • Участник
  • *
  • Сообщений: 222
    • Просмотр профиля
Re: Язык C
« Ответ #11 : 28 Февраля 2012, 12:24:25 »

P.S. и при всех хвалебных отзывах, я не встречал ни одной крупной разработки на Python, крупной - это соизмеримой по объёму, например, с VoIP коммутаторами: Asterisk, FreeSWITCH...


Есть одна прога, которая сокрушает всех пессимистов настроенных против Python, это Blender. Очень крутая прога по уровню функционала уже вплотную дышит в затылок 3dMAX-у.
Xubuntu 12.04 LTS с Xfce 4.10

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #12 : 28 Февраля 2012, 13:01:56 »

P.S. и при всех хвалебных отзывах, я не встречал ни одной крупной разработки на Python, крупной - это соизмеримой по объёму, например, с VoIP коммутаторами: Asterisk, FreeSWITCH...


Есть одна прога, которая сокрушает всех пессимистов настроенных против Python, это Blender. Очень крутая прога по уровню функционала уже вплотную дышит в затылок 3dMAX-у.
Да, Blender крупный и активно развивающийся проект, как-то обсуждали ... вот здесь ;) : http://rus-linux.net/forum/viewtopic.php?f=12&t=1541 - это не совсем из области IT проект, но - хорош ;).
Тем не менее, он несоизмерим по объёму, размеру кода ни с ядром Linux, ни с Asterisk, ни с FreeSWITCH.

По поводу: "сокрушает всех пессимистов настроенных против Python"(с) ;) - да никто, кажется, и не настроен против Python?

Ещё есть Ruby быстро (появился в 1995г.) набирающий популярность.

... но всё это - "2-й эшелон" ;)

Так что топик-спикер правильно определился с тем, чего ему изучать: начинаем с С, а дальше ... "соль, сахар, перец - по вкусу" ;)

Потому как повторю: "если ты не знаешь С, то ты ничего не понимаешь в Linux" (юзеров и администраторов - просят не беспокоиться, это "ничего" относится только к программистам ;)).
« Последнее редактирование: 28 Февраля 2012, 13:05:27 от Olej »

Оффлайн dimmmy

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Язык C
« Ответ #13 : 28 Февраля 2012, 13:02:24 »
"И С# я бы сразу за java ставил. Именно там его место на рынке. А С где-то с конца." - Только не говорите это эмбеддерам - сожгут на костре :)

Пользователь решил продолжить мысль 28 Февраля 2012, 13:05:24:
...да и Linux, как ни странно, дитя C-программистов :)
« Последнее редактирование: 28 Февраля 2012, 13:05:24 от dimmmy »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Язык C
« Ответ #14 : 28 Февраля 2012, 13:07:54 »
"И С# я бы сразу за java ставил. Именно там его место на рынке. А С где-то с конца." - Только не говорите это эмбеддерам - сожгут на костре :)

Пользователь решил продолжить мысль 28 Февраля 2012, 13:05:24:
...да и Linux, как ни странно, дитя C-программистов :)

+ давнее крылатое выражение: "UNIX создан программистами и для программистов"...

- а далее, индукцией, из этих высказываний выводим, что: не программирующий на С - программистом и вовсе не является ;) ;) ;).

Как вам такая индукция? ;)
« Последнее редактирование: 28 Февраля 2012, 13:11:28 от Olej »

 

Страница сгенерирована за 0.073 секунд. Запросов: 25.