|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
Конструирование программного обеспечения13.05.2016, 04:53. Показов 3011. Ответов 39
Метки нет (Все метки)
Вместе с языком программирования хотел бы узнать как грамотно строить программы.
Есть ли книжки на эту тему,чтобы было как можно подробно описано как писать хороший код и строить ПО. Думаю немножко поучу С буду писать на нём(на сколько я понял,там программы состоят из функций - что- нибудь на эту тему) Дальше думаю познакомиться с Java(насколько я понял там ООП - тоже подкиньте что-нибудь на эту тему). Если не прав поправьте. P..S. В интернете поискал там пишут про совершенный код, чистый код, вот хотел узнать ваше мнение Заранее спасибо!)
0
|
|
| 13.05.2016, 04:53 | |
|
Ответы с готовыми решениями:
39
Архитектура программного обеспечения Литература по тестированию программного обеспечения инвестиционный проект программного обеспечения |
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
|
| 13.05.2016, 07:58 | |
Сообщение было отмечено immortalWarrior как решение
Решение
immortalWarrior, могу порекомендовать ряд книг:
* Стив Макконнелл: Совершенный код * Мартин Фаулер: Шаблоны корпоративных приложений * Гамма, Хелм, Джонсон: Приемы объектно-ориентированного проектирования Есть ещё очень хорошие книги ориентированные на .NET. Не смотря на то, что эти книги для разработчиков .NET идеи в них изложенные универсальны и применимы практически везде: * Марк Симан: Внедрение зависимостей в .NET * Эспозито, Сальтарелло: Microsoft .NET. Архитектура корпоративных приложений * Холл Маклин: Адаптивный код на C#. Проектирование классов и интерфейсов, шаблоны и принципы SOLID Но, если ты только-только начал учить Си (а не С++), то эти книги тебе читать рановато (любые книги не по языку программирования, разве что кроме Стива Макконнелла). Сначала разберись с языком. Потом начни изучать какой-нибудь язык ориентированный на ООП (С++, Java, C#).
1
|
|
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 08:47 [ТС] | |
|
Usaga, спасибо за книги)
а если строить приложения на С?Или он не подходит? В смысли не с помощью объектов строить программу, а с помощью функций, вроде на С так пишут программы Об этом есть какие-нибудь книги?
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
|
| 13.05.2016, 08:51 | |
|
immortalWarrior, Си для драйверов хорош и для реализации разного рода библиотек, где производительность критична (аудио-видео кодеки, системные библиотеки и прочее). В остальных случаях более абстрактные языки подходят намного лучше.
0
|
|
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 08:54 [ТС] | |
|
Usaga, ясно, последний вопросик, на сколько я понял через указатели можно получить доступ к железу компьютера?
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
|
| 13.05.2016, 08:58 | |
|
immortalWarrior, нет. Только к памяти. Доступ к железу только через ядро ОС и драйвера.
1
|
|
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 09:00 [ТС] | |
|
Usaga, я всё понял, спасибо)
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
||||
| 13.05.2016, 09:41 | ||||
|
1. сначала изучить функциональное программирование (haskell, lisp, f# и т.п.) 2. затем изучить ООП (java, c# и т.п.) 3. затем изучать процедурное программирование (с и т.п.) Обычно программу на C можно почти один в один перевести на C#, а программу на C# можно почти один в один перевести на F#. Поэтому, если Вы будете изучать в последовательности C -> C# -> F#, Вам придётся каждый раз ломать свои представления о программировании. Иначе Ваши программы на F# будут похожи на портированные с C#, а Ваши программы на C# будут похожи на портированные с C. p.s. Добавлено через 2 минуты
1
|
||||
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
|||
| 13.05.2016, 09:54 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 10:04 [ТС] | |
|
Shamil1, я просто пока не совсем это все понимаю.
я не понимаю ещё конечно ничего, но в моём представлении хотелось бы научиться программировать на низком уровне, понимать операционные системы, архитектуру компьютера, сети, программировать под всё это. Скачал книги Танненбаума по архитектуре, сетям, и операционкам,хотя бы для общего развития Потом один язык ООП в будущем хотел изучить и один скриптовой(Питон например). Добавлено через 2 минуты Shamil1, плюс ещё математика нужна на сколько я понял, алгоритмы,кучу всего, в общем я запутался) Добавлено через 5 минут Usaga, Shamil1, искусственный интеллект тема для меня всегда была интересная,но думаю хотя бы пока на С не стане нормально писать рановато немного)
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
||
| 13.05.2016, 10:08 | ||
|
Когда Вы пишите на C, нужно, кроме собственно решения задачи, продумывать низкоуровневые детали (как организовать циклы, поддерживать состояние и т.п.). Этому научиться сложнее, чем просто решению задач. Конечно, через какое-то время основные низкоуровневые детали решаются уже на автомате. Но, как следствие, Вам уже сложно отделить программирование от низкоуровневых деталей (и поэтому сложно переключиться с процедурного на функциональное программирование). "Стюарт Рассел, Питер Норвиг | Искусственный интеллект Современный подход" - это книга об алгоритмах. Искусственный интеллект - это программа, решающая задачи типа нахождения кратчайшего пути и т.п. (а не искусственный разум и т.п.)
0
|
||
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 10:11 [ТС] | |
|
Shamil1, ясно,Haskell потом посмотрю)спасибо)
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
|||||||||
| 13.05.2016, 10:26 | |||||||||
|
Низкоуровневая оптимизация - вообще сплошное шаманство (нужно выучить ряд эмпирических правил, которые постоянно меняются - одни устаревают и перестают работать, но появляются новые). Если Вас интересует именно это, то, конечно, можно просто начать изучать Ассемблер, Си, Форт. Добавлено через 7 минут Задача о безопасной расстановке 8 ферзей. И вот решение:
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 46
|
|
| 13.05.2016, 10:38 [ТС] | |
|
Shamil1, не понимаю в плане вообще computer science
ну да, сначала скорее всего C попробую, потом что-нибудь высокоуровневое(java например), Haskell тоже посмотрю)Вообщем буду просвещаться)
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
|
| 13.05.2016, 10:52 | |
|
Shamil1, я думаю, что пока человек не поработает с Си, он не поймёт крутости примера, что ты показал. Не налегай
![]() Не по теме: Кстати, доводилось ли тебе самому что-нибудь полезное делать на Haskell?
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
|||
| 13.05.2016, 10:56 | |||
|
но я активно использую приёмы ФП в программах на C#
0
|
|||
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,260
|
||
| 13.05.2016, 11:05 | ||
|
0
|
||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
|
| 13.05.2016, 16:00 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 16.05.2016, 19:53 | |
|
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
|
||
| 16.05.2016, 23:11 | ||
|
В языке А есть for, break, continue, if, goto и так далее. В языке Б есть только if и goto. Если вы сначала выучили язык А и привыкли писать в стиле А (без goto), то при переходе на язык Б вы просто выучите, как записать цикл, используя if и goto. Если вы сначала выучили язык Б и привыкли использовать goto, то при переходе на язык А вы будете продолжать использовать goto, так как он это позволяет. Вам потребуется изменить свои представления от том, как пишутся программы, чтобы отказаться от использования goto.
0
|
||
| 16.05.2016, 23:11 | |
|
Помогаю со студенческими работами здесь
20
Разработка, внедрение и адаптация программного обеспечения отраслевой направленности Защита программного обеспечения Проанализировать, что привело к возникновению программного обеспечения, в частности операционных систем Тестирование программного обеспечения Учет программного обеспечения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|