A+ | A - | RESET
Fixed | Wide | Full | Reset

IU7 World

МГТУ им. Н.Э. Баумана | Кафедра ПО ЭВМ и ИТ

  Расширенный поиск
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Июль 16, 2018, 09:48:33

Войти
Автор Тема: Навыки_программирования  (Прочитано 11816 раз)
0 Пользователей и Гостей смотрят эту тему.
korson
Посетитель


Репутация: 0
Offline Offline

Сообщений: 2


Просмотр профиля Email
« : Июль 22, 2009, 02:23:13 »

Ребята с ИУ-7, привет! Улыбающийся

Давно знаком с вашим замечательным форумом! Эдак курса со второго, а то и раньше. На данный момент закончил 4й курс ФН2.

Написать меня подтолкнуло следующее. Хочу заработать навыки программирования. А именно. Есть такая лаборатория Graphics&Media lab http://graphics.cs.msu.ru/index.html.ru (лаборатория компьютерной графики и мультимедия). Так вот, люди занимаются DSP (Digital Signal Processing) в частности. Свои идеи реализуют ввиде программ, которые должны оформляться согласно требованиям (требования на сайте приводятся). Предвижу ваши возгласы, мол, сам давай обучайся, всеж есть. На это могу ответить, что в силу своей специфичности, хотя я и доучился до 5 курса, причём не с самыми плохими оценками (ну да не в них дело), но как-то осваивать программирование не выходит. Не понимаю чего не хватает... куда мне до всяких премудростей, азам бы обучиться.

Резюмирую вопросом: Посоветуйте, на какие курсы, читаемые Вам стоит походить (СPP/C/Java)? Приветствуется ли люлями такая наглость, как посещение студентом друго-го факультета Ваших лекций и семинаров?

Заранее благодарю за ответ!
Сообщить модератору   Записан
sv75
Старожил
******

Репутация: 51
Offline Offline

Сообщений: 1298


Просмотр профиля Email
« Ответ #1 : Июль 22, 2009, 03:25:17 »

Цитировать
Свои идеи реализуют ввиде программ, которые должны оформляться согласно требованиям (требования на сайте приводятся).

Неужто они для всех задач с плюсами мучаются?

Цитировать
Резюмирую вопросом: Посоветуйте, на какие курсы, читаемые Вам стоит походить (СPP/C/Java)?

Моё скромное мнение: это бессмысленая идея, по разным причинам. Лекции по Си... конспект их не впечатляющ, лучше читай Кернигана-Ритчи и Кернигана-Пайка. По Си представляют интерес лабы, задания и решения к ним -- см. в архиве. Навыки программирования у нас вырабатываются на первом-втором курсе большим количеством практики.

Цитировать
Приветствуется ли люлями такая наглость, как посещение студентом друго-го факультета Ваших лекций и семинаров?

Это в уставе МГТУ должно быть написано, возможно что там это и запрещено (в отличе от МГУ), но не уверен.
Сообщить модератору   Записан

все написанное выше является моим личным мнением
Flegmatic
Старожил
******

Репутация: 48
Offline Offline

Сообщений: 1332


Сонный программист

2141719
Просмотр профиля WWW Email
« Ответ #2 : Июль 22, 2009, 07:57:05 »

korson, и тебе привет!

Поддерживаю предыдущего оратора: на лекции ИУ7 ходить нет смысла. Во-первых, это пришлось бы делать, начиная с первого курса, так как последующие курсы опираются на предыдущие. А во-вторых, у нас нормальный языковый курс по сути один - язык C в исполнении Тассова. Но этот курс бесполезен без сопутствующих лаб, а на них уже вряд ли пустят.

В любом случае книжки читать придется. Ты только скажи, какой тебе язык нужен, тут тебе сразу накидают.
Сообщить модератору   Записан

Долгое время считалось, что бит неделим. Но советские учёные...<br>
<a href="http://interestingsoft.blogspot.com">Мой софтоблог</a>
sv75
Старожил
******

Репутация: 51
Offline Offline

Сообщений: 1298


Просмотр профиля Email
« Ответ #3 : Июль 22, 2009, 08:09:39 »

А во-вторых, у нас нормальный языковый курс по сути один - язык C в исполнении Тассова. Но этот курс бесполезен без сопутствующих лаб, а на них уже вряд ли пустят.

Осталось отметить, что (1) этого курса больше нет, уже года два или три и (2) есть мнение, что это был не очень хороший курс языка Си. Я сам лекций не видел, но говорят что там, например, на оператор goto наезжали (а как ещё делать try/finally культурно в Си?). Ну и мейкфайлами в пять строчек после этого курса можно пугать студентов.

Потом лучше не стало, но тем не менее. Улыбающийся
« Последнее редактирование: Июль 22, 2009, 08:16:12 от sv75 » Сообщить модератору   Записан

все написанное выше является моим личным мнением
sv75
Старожил
******

Репутация: 51
Offline Offline

Сообщений: 1298


Просмотр профиля Email
« Ответ #4 : Июль 23, 2009, 07:18:39 »

Цитировать
Кстати, что там в курсе говорили о стандартах?
Ничего не говорили.

Жаль, что у меня смайлики режутся, а то вставил бы самого шокированного.
Сообщить модератору   Записан

все написанное выше является моим личным мнением
korson
Посетитель


Репутация: 0
Offline Offline

Сообщений: 2


Просмотр профиля Email
« Ответ #5 : Июль 23, 2009, 08:46:19 »

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

1.
Цитировать
sv75,
Неужто они для всех задач с плюсами мучаются?
А кто ж их знает Улыбающийся. Вопрос требует пояснения/уточнения.

2.
Жаль, что аж два автора советуют не ходить. В том-то и моё остолопство, что по мне, так лучше бы походить... Ну да ладно, плохого не посоветуют.

3.
Признаться, я думал над тем с чего начать... С Си или CPP. Решил, что начну со второго. Посмотрел видеокурс. Установил MS Visual C++ 2008 русскую версию. Написал "Hello world", не заработало. Написал "Ti budew' rabotat' ili net". Результат тот же. Поставил английскую версию среды. Программа заработала Улыбающийся... вот такое самообразование выходит.

4. Еще раз подумал над тем, чего же я хочу. Решил как ремонт закончу начать читать "кошки по MS Visual 6.0", взятые с вышеназванного сайта. Кстати, что такое кошки?
Кроме того, думаю, стоит понять как делить программу на интерфейс и вычислительное ядро...

5. Какой-то дневник программиста-чайника получается из ветки.

6. Очень инетерсные примеры про goto и break. Жаль мало понял...

P.S. Кстати, мое знакомство с программированием состоялось на первом курсе - в школе у меня его не было. Преподаватель с вашей кафедры ИУ7 рассказывала Object Pascal/Delphi 7. Всё. Улыбающийся

Сообщить модератору   Записан
Flegmatic
Старожил
******

Репутация: 48
Offline Offline

Сообщений: 1332


Сонный программист

2141719
Просмотр профиля WWW Email
« Ответ #6 : Июль 23, 2009, 09:20:30 »

Всеволод, предлагаю дождаться переноса нашего оффтопика в отдельную тему, и там продолжить. Интересное обсуждение получается.

korson, если твоя цель - быстро начать писать программы с графическим интерфейсом, то лучше это делать на C# или хотя бы на C++ под .NET. В Студии-2008 это все должно быть. Писать GUI с помощью библиотеки MFC - редкое по своей унылости занятие.

Насчет изучения C++, возможно, я покажусь ортодоксом, но мне кажется, что лучше сначала изучить C - без этого хорошее понимание C++ представляется мне малореальным. Ну, и конечно за графический интерфейс лучше браться, когда уже более-менее освоишься в языке.
Сообщить модератору   Записан

Долгое время считалось, что бит неделим. Но советские учёные...<br>
<a href="http://interestingsoft.blogspot.com">Мой софтоблог</a>
Serrous
Администратор Форума
Абориген
*****

Репутация: 9
Offline Offline

Сообщений: 521

сакральный симулянт


Просмотр профиля
« Ответ #7 : Июль 24, 2009, 11:33:25 »

сейчас уже лучше начинать с чего-то наподобие питона, но си-диез тоже сгодится.
более другие языки нужны для более системного понимания процесса.
единственно без этого понимания часто получается быдлокод
Сообщить модератору   Записан

Скажите, сколько тонн клевера от каждой курицы-несушки будет засыпано в инкубаторы после обмолотки зяби?
dmitry.volosnykh
Юзер
*

Репутация: 0
Offline Offline

Сообщений: 11


231101665
Просмотр профиля
« Ответ #8 : Март 16, 2011, 10:22:00 »

... говорят что там, например, на оператор goto наезжали (а как ещё делать try/finally культурно в Си?).
Предположу, что вы имели в виду C++. Блока finally действительно не хватает. Оператор goto тоже недолюбливаю, но с учётом этой проблемы он может быть оправдан. Тем не менее, попробуйте вариант (синтаксически ничуть не лучше) с определением прямо в теле функции вспомогательного класса. Блок finally --- в деструкторе. Ну, если нужно, чтобы finally отрабатывал в определённом месте, то можно всю эту канитель запихнуть в анонимный составной оператор.

Что-то в таком духе.
Код:
QString TRScript::run() {
    class ScriptRunner {   // вспомогательный класс
    public:
        ScriptRunner() // здесь передаём все необходимые для работы параметры.
        {
                // в принципе тут могут находиться какие-то подготовительные действия, например, те, что до блока try.
        }

        ~ScriptRunner() {
                // собственно код, который хотелось бы поместить в непредусмотренный блок finally.
        }

        QString run() {
                // код, который будет в самом блоке try.
                return QString(""); // это рудимент.
        }
    } runner; // сразу и создаём объект вспомогательного класса.

    // поскольку специфические действия для отдельных видов исключений не предусматриваются, то блок try-catch оказался не нужным вообще.
    return runner.run();
}
Сообщить модератору   Записан
dmitry.volosnykh
Юзер
*

Репутация: 0
Offline Offline

Сообщений: 11


231101665
Просмотр профиля
« Ответ #9 : Март 16, 2011, 10:44:24 »

Решил не быть голословным. Вот минимальный пример. Играемся с THROW_EXCEPTION.

Код:
#include <stdlib.h>
#include <iostream>
#include <exception>

#define THROW_EXCEPTION

class WorkerException : std::exception {};

class Worker {
public:
    void preTryActions() throw() {
        std::cout << "Before try. Non-throwing stuff." << std::endl;
    }

    void tryActions() throw(WorkerException) {
#ifdef THROW_EXCEPTION
        std::cout << "try. Exception is about to be thrown." << std::endl;
        throw WorkerException();
        std::cout << "try. You won't see this output" << std::endl;
#else
        std::cout << "try. No exception is thrown." << std::endl;
#endif
    }

    void finallyActions() throw() {
        std::cout << "finally. You have to see this output in any case." << std::endl;
    }

    void postFinallyActions() throw() {
        std::cout << "After finally. Non-throwing stuff." << std::endl;
    }
};

int main() {
    class Helper {
    public:
        Helper(Worker& worker)
            :   mWorker(worker) {
            mWorker.preTryActions();
        }

        ~Helper() {
            mWorker.finallyActions();
        }

        void run() {
            mWorker.tryActions();
        }

    private:
        Worker& mWorker;
    };

    Worker worker;

    {
        Helper helper(worker);
        try {
            helper.run();
        } catch (const WorkerException&) {
            std::cout << "Shit happens. (c)" << std::endl;
        }
    } // here ~Helper() will do his job. That's it --- finally block.

    worker.postFinallyActions();

    return (EXIT_SUCCESS);
}
Сообщить модератору   Записан
dmitry.volosnykh
Юзер
*

Репутация: 0
Offline Offline

Сообщений: 11


231101665
Просмотр профиля
« Ответ #10 : Март 16, 2011, 11:00:14 »

Насчет изучения C++, возможно, я покажусь ортодоксом, но мне кажется, что лучше сначала изучить C - без этого хорошее понимание C++ представляется мне малореальным.
Про то, что язык C++ не является строгим надмножеством языка C, знаю. Но, честно говоря, мне не понятно, чего такого, будучи в языке C, нет в языке C++, что позволит "прохавать" программирование с самого низу. Сейчас вижу только один нюанс: структуры и объединения, которые в языке C++ являются классами, но с оглядкой (ограничениями и поправками) на язык C. Наверняка, порывшись в стандартах, можно будет найти другие различия, но это, скорее всего, будут тонкие детали, не принципиальные для изучения программирования. А в остальном --- язык C++ любезно предоставит все те же  грабли для вашего лба Улыбающийся Избежать их можно было бы, используя STL, но она относится к продвинутому программированию на C++. Да и без понимания классов, туда лучше не лезть. Так что это утопия.

PS. За моей спиной сидят два студента 4-го курса нашей кафедры: один --- хороший, другой --- совсем хороший. С языком C++ знакомы неважно, про STL молчу. Печаль Грустный
Сообщить модератору   Записан
sv75
Старожил
******

Репутация: 51
Offline Offline

Сообщений: 1298


Просмотр профиля Email
« Ответ #11 : Март 18, 2011, 05:52:28 »

Предположу, что вы имели в виду C++.

нет, именно голый Си.
Сообщить модератору   Записан

все написанное выше является моим личным мнением
Tweedle Dee
Продвинутый
****

Репутация: 11
Offline Offline

Сообщений: 358


ЛММ

Tweedledee@jabber.ru
Просмотр профиля Email
« Ответ #12 : Март 19, 2011, 11:07:41 »

Избежать их можно было бы, используя STL, но она относится к продвинутому программированию на C++.

Используя STL, можно только перейти на новый, более продвинутый уровень грабель. Например, человек, начавший активно использовать STL, может далеко на сразу найти ошибку, возникающую при использовании какого-нибудь
Код:
vector<auto_ptr<MyObject>>
.
Сообщить модератору   Записан

dmitry.volosnykh
Юзер
*

Репутация: 0
Offline Offline

Сообщений: 11


231101665
Просмотр профиля
« Ответ #13 : Март 31, 2011, 10:51:18 »

Используя STL, можно только перейти на новый, более продвинутый уровень грабель. Например, человек, начавший активно использовать STL, может далеко на сразу найти ошибку, возникающую при использовании какого-нибудь
Код:
vector<auto_ptr<MyObject>>
.

Зуб давать не буду, но насколько я помню, проблемы подобных случаев --- одно из первых, что упоминается при описании класса std::auto_ptr. Кстати, вот что выдаёт Google первым результатом поиска по полностью квалифицированному имени класса: http://www.cplusplus.com/reference/std/memory/auto_ptr/

PS. Я --- не апологет STL. Он по-своему хорош, но местами жутко неудобен.
Сообщить модератору   Записан
Перейти в:  

Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC
Corto design TinyPortal v0.9.8 © Bloc
XHTML | CSS

Страница сгенерирована за 0.16 секунд. Запросов: 26.
?>