где изучить c, c++, c#
9654
40
Доброго времени суток, уважаемые форумчане!
Возникла необходимость освоить языки программирования C, C++, C# без отрыва от основной деятельности. Где в Новосибирске есть нормальные вечерние курсы по программированию на указанных языках (УЦИТ в НГТУ не предлагать)?
Как и где лучше научиться программировать на этих языках?
Не смотря на присутствие в этих языках буквы С, предлагаю все же остановиться на чем-то одном. Потому как кроме этой С ничего общего между ними нет.
Далее покупаем книжку - и вперед. Ну это при условии что есть понимание что такое программирование вообще, т..е например вы умеете програмировать на бейсике там или еще на чем-то.
начальные знания языка C уже есть. Хочу их углубить...
начальные знания языка C уже есть. Хочу их углубить...
А есть какая-то конечная цель этого изучения? Написание некоторой программы, или просто расширение технического кругозора? У этих трех языков достаточно разная область приложения.
KSergey
Я так понимаю, организация отправляет на курсы повышения квалификации. Поэтому книжку/сайт можно было и не предлагать.
ТикТак
Я так понимаю, организация отправляет на курсы повышения квалификации. Поэтому книжку/сайт можно было и не предлагать.
Мне далеко до ваших телепатических способностей. Так что предложил уже.
KSergey
Плохо!
В следующий раз, когда увидите "вечерние курсы" и "УЦИТ в НГТУ" - сразу развивайте телепатию.
ТикТак
Почему это? Повысить квалификацию можно и дома за книжками/инетом.
craxx
Я предположил, исходя из сообщения, что ТС нужно именно это. Про книжки/сайты спрашивают по-другому. Сильно по-другому.
Цель - расширение технгического кругозора. Работа частично связана с программированием, и с программированием на нижнеуровневых языках (программирование ПЛК) проблем никаких не возникает. А с программированием тех устройств, где необходим язык "С" и ему подобные языки иногда возникают некоторые сложности.
УЦИТ НГТУ - не рассматриваю, т.к. учился там какое-то время и остался крайне недоволен качеством обучения.
Умные люди подсказали еще 2 Новосибирских фирмы с нужными курсами, авторизованные Майкрософтом... и отзывы про них хорошие, но очень дорого....
В данный момент повышаю квалификацию по учебникам и с помощью сайтов
по собственному опыту изучения С могу сказать, что нужно брать конкретную задачу и делать её, понимание должно проходить через руки - это единственный эффективный способ обучения.

Как с этим помогут справиться, кем бы то ни было, сертифицированные компании, я не понимаю.

Из полезного могу сказать:
- под линуксом учиться легче, чем под виндой
- все сложные вещи в С делаются через указатели, поэтому физическое понимание работы указателей обязательно: http://www.stanford.edu/~fringer/teaching/operating_systems_03/handouts/lecture9.pdf
IEEE
по собственному опыту изучения С могу сказать, что нужно брать конкретную задачу и делать её, понимание должно проходить через руки - это единственный эффективный способ обучения.

Как с этим помогут справиться, кем бы то ни было, сертифицированные компании, я не понимаю.
Почему же? В качестве задачи выбирается "Hello, world!" - и вперед!
IEEE
Из полезного могу сказать:
- под линуксом учиться легче, чем под виндой
Чем С под линуксом отличается от С под виндой? букавки "проще"?
Н-да, надо же, какой я тёмный...
KSergey
Чем С под линуксом отличается от С под виндой? букавки "проще"?
Навскидку, работа с нитями проще, проще работать с сокетами, с сигналами, любое устройство, посути, является файлом, ненужно городить огород через апи драйверов как в венде. Продалжать можно на много страниц, только смысл...
Mozepiy
Все что вы перечисляете к языку С не имеет никакого отношения вообще.
Это API ОС, которое относится к любому языку.
KSergey
Все что вы перечисляете к языку С не имеет никакого отношения вообще.
Еслиб оно неимело отношения, то все программы на языке С, былиб изначально кроссплатформенны, но такого почемуто нету, может просвятите почему ?

Это API ОС, которое относится к любому языку.
Что в вашем понимании есть API ? Комманды языка и там, и там одинаковые.
Mozepiy
Я не знаю что тут ответить.
Предлагаю просто прикинуть как будет выглядеть программа на Паскале или Ада или даже PHP для тех самых сокетов на разных платформах - ну и понять где заканчивается язык и начинается API OS.
KSergey
Я не знаю что тут ответить.
Примерно такого ответа я и ожидал.

Предлагаю просто прикинуть как будет выглядеть программа на Паскале
Паскаль хорош для начального обучения, как в прошлом алгол66 например, но для серьезных вещей, непригоден.

Ада или даже PHP
Ада жеско стандартизирован (из-за спицифики применения), через это везде будет одинаково. PHP кроссплатформенен изначально, ктомуже это всетаки интерпретируемый, а не компилируемый язык, через это, опятьже, код везде идентичен.

ну и понять где заканчивается язык и начинается API OS.
С точки зрения языка высокого уровня, этим вопросом замарачивается побьольшей части компилятор, при использовании внешних библиотек, программист, но там API не системы, а библиотек, что есть немного другое. А вот если писать на низком уровне, то там да, сплошное API.
Mozepiy
Паскаль хорош для начального обучения, как в прошлом алгол66 например, но для серьезных вещей, непригоден.
Не слушайте больше эти сказки.
Точно также пригоден, как и любой другой универсальный язык. Вопрос лишь традиций и имеющихся компиляторов, если говорить о прикладном сколь угодно серьёзном применении.

С точки зрения языка высокого уровня, этим вопросом замарачивается побьольшей части компилятор, при использовании внешних библиотек, программист, но там API не системы, а библиотек, что есть немного другое.
Тогда расскажите как через API библиотек C написать неконсольную программу под Windows. Ну или для Linux чуть больше, чем консольную.
KSergey
Не слушайте больше эти сказки.
Увы, это не сказки, самолично отработал продолжительное время системным программистом, поэтому сужу нетолько со стороны прикладного программирования.

Тогда расскажите как через API библиотек C написать неконсольную программу
Слова MFC, Qt вам очемнить говорят ?
Mozepiy
Слова MFC, Qt вам очемнить говорят ?
А вам отсутствие плюсиков после С?

Ну и я правильно понимаю, что MFC имеет какое-то отношение к языку?
KSergey
А вам отсутствие плюсиков после С?
Не читайте наночь труды дохлой курицы, тогда не будет путанницы в голове с этими плюсиками, ПОП программирование уже давно неиспользуется, его заменил ООП, плотно, за исключением спецефичных задачь.

Ну и я правильно понимаю, что MFC имеет какое-то отношение к языку?
Ваш вопрос звучал так:
Тогда расскажите как через API библиотек C написать неконсольную программу под Windows.
Ответ был дан, даже два ответа.
Mozepiy
Ответ был дан, даже два ответа.
Оба неправильные.
Ибо "язык С" - это не то, что вам хочется, границы совершенно четко определены стандартном.
Равно как и "язык С++".
Так что аккуратнее, пожалуйста, с границами и терминами.

С пламенным приветом!
KSergey
Так что аккуратнее, пожалуйста, с границами и терминами.
С программированием и языком C/C++, в часности, вы знакомы поверхностно, как я посмотрю. Ибо:
1. С++ код может использовать код С-библиотек.
2. С код может использовать С++ библиотеку, если в С++ - ной библиотеке есть интерфейсы (API) на чистом С.
3. Если такого API нет, можно сделать самому маленькую обертку ака враппер, сессно на C++.

НЕпрощаюсь =)
Mozepiy
И?

А про си, тем более с плюсами - да, вы правы. Не видел уже лет 10. Сугубо теоретизирую. Да и вообще никогда не писал на них ничего кроме хелоу ворд на спектруме.
Вам ведь так будет спокойнее? ну и славно.
craxx
Почему это? Повысить квалификацию можно и дома за книжками/инетом.
Это хорошо, если бы эти книжки, еще можно было бы купить по честному, а не заплатив потом ждать месяцами когда "Книжка из москвы придет..."
Благо еще хоть в инете есть варианты и достойные продавцы, в отличии от индивидуалов... :beee:
Mozepiy
1. С++ код может использовать код С-библиотек.
2. С код может использовать С++ библиотеку, если в С++ - ной библиотеке есть интерфейсы (API) на чистом С.
3. Если такого API нет, можно сделать самому маленькую обертку ака враппер, сессно на C++.

НЕпрощаюсь =)
Если на то пошло, то из C можно поставить вызывалку программы на любом другом языке. После этого можно величать данное решение, как "программа написанная на C":улыб:
Mozepiy
Ужасно. Вам про фому, а вы про ерему. И уровень аргументации (это я в целом про тред, а не про данное сообщение).
KSergey
Тогда расскажите как через API библиотек C написать неконсольную программу под Windows.
Конечно, несколько сложнее чем консольную, но тоже без особых проблем. Подробно описано, например, у Петзолда.

Показать спойлер

// Win32API Hello World!
#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstanse, LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wc = {
CS_VREDRAW | CS_HREDRAW,
WindowProc, 0, 0, hInstance,
LoadIcon (NULL, IDI_APPLICATION),
LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL, "HelloWorldApp"
};

RegisterClass(&wc);

hWnd = CreateWindow("HelloWorldApp",
"Hello World",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT r;
switch(uMsg)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &r);
DrawText(hdc, "Hello World!", -1, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,uMsg, wParam, lParam);
}
Показать спойлер
SergeiCh
Еще один.
Чисто для справки: для программ, использующих исключительно библиотеки языка С, подключение #include <windows.h> не требуется.
Так понятно?
KSergey
#include - это всего лишь директива препроцессора, к библиотекам имеющая довольно косвенное отношение. Но специально для Вас - из уважения - можно и без #include <windows.h>.


int __stdcall MessageBoxA(void* hWnd, char *lpText, char *lpCaption, unsigned int uType);

int __stdcall WinMain(void* hInstance, void* hPrevInstanse, char *lpCmdLine, int nCmdShow)
{
return MessageBoxA(0, "Hello World!", "Message", 0x40);
}


Что есть "библиотека языка С"? Вы когда Hello World писали, кстати, #include не использовали? Ну и чтобы знать, Xlib - это библиотека языка С?

Выше было про API - это по определению вызов каких-то сторонних функций. Тот же MessageBox - это функция операционной системы, ее код уже находится в компьютере, работающем под Windows, независимо от того, установлен компилятор С с его и не его библиотеками или нет. Вызывать эти функции можно хоть из программы, написанной на ассемблере в debug, если Вы в курсе. Достаточно знать аргументы функции и точку входа.
SergeiCh
Вы разницу между
#include <windows.h>
и
#include <stdio.h>
понимаете?

Выше было про API
Я не знаю о каком именно "выше" вы говорите, но я специально "про API" нигде не писал (во всяком случае очень старался), везде писал только про "API ОС".
Или это снова не важные буквы, как и плюсики для кого-то? декоративно-оформительский элемент, ага.
KSergey
Вы разницу между
#include <windows.h>
и
#include <stdio.h>
понимаете?
Ну да, в одном случае подключается заголовочный файл windows.h, а в другом stdio.h. В одном одни прототипы функций и константы, в другом - другие. И что? К чему Вы клоните? С точки зрения компилятора они равноценны и обрабатываются одинаково. А в предыдущем посте я Вам вообще без #include пример привел.

Я не знаю о каком именно "выше" вы говорите,
Мне не сложно привести цитату:
Тогда расскажите как через API библиотек C написать неконсольную программу под Windows.
Я тут нигде букв "ОС" не вижу, хотя это и не принципиально.
но я специально "про API" нигде не писал (во всяком случае очень старался), везде писал только про "API ОС".
Чем Вам MessageBox не интерфейс ОС? Хотя тут вообще не понятно, что Вы называете "API библиотек С". Может быть, по-Вашему, API ОС - это printf? Повторюсь, не важно ОС это или что-то еще, API - механизм взаимодействия с внешним объектом. Стандартные функции, IMHO, называть API будет некорректно.

Мне вот еще что интересно: может ли библиотека, написанная на языке С для использования в программах, пишущихся на языке С (та же Xlib), называться библиотекой языка С? Хотелось бы особенно отменить, что стандартная библиотека С и просто библиотека С - это, как мне кажется, все-таки разные вещи.
SergeiCh
> Тогда расскажите как через API библиотек C написать неконсольную программу под Windows.
Я тут нигде букв "ОС" не вижу, хотя это и не принципиально.
Правильно, в этом месте их и нет.

Речь, напомню, про то, что надо четко отделять собственно язык от API ОС, в которой он используется.
Без этого возникают странные и ложные утверждения по поводу того, что на каком-то языке под какой-то ОС программировать проще, чем на том же языке под другой ОС, хотя к языку это не имеет никакого отношения. Ну и далее все пошло в кучу, понятно.
KSergey
надо четко отделять собственно язык от API ОС, в которой он используется.
Я с этим и не спорю. Сюда еще нужно добавить субъективные предпочтения, обусловленные предыдущим опытом.

Не понятно, причем тут приложения под X или Windows. Что Вы хотели узнать из особенностей их написания? Элементарное Hello World и там, и тут по структуре очень похожи и пишутся на чистом С совершенно без проблем, в первом случае с использованием Xlib, которую я не считаю "библиотекой не языка С", а во втором - Win32 API (практически можно сказать нативный С-шный интерфейс, хотя с XP, если не ошибаюсь, появился GDI+, что уже С++). Другое дело что реальные программы так никто уже не пишет. Но аналогично и от консольного "Hello World" народному хозяйству польза - нулевая. Оно исключительно для образования.
SergeiCh
Не понятно, причем тут приложения под X или Windows. Что Вы хотели узнать из особенностей их написания?
Нет нет, я ничего не хотел узнать.
Мне хелоу ворд на спектруме вполне хватило, больше я ничего не программирую.
Anomander
Если на то пошло, то из C можно поставить вызывалку программы на любом другом языке.
Я правильно понимаю, что после этого программа перестанет быть написанна на С ?
ТикТак
Ужасно. Вам про фому, а вы про ерему.
Вы я вижу тоже, к программированию, имеете весьма посредственное отношение.
Mozepiy
А вы хоть к чему-то имеете посредственное отношение? Помнится, вы и хакером "широко известным в узких местах" были, и антенны спутниковые Manul'а учили ставить, и провайдеры вас зовут наперебой, и веб-движки пишете.
ТикТак
А вы хоть к чему-то имеете посредственное отношение?
Много кчему. Касаемо этой ветки, уже писал выше, повторять не буду.

Помнится, вы и хакером "широко известным в узких местах" были
Это ваши домыслы, я всеголиш указал, что тот метод защиты легко обходится.

и антенны спутниковые Manul'а учили ставить
Опять домыслы, говорил об успешном опыте ловли спутника, если мне неизменяет мой склероз, на 36ом градусе в нашей местности.

провайдеры вас зовут наперебой, и веб-движки пишете.
По этим пунктам вы меня скемто путаете.

Ну и судя по вашим постам, ваша цель исключительно пофлудить, полезностей от вас, я видел ровно один раз, все остально время какието неумелые попытки троллинга.
Mozepiy
...
...
...
...
Вы еще больше разделите мое сообщение. И пишите ответ на каждое слово. А там, глядишь, и ошибки найдутся - всегда есть к чему привязаться. Всегда в плюсе!