Здравствуйте. Хочу начать изучать программирование, только вот не знаю с чего начать. С какакого языка, или до изучения языка ещё чтото надо изучить. Очень прошу помочь.
Начинать нужно с HelloWorld - первого приложения. Углубляться в томы можно, но для новичка - это смерть http://www.google.ru/search?hl=ru&q=helloworld+asm&btnG=Поиск+в+Google&lr=&aq=f&oq=
Уже несколько раз обсуждалось. Моё ИМХО -- Паскаль (хоть Турбо, хоть Дельфи, однако в последнем случае -- не "формошлёпство", как его называют, а программирование консольных приложений). Хотя программирование на самом деле -- это на 95% умение превращать задачу (идею, замысел и т.д. и т.п.) в алгоритм и в структуры данных и лишь на 5% -- владение одним или несколькими языками программирования.
Парень, не Паскаль. Я сам с него начинал. Потом С, теперь до ассемблера добрался. Лучше бы я этот паскаль не изучал никогда. Просто я всерьёз полагал, что типизирование данных нужно для того, чтобы нельзя было возвести букву в квадратный корень... Блин, меня на Сишном форуме просвятили для чего нужны типы- просто для экономии места, я с неделю эту информацию переосмысливал. Вообще, хорошо кто-то сказал- Паскаль создан для учёбы, а С для работы. Если всё шито-крыто, железо нормальное, с кодировками порядок, кракозябров нигде не появляется, можно и паскаль. Только Бог его знает, что завтра будет, надоест тебе эта Windows с её навязчивым и никому не нужным сервисом, захочешь ты перейти на ОС Linux- вот тут-то тебе С и пригодится, ибо это язык родной для Linuxа. А там без программировни делать нечего. Просто рано или поздно все понимают, что не нужно 10 браузеров и не нужно 10 музыкальных проигрывателей и не нужно 10 текстовых редакторов, а нужно всё по одному, но такие, какие тебе нужны. Это автоматом значит Linux. А Linux автоматом значит С. Такой вот аргумент.
+1 к тому что учиться программировать надо на нормальных человекоподобных языках - в то числе и на паскале. Вообще стоит отделить изучение алгоритмов и структур от их реализации на конкретном ЯП. А паскаль гораздо лучше подходит для описания алгоритмов, чем Си.
amvoz Может тебе стоит сначала научиться программировать MessageBox, а потом уже рассуждать о языках программирования? жжош )) Ну покажи мне на линуксе аналоги OllyDbg, Syser, Visual Studio, Delphi и т.д. Там и на ассемблере толком не программируют... Какие громкие слова... Лучше бы ты изучил что-то одно, но нормально.
Сравнение языка С с тем же паскалем напоминает мне сравнение автомата Калашникова с не помню чем, каким-то американским. Второй, конечно побаще был. Он и поизящнее и полегче и поудобнее. В идеальных условиях. А автомат Калашникова одинаково среден в любых условиях, хоть в пустыне, хоть на севере. Вот так-то.
Суть моих высказываний- я сравнил 2 языка (2, заметь) по определённым критериям. Паскаль и С. И представляешь, не пойму хоть убей- у меня, что, мнение о них изменится, научись я программировать MessageBoX? Её ты приплёл ни к селу ни к городу. И "рассуждать о языках программирования" понятие настолько расплывчатое, что может значить всё, что угодно а потому нет необходимости отвечать за свои слова. Говори конкретнее, будь мужчиной.
Нет, не жгу. Зачем в языке С тип char, ответь? Чтобы выделить (сейчас к словам придерётся) место для небольших чисел в диапазоне от -127 до 128. (Или от 0 до 255) А не объявлять их как тип int, значения которого занимают больше места. Вот ты умный, скажи ещё зачем есть два типа? Оставили бы один int и дело с концом. А затем, что место экономить надо.
Да, я с тобой согласен и что? Ты это зачем сказал? Почему я должен гадать? Или что- Linux хуже, коль скоро мы не можем запустить в нём перечисленные тобой программы (я гадаю, мне ничего неостаётся, ты неконкретно говоришь, дабы не отвечать за свои слова). Ну, так если так, то ну и ладненько. Преимущества Linux (к коему отношусь очень критично) я тебе расписывать не буду, оставайся при своём мнении. ...Хе, да зачем там аналоги отладчиков, если Linux- операционка с открытым исходным кодом? Эх ты, дерёвня... Да, там ещё игрушек всяких нет...
amvoz Название само за себя говорит, чтобы хранить символ. Для чего куча типов для указания строк нужна ? PSTR, PCHAR, PWSTR... чтобы понятно было что за строка, я множество типов в масме юзаю, только для того, чтобы понятно было, нормальный кодер запишет ULONG вместо DWORD, если нужно число хранить например.
И опять ничего не значащая фраза- поробуй подкопайся... Это как в "12-ти стулях"- помогал детям и ладно. Так же и здесь. Лучше одно, но нормально... Мда.
Изучать надо Си. Пригодится. amvoz Это не экономия. Для обращения к байту требуется считать его в 32 или 64 битный регистр. А это требует обнулении старшей части или заполнения еденицами для чисел со знаками. Команда по любому будет длинее и таких команд явно больше 1. Так что место не экономиться, а скорость при этом между прочим падает. Другое дело что Byte позволяет скрыть все эти приобрезования которые выполняются при чтении и записи.
...Парень, давай зря не спорить. Передо мной книга Кернигана и Ритчи- авторов С. Читаем "2.2 char- один байт, содержащий один символ из локального симольного набора" Казаось бы, я повержен, но "2.7 Переменные типа char это короткие целые числа, поэтому их можно свободно использовать в арифметических выражениях" Что ещё? Но даже если бы этого указания не было, обратимся к практике. В программе *.c объявим char x= 12; И всё проёдёт на ура. Так что для чисел создан char. (В первую, конечно очередь). Иименно, чтобы место экономить, чтобы не объявлять int x= 12; Хотя мы оба понимаем, что часто такая экономия несущественна. Часто, но не всегда.
Просто тип явно размер не определяет, он в первую очередь смысловую нагрузку несёт. Пример на пальцах с темже CHAR. Имя секции в заголовке 8 байт(IMAGE_SECTION_HEADER.Name). amvoz как на это имя ссылаться ? PLARGE_INTEGER , точно не то, хотя размер подходит. PSTR - и это не то, строка то есть, но нуля в конце нет. Поэтому PCHAR.
Слушай, я не силён в том, что происходит после обращения к байту. Но для переменной типа char резервируется столько-то мета, а для переменной типа int в 2 раза больше. После обраения к ним- не спорю, там твоя стезя. Но до обращения-то есть экономия?
Обьясню иначе. Вот прототип сервиса: ZwOpenProcess proto stdcall WORD, WORD, WORD, WORD Размер каждого параметра 4 байта, но что каким параметром передать ? ZwOpenProcess( OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId OPTIONAL ); Так понятно. Если без типов писать, то я завтра наверно и не вспомнил параметры функций, которые написал сегодня..