Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (18)
  • Какой выбрать парсер c/c++ кода, на c/c++?

    @alexanius
    Если нужно только выделить все числа, то используйте регулярные выражения. Они подойдут и для более сложных задач (например найти присваивания). Я обычно пользуюсь qt'шными regexp'ами, но если проект привязан к mfc, то посмотрите в стандартные. Для целых чисел самый простой паттерн будет таким: [0-9]+. Разумется, в реальной задаче им всё не ограничится.

    Если стоит задача всё же на разбор кода, то тут всё усложняется. Можно писать свой велосипед на flex+bison. В случае с C/C++ Вам гарантировано незабываемое удовольствие .

    Если нужен точный анализ программы, посмотрите в сторону clang.
    Ответ написан
    Комментировать
  • Что такое парадигмы программирования?

    @alexanius
    В двух словах это набор базовых принципов (мат. модели, например), на которой работает язык программирования. Сейчас наиболее широко используются три парадигмы: императивная, функциональная и логическая.

    Императивная основана на мат. модели машин Тьюринга. Особенность данной парадигмы в том, что программист чётко, шаг за шагом описывает изменения состояния программы (алгоритм), который компьютер в точности выполняет. Внутри данной парадигмы широко используются процедурный стиль (язык C) и объектно-ориентированный стиль (язык Smalltalk как яркий представитель).

    Функциональная парадигма основана на мат. модели лямбда-исчисления Чёртча. В ней программы представляют из себя вычисление функций именно в их математическом понятии. Здесь (в идеале) нет глобального состояния программы и от него ничего не должно зависеть. Функции не должны иметь побочных эффектов (pure), а данные стараются делать неизменяемыми (immutable). Наиболее яркий представитель - Haskell.

    Логическое программирование основано на мат. модели логики предикатов первого порядка. В рамках этой парадигмы вы не описываете компьютеру алгоритм решения задачи, а задаёте набор фактов, описываете правила вывода, и входные данные, после чего на основе этой информации компьютер выдаёт ответ. Алгоритм решения... нафиг не нужен. Шутка. Как вариант строится дерево решений, в котором ищется ответ подходящий под набор фактов и заданные условия. Яркий представитель - язык Prolog.

    А вообще по теме парадигм есть неплохая глава в книге Сошникова Д.В. "Парадигма логического программирования"
    Ответ написан
    Комментировать
  • В нашей стране проводят научные исследования в IT? И возможно ли туда попасть?

    @alexanius
    Т.к. несколько лет назад у меня была аналогичная проблема - поделюсь опытом.

    Я не уверен, что у нас кто-то занимается чисто академической деятельностью в IT. В своё время я рассматривал вариант пойти в ИСП РАН (Институт Системного Программирования), из непродолжительного общения с ними сделал вывод, что они тоже занимаются вполне себе коммерческими (пусть и opensource) проектами, по которым делают публикации. Думаю это везде так. Пытаться делать чисто академическую карьеру в IT в текущих реалиях на мой взгляд идея сомнительная, т.к. денег вы за это иметь не будете, а кушать хочется всегда. Придётся иметь основную работу, а в свободное время заниматься исследованиями. Качество и того и другого может пострадать.
    Но посмотреть чем занимается ИСП (или другие РАНовские институты) я бы Вам посоветовал. Вполне возможно, что там для Вас будет что-то интересное. Хотя в свете последних реформ могут быть проблемы с аспирантурой.

    Есть вариант устроиться в коммерческую фирму, занимающуюся соответствующей тематикой. Тут всё зависит непосредственно от отношения руководства к научной деятельности. Не знаю, могут ли Вам запретить заниматься наукой из-за, скажем, закрытости разработок (в этом случае руководство скорей всего неадекватно), но могут сказать, что-то вроде "мы не против, но особо помочь не сможем". Этот вариант в целом аналогичен варианту с двумя работами, т.к. придётся самому искать научника и не факт, что его направление исследования и то чем Вы занимаетесь на практике будет совпадать. Есть совсем идеальный вариант - когда фирма поощряет исследования. Это большая редкость, для этого фирма должна заниматься разработкой чего-то фундаментального. Как, например, сказали выше Intel, можете посмотреть как дела обстоят у них.

    В плане сетей или анализа данных можете поинтересоваться как дела обстоят у поисковиков - Mail, Yandex. Как минимум у них стоят интересные задачи в этом плане.

    Также рекомендую посмотреть чем занимаются в МЦСТ (производитель процессоров Эльбрус, а также компилятора, операционки и софта к нему). Лучше смотрите не на сайте - там написано далеко не всё, а сразу пишите куда-нибудь в отдел кадров или секретариат - там Вас перенаправят к представителям соответствующего отдела. Здесь научная работа поощряется, но всё равно в первую очередь придётся заниматься рутинными делами, а уже на её основе делать публикации. Большой минус - это две параллельные линии деятельности. Большой плюс - публикации основаны на вполне реальных рабочих результатах.
    Ответ написан
    Комментировать
  • Почитал про различные компиляторы и остановился на gcc, но не понимаю, как им пользоваться?

    @alexanius
    IDE лучше пока не использовать. Если у Вас Windows, то возьмите Nodepad++, если linux, то любой редактор (kate, gedit, vim, emacs, тысячи их). Почитайте статьи о том что такое компиляция вообще и как компилируют программы на Си.

    Теперь, если под Вы под linux (а лучше быть именно под ним), то просто вводите gcc test.c и получаете исполняемый файл.

    Если под Windows - тут несколько сложнее. Скорей всего у Вас установлен mingw, Тогда следует прописать путь к компилятору в переменной PATH, после этого можно также воспользоваться командой gcc test.c (не помню точно - у них вроде бинарь как-то по-другому зовётся).

    В общем, читайте документацию и просто статьи, информации об этом полно.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)