| |||||||
Программирование Создание, разработка и доработка различных игр и программного обеспечения |
|
|
Опции темы |
02.10.2010, 15:11 | #1 | ||
Игроман
Регистрация: 13.07.2007
Адрес: Сімферополь
Сообщений: 3,012
Репутация: 629
|
Общие вопросы по программированию
Однако не забывайте, что здесь также действуют правила форума и раздела Soft & OS, флуд и оффтоп — наказуемы. Также следует помнить, что писать вам программы целиком никто не будет, однако мы всегда рады помочь вам понять, что же именно не так, и как это можно сделать. Существующие темы по языкам: Желаем вам приятного общения и компилируемости ваших программ
|
||
|
09.01.2015, 06:05 | #2 | ||
Гейммастер
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,712
Репутация: 1136
|
Вроде сюда: как через батник вывести в буфер обмена список всех файлов в папке и подпапках? Только имя файла и расширение.
|
||
|
10.01.2015, 12:10 | #3 | ||
Гейммастер
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,712
Репутация: 1136
|
Через dir такое можно сделать?
|
||
|
10.01.2015, 23:04 | #4 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
10.01.2015, 23:47 | #5 | ||
Гейммастер
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,712
Репутация: 1136
|
[CCCP] Monster, мне надо получить ТОЛЬКО имена файлов. Тут надо как-то по-другому делать. Нет у dir такого атрибута.
|
||
|
11.04.2015, 22:52 | #6 | ||
Гейммастер
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,712
Репутация: 1136
|
Цитата:
|
||
|
23.06.2015, 05:06 | #7 | ||
Игрок
Регистрация: 06.03.2007
Адрес: Киев
Сообщений: 712
Репутация: 384
|
Мой вопрос относится к вещам очевидным и фундаментальным, но я все никак не могу этого понять - ведь все как будто по умолчанию это знают, и даже не написано об этом нигде. Где вообще проходит грань между различными языками программирования? На мой примитивный взгляд, php - это то, что запускается в браузере, всякие там "c" - это то, что запускается через exeшники. Но насколько я знаю, и php-скрипт можно запустить через exe при желании. В какой момент времени написанный в блокноте текст со скриптом превращается в паскальный, phpшный или c-шный? Ведь общая знаково-логическая система там с виду одинаковая.
Далее. Чем вообще языки программирования отличаются с точки зрения компьютера? Вот есть, допустим, программа, написанная на C, и есть - написанная на паскале. Оба запускаются через exe. Видимо, в самих скриптах указано, на каком языке они написаны. То есть, в самом компьютере (в ОС) уже предустановлены эти языки, и он ориентируется на то, к какой логической базе данных обращаться при запуске приложения? Если, например, скрипт, написанный на современном языке программирования, запустить на старой ОС - он не будет работать (даже если это какой-то совсем простой скрипт)? А если не указать в скрипте, какой это язык - как компьютер будет его воспринимать? Короче, чем для компьютера будут отличаться эти два exeшника, если компьютер не понимает, что такое паскаль, а что такое С, и для него обе программы просто разными путями обращаются к его ресурсам и разными командами запускают обработку данных? То есть, если в современных операционных системах уже предустановлена какая-то логическая система восприятия данных (или же она содержится сразу в компьютерах?) - то зачем вообще нужны разные языки? Почему не объединить все те языки, которые используются, в один общий, через который уже будут при необходимости обрабатываться необходимые данные? В общем, мне нужна фундаментальная информация о том, как из средства для обработки нулей и единиц возникает система, которая способна отличать паскаль от яваскрипта. Буду благодарен за подробный ответ.
__________________
If you ever had any problems or worries regarding your penis size, we got two words for you IT'S OVER. We GUARANTEE that you will get an increase in your penis size within 3 months. It is our goal to provide you with the absolute best penis enhancement product that actually delivers on its promise. Последний раз редактировалось Kиpa; 23.06.2015 в 05:10. |
||
|
23.06.2015, 08:54 | #8 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Если говорить про грань между языками программирования, то она проходит там же, где грань между Пушкиным и Пелевиным. Вроде, буквы одни и те же, но вот результат - разный. Как минимум, у разных языков программирования разный синтаксис (что это такое - должны учить в школе на уроках русского языка). Кроме того, есть понятие парадигмы программирования: сейчас самые известные и часто используемые яызки объектно-ориентированные, но это не значит, что других не существует. Дальнейший вопрос показывает, что Вы и не пытались запустить программу на C, написанную в блокноте. Попробуйте переименовать txt-файл в exe, и ясно увидите, что никакое волшебство тех в программу не превратит Ах, Вы написали "скрипт" - но это в корне неверно, ведь скрипт - это (обычно) то, что выполняется неким интерпретатором, а C и Паскаль всё-таки компилируемые языки. Итак, Вы написали в блокноте программу на C++. Как уже говорилось, простое переименование в экзешник ее не запустит - как раз потому, что в системе нет никаких предустановленных языков программирования (впрочем, в современных оперционках - есть, но пока речь о базовых принципах). Компьютер сам по себе работает только с программами, написаными только на одном языке - в машинных кодах (т.н. native-код). Чтобы превратить программу из текста в этот код, и существуют компиляторы. Вы берете компилятор C++ или Паскаля, даете ему на вход программу на соответствующем языке - и на выходе получаете тот самый экзешник с native-кодом. Естественно, компилятор C++ кода на Паскале не поймёт, как и наоборот - в этом этапе и заключается волшебный момент перехода от текстового файла с одинаковыми символами к программе на определенном языке программирования. Надеюсь, понятно, что говорить о том, что программы на разных языках запускаются через один exe - не верно. Хотя в современном мире всё не так просто. Помимо компилируемых в native-код, существуют ещё интерпретируемые языки программирования, в частности - как раз для написания скриптов (впрочем, грань между "скриптом" и "полноценной программой" размыта. В этом случае - да, в системе должен быть установлена программа под названием "интерпретатор", которая и будет выполнять код "на лету", без компиляции. Так работает, например, JavaScript, исполняемый (обычно) браузерами. Это не значит, что интерпретируемый язык нельзя скомпилировать в exe, но обычно полученный таким образом код будет содержать ссылку на интерпретатор и без его установки всё равно запуститься не сможет. Впрочем, и компилируемые программы сейчас зависят от тонн библиотек, без которых они работать не смогут. Вот так всё сложно. Наконец, есть и промежуточный класс - языки, которые компилируются не в native-код, а в байт-код. Самые известные - Java все языки платформы .NET. В таком случае обычно говорят не о конкретных языках, а именно о платформе, поскольку языки компилируются в некий более простой - но всё равно не машинный - код, который при исполнении интерпретируется. Преимущества и недостатки всех подходов предлагаю гуглить или смотреть википедию. Вопрос "зачем нужны все языки" похож на вопрос "зачем нужны разные операционные системы", да и вообще "зачем нужно разное что-то там". Разные языки предназначены для разных целей, на одних удобнее и эффективнее выполнять одни задачи, на других - другие. Плюс никто не отменял эволюции, языки эволюционируют от простых "приятностей" над машинным кодом (ассемблер) до мощнейших платформ, которые делают за программиста 99% рутинной работы. Цитата:
Надеюсь, общая схема понятна, дальше - гугл.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
|
23.06.2015, 09:32 | #9 | ||
Игрок
Регистрация: 06.03.2007
Адрес: Киев
Сообщений: 712
Репутация: 384
|
pokibor, ясно, то есть, язык программирования имеет значение только до компиляции, а после нее для компьютера нет никакой разницы между калькулятором, написанном на паскале и на c++, если их стремились сделать максимально одинаковыми, потому как они будут обращаться примерно к одним и тем же процессам и ресурсам.
В том то и дело, что это нигде явно не объясняется, хотя с этого, казалось бы, следует начинать. Если взять учебник по любому языку программирования - то там с самой первой главы будут описываться особенности этого языка, его преимущества над другими, функции и архитектура, но сам основной принцип работы языка внутри компьютера - нет. Я уверен, в мире есть очень много "программистов" (возможно даже, вполне высокооплачиваемых), которые не знают того, что вы описали и для них php - это то, что в браузере, а c++ - это то, что в exeшниках, при том что внутри самого кода они ориентируются хорошо.
__________________
If you ever had any problems or worries regarding your penis size, we got two words for you IT'S OVER. We GUARANTEE that you will get an increase in your penis size within 3 months. It is our goal to provide you with the absolute best penis enhancement product that actually delivers on its promise. |
||
|
23.06.2015, 16:36 | #10 | ||
Опытный игрок
Регистрация: 27.03.2007
Сообщений: 1,793
Репутация: 380
|
Kиpa,
Цитата:
По сути единственный принцип языка высокого уровня - это снять с программиста задачу управления ресурсами. То есть дать ему возможность описать что делать, но не как делать Программирование - это такая штука, которую изучать следует с самых азов. Двоичное исчисление, двоичная логика, простые алгоритмы обработрки данных. И вот так постепенно переходить к более продвинутым вещам. В общих чертах могу сказать, что ни один из твоих вопросов не является корректным. В том плане, что ни один ответ на этот вопрос не прояснит саму суть процесса |
||
|
23.06.2015, 17:31 | #11 | ||||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Это как раз то, что SLS_Cross назвал "снять с программиста задачу управления ресурсами", только он сказал не совсем корректно - реализуется она не языками высокого уровня как таковыми, а библиотеками. Досконально зная C++, но не зная WinAPI (или другого API для построения интерфейса, который, впрочем, всё равно будет на WinAPI базироваться), красивое приложение не напишешь (или напишешь, но поседеешь и тысячу раз изобретёшь велосипед в процессе). Из-за этого сейчас программисту нужно знать не только какой-нибудь язык программирования, но и определенный набор технологий и готовых API (которые, кстати, могут быть вполне универсальными, с интерфейсами под разные языки и даже платформы). Цитата:
Далее, какая разница, как язык работает внутри компьютера? Сейчас почти всё программирования, разве что кроме самых низкоуровневых драйверов, работает по принципу черного ящика: у нас есть определенный интерфейс, и мы знаем, что такой-то вход дает такой-то выход. Каким образом этот выход получается, нас мало интересует, главно что бы работало. Вот когда освоете язык и перед Вами встанут сложные задачи, связанные с оптимизацией, тогда и нужно выяснять, во что же оно там компилируется и как лучше построить код. В-общем, опять см. что написано выше про библиотеки. Цитата:
Вообще-то опять видно, что Вы только начинаете путь в программировании. Php - он не в браузере. Он работает на сервере. Конструкции языка обрабатываются интерпретатором на сервере, и на их основе генерируются обычные html-страницы, которые и отправляются в браузер. В браузере же "работает" не php, а JavaScript. Кстати, на php можно и самостоятельные графические приложения делать - эту возможность дают специальные пакеты. Цитата:
Операционная система же не обеспечивает трансляции в ассемблер (это задача компилятора), она дает определенный набор библиотек - то бишь сборников функций, обеспечивающих нужный уровень абстракции. То есть, если в компилируемом языке написано "x = 1 + 2", то сложение 1 и 2 в ассемблер (точнее, в машинный код; ассемблер - это всё-таки язык программирования, который тоже нуждается в компиляции, пусть и довольно примитивной) перекодирует всё-таки компилятор, и он же обеспечит передачу результата в область памяти, выделенную под переменную x. Операционка же даст точки входа в готовый код, который обеспечит интерфейс (будь то банальная консоль, окно или ещё что-нибудь), а также при запуске программы выделит ей какую-то область в памяти и позаботится об управлении различными потоками. Но что верно сказано - без операционки современные программы работать в принципе не могут, просто потому что для этого им пришлось бы самим разбиратьтся, какие сигналы послать монитору, чтобы вывести что-то на экран, и как набор двоичных чисел, передаваемый с клавиатуры, превратить в нажатые пользователем клавиши. Поэтому одна из задач современных компиляторов - это подсунуть в нужные места кода вызов соответствующих функций из библиотек целевой операционной системы, а непосредственным общением с клавиатурой и монитором занимаются уже это функции.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось pokibor; 23.06.2015 в 17:55. |
||||
|
23.06.2015, 17:52 | #12 | ||
Игроман
Регистрация: 29.11.2009
Сообщений: 3,970
Репутация: 390
|
Цитата:
__________________
/watch?v=5ToxRG4isxk |
||
|
23.06.2015, 19:04 | #13 | ||
Опытный игрок
Регистрация: 27.03.2007
Сообщений: 1,793
Репутация: 380
|
pokibor, компилятор же отвечает за "сборку" исходных кодов в готовое ПО. Т.е. в процессе работы приложения компилятор уже не используется.
И если говорить о разгрузке программиста, то я все корректно описал. На С++ тебе не надо думать - в какую ячейку памяти какая переменная будет записана. Ты думаешь только о самом факте существования переменных. Библиотеки же позволяют нам не тратить время на неспецифический функционал, т.е. в общем случае на GUI, способ соединения с базой данных и прочие стандартные вещи |
||
|
23.06.2015, 20:19 | #14 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Чтобы понять это, задайтесь вопросом, почему Wine расшифровывается как "Wine Is Not an Emulator" - именно потому, что Wine является не эмулятором, а альтернативной реализацией WinAPI. Результат описали корректно, но объяснили его не совсем корректно. Дело в том, что язык != библиотеки. Одни и те же библиотеки могут использоваться разными языками, пусть и через некоторые шлюзы. Цитата:
Лучше подставьте вместо C++ C#, яву или любой другой язык со сборщиком мусора (хотя, конечно, реализации сборщиков есть и для C, и для C++).
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
|
24.06.2015, 19:15 | #15 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
Для C++ есть RAII и std::shared_ptr, которые полностью решают вопрос контроля за ресурсами, причем не только памяти, но и за любым ресурсом, нуждающимся в освобождении/закрытии (сокеты, файлы, пайпы, что угодно еще). А еще там есть реализации lock-free контейнеров, которые радикально (раз этак в 10) ускоряют некоторые подходы к разделению данных в многопоточных средах. А можно еще и совместить оба подхода и получить указатели, которые можно трогать из нескольких потоков, и который умрет только когда последний поток перестанет с ним работать.
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
25.06.2015, 12:08 | #16 | ||
Опытный игрок
Регистрация: 27.03.2007
Сообщений: 1,793
Репутация: 380
|
pokibor, никогда на С++ не занимался распределением ресурсов. Присутствие возможности не означает, что ты обязан этим заниматься. В подавляющем большинстве случаев, особенно на этапе обучения, это вообще не актуально. Кончились времена, когда у ПК было 640 Кб оперативки и надо было заморачиваться с ее распределением. Откровенно говоря, мне С++ всегда больше джавы нравился. Только вот не очень люблю программировать и занимаюсь этим лишь потому, что нужен рабочий опыт. Да и повсеместное распространение java - это своего рода бич современного программирования. Потому что любой нуб с чего-то решает, что java - "легкий" язык. Он легок для того, чтобы войти, но очень труден в освоении.
Да и сборщик мусора - одна из самых проблемных составляющих java. По умолчанию он туп, если речь идет о более-менее загруженном приложении Последний раз редактировалось SLS_Cross; 25.06.2015 в 12:13. |
||
|
25.06.2015, 17:20 | #17 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
SLS_Cross, хм, а если тебе надо загрузить из файла данные и преобразовать их в некую структуру данных, то как ты получаешь пространство для хранения этих данных?
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
25.06.2015, 17:56 | #18 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Я лично Яву ненавижу после того, как два года пришлось на ней кодить. И не знаю, кто там и почему её называет "лёгким языком". Так что если говорить про C-подобные языки со сборщиком мусора - то C# предпочтительней (опять же, как язык, не надо говорить про кроссплатформенность и .NET). Что же касается сборщика мусора, то это хорошая вещь, если правильно ей пользоваться, пусть в .NET он тоже не особо собразителен. В то же время, любой желающий стать нормальным программистом должен освоить язык без этой приятной примочки, чтобы иметь представление об оптимизации и ручном распределении памяти. В целом, если вести речь об освоении программирования, то уж точно не Яву я бы посоветовал, а C# либо C++. Лучше, конечно, C++, но C# осваивать проще и приятнее. Жаль, что нет его нормальных реализаций за гранью Мелкософта и .NET...
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось pokibor; 25.06.2015 в 18:04. |
||
|
25.06.2015, 18:51 | #19 | ||
Опытный игрок
Регистрация: 27.03.2007
Сообщений: 1,793
Репутация: 380
|
pokibor, так с new, массивы и списки - это базовые вещи, которые каждый должен знать. Тем не менее, ты просто следишь за состояние объекта, а не "управляешь" памятью, как в асме. Тебе не надо говорить - в какую ячейку и что запихивать. Возможно, я не совсем верно воспринял твои слова.
Я начал с Borland C++, а потом мне как-то Qt по душе пришелся. В последствии пересел на Java и очень сильно пожалел. Иногда подумываю вернуться к С++ и продолжить его изучение. |
||
|
21.09.2015, 00:09 | #20 | ||
Мудрец
Регистрация: 12.05.2007
Адрес: ^______^
Сообщений: 380
Репутация: 469
|
помогите нубу. Задали задачку не по специальности. Как поменять надпись выделенную на другую. С помощью Php или java? желательно очень подробно, с меня плюшки. Кто поможет кину на мобильник денежку.
Скрытый текст:
__________________
"Чем умнее человек, тем больше своеобразия находит он во всяком, с кем общается. Для человека заурядного все люди на одно лицо"....(Блез Паскаль). Music is a part of my life… Big part… ╔══╗♫ ║██║ ║(О)║ ╚══╝ http://rateyourmusic.com/~Tayler |
||
|
|