Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Курсач по системному программированию...


Автор: Нурик Сакура 20.11.2007, 17:43
У меня в след. семестре курсач по системному программированию. Подскажите какие-то темы, которые под него подпадали бы, плз. Хотя бы пару штук. Мне тут уже один знакомый препод сказал, что можно сделать текстовый редактор с разбором синтаксиса, еще я подумал, что можно сделать небольшой скриптовый язык.. У кого еще какие есть идеи?

Самое главное, чтобы все это дело потом можно было написать без особых осложнений на С/С++ или на JAVA. Других языков, увы, не знаю.

П.С.: Извиняюсь, если не в тот раздел, просто не знал, куда еще его запостить, чтобы было тематично...

Автор: bsa 20.11.2007, 17:52
вообще-то темы "написание редактора" и "написание скриптового языка" к системному программированию отношения не имеют никакого. Вот если бы ты драйвера писал или сервисы (типа файрвола), это да.

Автор: Flashdown 20.11.2007, 21:15
мы на системном программировании проходили всякие семафоры, ключи, разд. память, очереди сообщений, сигналы, порождение процессов, каналы, сокеты и т.п.... 

Автор: bsa 20.11.2007, 21:18
Цитата(Flashdown @ 20.11.2007,  21:15)
мы на системном программировании проходили всякие семафоры, ключи, разд. память, очереди сообщений, сигналы, порождение процессов, каналы, сокеты и т.п....

Но не редакторы же с подсветкой синтаксиса!!!

Автор: jonie 20.11.2007, 22:04
bsa ну редактор с подсветкой синтаксиса (ядро разбора синтаксическое в драйвере)  8)
я так понимаю у них курс системное программирование == C\C++
ну вроде как не веб (html,xml, http etc.) значит системное)
а вот исхо семафоры, процессы и т.п. -- это распределенная обработка информации курс.
каналы сокеты - сетевое программирование...
---------------
собственно ждем ответа автора что у них "есть"

Автор: MAKCim 20.11.2007, 22:18
Нурик Сакура
во первых, под какую ОС хочешь писать?
если Linux, могу посоветовать сделать отладчик
реализуется легко посредством ptrace() и тема самая что ни на есть системная
если Windows, попробуй реализовать драйвер поддержки reiserFS
хорошее дело сделаешь  smile  smile

Добавлено через 2 минуты и 56 секунд
jonie
я считаю так: если при разработке напрямую используется API системы, приложение можно считать системным

Автор: Нурик Сакура 20.11.2007, 22:28
У нас системное программирование - это Asm. Пока что. Но, препод сказал, что курсовую можно писать на любом языке, который знаем. Вот, а я как раз изучаю C/C++... Насчет "семафоров, ключи, сигналы" - это больше подошло бы к курсу "Программирование на языке ASM", но не к системному программированию.

jonie примерно правильно сказал - разбор синтаксиса можно в дрова запихнуть, это и будет системным программингом. У нас вообще какие-то непонятки в универе с тем, что говорят и что на самом деле нужно. И никто не может ничего нормально обьяснить, поскольку каждый говорит что-то свое... Там, где я раньше учился, было все четко, потому я и обратился к вам за хелпом. Если то, что препод мне предложил писать не есть сист.программинг - лучше я выберу тему, которая полюбому сист.программинг, чтобы потом меньше было головной боли.

Да, чуть не забыл. OS WinXP, к сожалению, с Linuxом мое знакомство закончилось установкой и краткой настройкой его на практических занятиях в колледже.

Автор: MAKCim 20.11.2007, 22:33
Цитата(Нурик Сакура @  20.11.2007,  22:28 Найти цитируемый пост)
Насчет "семафоров, ключи, сигналы" - это больше подошло бы к курсу "Программирование на языке ASM", но не к системному программированию.

сигналы, семафоры и прочие подобные вещи никак не связаны с ассемблером
я бы даже сказал так: они связаны с ассемблером точно также, как и с С/С++
Цитата(Нурик Сакура @  20.11.2007,  22:28 Найти цитируемый пост)
jonie примерно правильно сказал - разбор синтаксиса можно в дрова запихнуть

вы хотели сказать DLL?  smile 
писать драйвер ядра для разбора синтаксиса это нечто  smile 

Автор: Нурик Сакура 20.11.2007, 22:46
Цитата(MAKCim @ 20.11.2007,  22:33)
сигналы, семафоры и прочие подобные вещи никак не связаны с ассемблером
я бы даже сказал так: они связаны с ассемблером точно также, как и с С/С++

вы хотели сказать DLL?  smile 
писать драйвер ядра для разбора синтаксиса это нечто  smile

Вы меня абсолютно правильно поняли =) Один написал неточно, а я подхватил как попугай ^__^
Насчет семафоров и прочей гадости, то с Асмом они у меня ассоциируются потому, что на них лучше всего учиться писать программы на Асме.. Те же цикли, те же проверки.. На С/С++ это все легко и просто, а на Асме небольшая лаба =)

Автор: MAKCim 20.11.2007, 22:55
Цитата(Нурик Сакура @  20.11.2007,  22:46 Найти цитируемый пост)
Насчет семафоров и прочей гадости, то с Асмом они у меня ассоциируются потому, что на них лучше всего учиться писать программы на Асме.. Те же цикли, те же проверки.. На С/С++ это все легко и просто, а на Асме небольшая лаба =)

не все так легко даже на С/С++...далеко не все (я не про циклы естсественно)  smile 
это раз
во-вторых, для обучения ассемблеру работа с семафорами и прочими вещами абсолютно не нужна
она будет только мешать ходу обучения

Автор: Нурик Сакура 21.11.2007, 00:14
Цитата(MAKCim @ 20.11.2007,  22:55)
Цитата(Нурик Сакура @  20.11.2007,  22:46 Найти цитируемый пост)
Насчет семафоров и прочей гадости, то с Асмом они у меня ассоциируются потому, что на них лучше всего учиться писать программы на Асме.. Те же цикли, те же проверки.. На С/С++ это все легко и просто, а на Асме небольшая лаба =)

не все так легко даже на С/С++...далеко не все (я не про циклы естсественно)  smile 
это раз
во-вторых, для обучения ассемблеру работа с семафорами и прочими вещами абсолютно не нужна
она будет только мешать ходу обучения

Ну, нам наш препод старый (вполне нормально знающий) давал в виде лаб чисто для практики сделать светофор. Естественно, на С/С++ такая лаба - фигня, но для нас написать ее в Асме было не такой простой задачей - трудно переходить с языка высокого уровня на язык низкого уровня. Но мы справились. Впрочем, это все оффтопик, не имеющий отношения к делу.

Итак, уточню немного просьбу: посоветуйте, пожалуйста, несколько тем для курсового проекта по системному программированию, которые было бы не очень трудно реализовать на С/С++. При этом мои знания в С/С++ пока на уровне "пару дней назад взял в руки книгу". Времени у меня много - полгода точно есть. Основы программирования знаю, ООП тоже, просто 3 года изучал PHP (правда, кое-кто не считает это языком программирования)..

Автор: bsa 21.11.2007, 00:18
Цитата(Нурик Сакура @ 21.11.2007,  00:14)
Ну, нам наш препод старый (вполне нормально знающий) давал в виде лаб чисто для практики сделать светофор.

 smile 

Вообще-то "семафор" - это не "двуглазый светофор". Это средство синхронизации многопоточных приложений.

Автор: Нурик Сакура 21.11.2007, 00:21
Цитата(bsa @ 21.11.2007,  00:18)
Цитата(Нурик Сакура @ 21.11.2007,  00:14)
Ну, нам наш препод старый (вполне нормально знающий) давал в виде лаб чисто для практики сделать светофор.

 smile 

Вообще-то "семафор" - это не "двуглазый светофор". Это средство синхронизации многопоточных приложений.

Эм.. тупняк.. Спасибо, что просветили.. Вот видите, я даже этого не знаю.. Пока что.. Так что мне еще учиццо и учиццо...

Автор: SaDFromSpb 21.11.2007, 01:13
Нурик Сакура, тебе нужно знания в порядок привести.
1) Си на данный момент является основным языком для системного программирования. (А уж точно не asm).
2) Драйвер - это низкоуровневая программа для обеспечения работы операционной системы с конкретным физическим устройством (хотя, бывают всякие экзотические случаи, когда создаются драйверы для эмуляции виртуальных устройств). Поэтому драйвер для разбора синтаксиса - звучит абсурдно.
Пусть меня поправят, если что...

И вообще, тормоши препода, по поводу конкретной задачи. Возлагать выбор самой учебной задачи на обучаемого как-то дюже непедагогично, ИМХО... 

Цитата(Нурик Сакура @  21.11.2007,  00:21 Найти цитируемый пост)
Так что мне еще учиццо и учиццо... 

Просто не нужно оперировать понятиями, в которых не разбираешься. Не уверен, что понимаешь, что такое "системное программирование" - прежде поищи его описание. Не знаешь, что такое драйвер - то же самое. Википедия тебе в помощь =)
По-больше своей головой думай, и не успеешь оглянуться, как будешь уже наученный =).

Автор: orthrus 21.11.2007, 06:06
Цитата(MAKCim @  20.11.2007,  22:18 Найти цитируемый пост)
попробуй реализовать драйвер поддержки reiserFS


Было бы очень хорошо smile Вот http://sourceforge.net/projects/rfsd/ даже можно было бы подчерпнуть чего нибудь.

Автор: nerezus 21.11.2007, 07:06
Написать сервер для, к примеру, FTP.

Автор: Dude03 21.11.2007, 11:21
На самом деле написание текстового редактора было бы сложной задачей(я имею в виду написание с нуля, без использования готового класса окон венды для редактирования текста smile ). Это было бы тоже системное программирование, потому что пришлось бы изучить функционирование графической подсистемы венды достаточно хорошо.

Автор: MAKCim 21.11.2007, 14:05
Цитата(Dude03 @  21.11.2007,  11:21 Найти цитируемый пост)
Это было бы тоже системное программирование, потому что пришлось бы изучить функционирование графической подсистемы венды достаточно хорошо. 

да, если использовать только API
Цитата(SaDFromSpb @  21.11.2007,  01:13 Найти цитируемый пост)
Драйвер - это низкоуровневая программа для обеспечения работы операционной системы с конкретным физическим устройством (хотя, бывают всякие экзотические случаи, когда создаются драйверы для эмуляции виртуальных устройств).

не обязательно
есть драйвера ФС, драйвера-фильтры, драйвера для поддержки возможностей CPU и т. д
по сути драйвер ядра - это любой код, который требует наивысшего уровня привилегий для своей работы

Автор: DjoNIK 21.11.2007, 15:24
Доброго времени суток!
Есть такая книжечка "Системное Програмное Обеспечение", в авторстве Молчанов А. Ю. (он у нас и ведет СПО  smile  ).
Суть этого труда - не "текстовый редактор", а основные понятия, необходимые для разработки интерпретатора или компилятора!
Вот какие лабы нам давались в течении семестра(что бы народ понял, что речь не "редакторе с подсветкой"):
1) Заполнение таблицы лексем (через хэш-коды, бинарные деревья и т.д.)
2) Написание лексического анализатора
3) Написание семантического анализатора
4) Генерация кода (в ассемблеры либо в объектный код)
5) Анализ распределения памяти (сколько памяти требуетяс выделить под данные/переменные программы) с учетом и без учета выравнивания машинного слова


ЗЫ: это раньше СПО включал в себя разработку драйверов, написание boot-секторов и тому подобное, но наше министерство образования решило разделить это на два премета: "Операционные системы" и, собственно "СПО"

Автор: Mayk 21.11.2007, 16:44
Как вариант, можешь написать что-то типа http://freshmeat.net/projects/dmalloc/'а --- либу для отловли утечек памяти. Вещь полезная. Правда, не очень оригинальная[в vs, например, есть встроенный детектор ликов]. 
Но если завраппить не только захват/освобождение памяти, но и всякие  CreateBitmap/DeleteObject, fopen/flocse и т.д., то будет не так уж плохо.



Автор: Нурик Сакура 21.11.2007, 17:16
SaDFromSpb, спасибо за советы. Учту. Я просто вчера был очень уставший и плохо работал моском, потому мог натупить много лишнего. Да и как-то раньше мне не приходилось столь близко сталкиваться с разработкой каких-либо програм, поскольку занимался в основном веб-программированием. Но сейчас немного поменялись приоритеты... Потому буду благодарен за исправление моих ошибок ^__^

DjoNIK, а нету ли этой книжечки в электронном варианте?

Хочу еще раз уточнить, чтобы быть полностью уверенным: написать интерпретатор простенького скриптового языка будет системным программированием или нет? Я просто случайно наткнулся на несколько статей вполне неплохих, кроме того, мне пообещали принести конспект страниц на 80 формата А4 по грамматикам...

Автор: Mayk 21.11.2007, 17:21
Цитата(Нурик Сакура @  21.11.2007,  21:16 Найти цитируемый пост)

Хочу еще раз уточнить, чтобы быть полностью уверенным: написать интерпретатор простенького скриптового языка будет системным программированием или нет?

Спроси препода. Может ему прокатит?

Цитата(Нурик Сакура @  21.11.2007,  21:16 Найти цитируемый пост)
Я просто случайно наткнулся на несколько статей вполне неплохих,

Слайды! Слайды! ссылки, ссылки.

Автор: Нурик Сакура 21.11.2007, 17:38
Mayk, по большей части там книжки, могу привести названия, так как я скачал, но не сохранил адресов.
А вообще, вот есть одна статейка чисто обзор скриптовых языков, их преимущества и недостатки и небольшой список:
http://www.script-coding.info/Browse.html
Есть еще статейка в несколько частей о написании интерпретатора:
http://www.gamedev.ru/articles/?id=70118 (часть первая)
http://www.gamedev.ru/articles/?id=70120 (часть вторая)
Вот есть там же две статьи:
http://www.gamedev.ru/articles/?id=70112 - Введение в LUA
и
http://www.gamedev.ru/articles/?id=70104 - Реализация скрипт движка.

Если погуглить еще и повычитывать, то можно найти намного больше.

Список книг:
Основы разработки трансляторов - А.И.Легалов
Конструирование компиляторов - из журнала „Communication of the АСМ", 11, N 3, 1968, 181
Системное программирование. Основы построения трансляторов - Р.И.Компаниец, Е.В.Маньков, Н.Е.Филатов
Формальные языки, грамматики и автоматы - В.С.Фомичев
Обратная польская нотация (постфиксная) - http://algolist.by.ru/syntax/opn.html

Автор: DjoNIK 24.11.2007, 02:45
Вот http://www.piter.com/book.phtml?978546900391

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)