Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем


3
Почему мы все еще наращиваем стек назад?
При компиляции кода C и просмотре сборки, все это имеет стек, растущий в обратном направлении, вот так: _main: pushq %rbp movl $5, -4(%rbp) popq %rbp ret -4(%rbp)- означает ли это, что базовый указатель или указатель стека фактически перемещаются вниз по адресам памяти, а не идут вверх? Почему это? Я изменил …
46 c  memory  assembly 

7
Почему стек вызовов имеет статический максимальный размер?
Работая с несколькими языками программирования, я всегда задавался вопросом, почему стек потоков имеет предопределенный максимальный размер, а не расширяется автоматически по мере необходимости. Для сравнения, некоторые очень распространенные высокоуровневые структуры (списки, карты и т. Д.), Встречающиеся в большинстве языков программирования, разрабатываются по мере необходимости при добавлении новых элементов, ограничиваясь по …
46 stack 

7
Что случилось с ограничениями базы данных?
Когда я рассматриваю модели баз данных для RDBMS, я обычно удивляюсь, обнаружив, что ограничения практически отсутствуют (кроме PK / FK). Например, процент часто хранится в столбце типа int(хотя это tinyintбыло бы более уместно), и нет CHECKограничения для ограничения значения до диапазона 0..100. Аналогично в SE.SE ответы, предлагающие проверочные ограничения, часто …

1
Является ли FormsAuthentication устаревшим? [закрыто]
Я создаю веб-сайт с использованием ASP.NET MVC 5. Выпустила ли Microsoft какую-либо технологию для замены FormsAuthentication или они все еще рекомендуют аутентифицировать пользователя с помощью FormsAuthentication для MVC 5?

6
Лучше проверить `c> = '0'` или` c> = 48`?
После обсуждения с некоторыми моими коллегами у меня возник «философский» вопрос о том, как относиться к типу данных char в Java, следуя рекомендациям. Предположим, что простой сценарий (очевидно, это всего лишь очень простой пример, чтобы придать практический смысл моему вопросу), где, учитывая в качестве входных данных строку String, необходимо посчитать …

7
Почему цепные сеттеры нетрадиционны?
Реализация цепочки на bean-компонентах очень удобна: нет необходимости перегружать конструкторы, мега-конструкторы, фабрики и обеспечивает повышенную читаемость. Я не могу думать о минусах, если только вы не хотите, чтобы ваш объект был неизменным , и в этом случае у него все равно не было бы сеттеров. Так есть ли причина, по …

4
Есть ли что-то новаторское в NoSQL? [закрыто]
Я очень солидный парень по реляционной базе данных и понимаю, вплоть до 3-й нормальной формы, ценю корни алгебраической теории множеств в SQL и, вероятно, могу реляционизировать разбитое сердце (или нет). Я не разобрался со структурой реляционных баз данных для вечеров свиданий с женой, но я думал о проектах реляционных баз …
46 nosql 

7
Как измерить потенциальную ценность рефакторинга
На старом большом проекте с техническим долгом, как вы можете надежно оценить или измерить выгоду от рефакторинга кода? Например, допустим, у вас есть некоторые компоненты в программном стеке, написанные на более старом языке, а некоторые более поздние компоненты написаны на более новом языке. Команда разработчиков постоянно добавляет в это решение …

6
Хорошая или плохая практика маскировать коллекции Java значимыми именами классов?
В последнее время у меня была привычка «маскировать» коллекции Java с понятными для человека именами классов. Несколько простых примеров: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Или же: // If you saw a ArrayList<ArrayList<?>> being passed around in the …

2
Как REST API должен обрабатывать PUT-запросы к частично модифицируемым ресурсам?
Предположим, что REST API в ответ на HTTP- GETзапрос возвращает некоторые дополнительные данные в подобъекте owner: { id: 'xyz', ... some other data ... owner: { name: 'Jo Bloggs', role: 'Programmer' } } Понятно, что мы не хотим, чтобы кто-то мог PUTвернуться { id: 'xyz', ... some other data ... …

4
Может ли слишком много абстракции быть плохим?
Как программисты, я чувствую, что наша цель - предоставить хорошие абстракции по данной модели предметной области и бизнес-логике. Но где должна остановиться эта абстракция? Как найти компромисс между абстракцией и всеми ее преимуществами (гибкость, простота изменения и т. Д.) И простотой понимания кода и всех его преимуществ. Я полагаю, что …

3
Почему анемичная модель предметной области считается плохой в C # / OOP, но очень важной в F # / FP?
В сообщении в блоге на F # для развлечения и выгоды говорится: В функциональном дизайне очень важно отделить поведение от данных. Типы данных просты и «тупы». И затем отдельно у вас есть ряд функций, которые действуют на эти типы данных. Это полная противоположность объектно-ориентированному дизайну, где поведение и данные должны …

5
Почему старые языки программирования продолжают пересматриваться?
Этот вопрос не «Почему люди до сих пор используют старые языки программирования?» Я это прекрасно понимаю. Фактически, два языка программирования, которые я знаю лучше всего, это C и Scheme, оба из которых восходят к 70-м годам. Недавно я читал об изменениях в C99 и C11 по сравнению с C89 (который, …

5
Критика монады IO, рассматриваемой как государственная монада, действующая в мире
IOМонады в Haskell часто объясняется как государственной монады , где государство является мир. Таким образом, значение типа IO amonad рассматривается как нечто подобное worldState -> (a, worldState). Некоторое время назад я прочитал статью (или сообщение в блоге / списке рассылки), в которой критиковал это мнение и приводил несколько причин, по …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.