Як я можу переконати мого шефа, що ANSI C є неадекватним для нашого нового проекту? [зачинено]


64

Кілька місяців тому ми почали розробляти додаток для управління внутрішньо розробленим тестовим обладнанням і записувати набір вимірювань. Він повинен мати простий інтерфейс користувача і, ймовірно, потребуватиме потоки через безперервну запис, який має відбуватися. Цей додаток буде використовуватися протягом декількох років, і його повинен підтримувати декілька студентів з інформатики протягом цього періоду.

Наш начальник закінчив десь 30 років тому (не сприймати його як правопорушення; у мене на спині теж більше половини) і мандат доручив нам розробляти цю програму в ANSI C. Обґрунтування полягає в тому, що він єдиний буде цілий час, і тому він повинен вміти розуміти, що ми робимо. Він також постановив, що ми не повинні використовувати абстрактних типів даних; він навіть подав нам список із назвою глобальних змінних (зітхання), які він хоче, щоб ми використовували.

Насправді я деякий час спробував такий підхід, але це насправді сповільнювало мене, щоб переконатися, що всі операції з покажчиком були безпечними та всі струни мали правильний розмір. Крім того, кількість рядків коду, які насправді пов'язані з проблемою, що існує, була лише невеликою частиною нашої кодової бази. Через декілька днів я заробив всю річ і почав заново використовувати C #. Наш начальник вже бачив, як програма працює, і йому подобається, як вона працює, але він не знає, що вона написана іншою мовою.

Наступного тижня ми вдвох зустрінемось, щоб перейти до вихідного коду, щоб він "знав, як його підтримувати". Мені якось страшно, і я хотів би почути від вас, хлопці, які аргументи я можу використати, щоб підтримати своє рішення.

Боягузливий твій,


220
"О ні, це не остаточна версія, це просто версія C #, яку ми швидко написали за кілька днів для складання прототипів та тестування, щоб переконатися, що ми зрозуміли вимоги та налагодити інтерфейс користувача. Впровадити це в ANSI C буде потрібно ще X тижнів, тому що, ви знаєте, ми повинні працювати навколо , не маючи всю ці фантазії структури даних. ... Ну, да, тепер, коли ви згадуєте його, C # версія має вже робити все , що остаточна програма повинна, але ви сказали , вам це потрібно в ANSI C. ... Добре, якщо ви наполягаєте, давайте залишимося з цією версією ... "
Хайнці

8
@Heinzi: У мене був такий самий досвід: написання прототипу C # бібліотеки за 2 дні та витрачені кілька тижнів на її перезапис у C. На щастя, після цього проекту мені запропонували можливість перейти до іншої команди з більш розумний вибір мови.
dan04

49
Глобальні змінні та потоки? Ви переживаєте, мій друже, незалежно від мови програмування, якою ти користуєшся.
Неманья Трифунович

16
Аргумент, який вам справді потрібен, - це чому ви повинні тримати свою роботу.
епос

11
Ваше припущення невірно - ANSI C є адекватним майже для всіх проектів. Ось чому він все ще популярний після всіх цих років. Оптимально це чи ні - це інше питання.
Марк Рансом

Відповіді:


108

Зауважте, що "Будь ласка, зробіть це так, я впевнений, що я можу це підтримувати" - це насправді дуже гарна вимога - більшість програм витрачають значно довше, ніж пишуть, а зберігання рішення у відомій технології зазвичай є хорошою ідеєю.

Уявіть собі, якщо якийсь новий комп’ютерний хлопець, коли його попросили написати додаток на C #, написав його в Haskell за два дні і сказав: "Ей, це працює, і я пішов, до побачення", залишивши технічне обслуговування на вас.

Уявіть собі, якби якийсь новий комп’ютерний малюк, коли його просили написати програму ANSI C 15 років тому, написав це у Visual Basic 6 за два дні та залишив його. Тепер ви повинні підтримувати його, і Windows 7 починає скаржитися вже тоді, коли вставляється інсталяційний носій .

Це може бути гарною можливістю сказати - як натякав Хайнці в коментарях, - що "це швидкий прототип, написаний на C #, який, схоже, схожий на C - чи будемо ми готові до виготовлення, чи повторно впровадити його в ANSI C, як ти запитав ", а потім прийміть дискусію зараз. Маючи фактичне джерело, щоб побачити, це набагато краще, ніж "Ей, чи не слід писати наступну заявку в Haskell, тому що це швидше".

Іншими словами - тепер у вас є можливість продемонструвати, що можна розглянути нову платформу. Повідомте, що ви писали прототип перед переглядом коду - це допоможе зняти враження, що ви намагаєтесь прокрасти C # під радаром. Я б запропонував вам також продемонструвати, що весь існуючий код, написаний в ANSI C, можна використовувати зсередини C #. Особисто я вважаю, що вам скажуть, що ціллю залишається ANSI C, щоб залишитися на єдиній платформі.


26
+1: для вказівки на вимогу "зробіть це так, я впевнений, що зможу його підтримувати". C # напевно набагато легше / швидше, ніж C розвиватись (загалом), але C змінився за останні 30 років менше, ніж C # змінився за останні 15 років. Тож для продукту, який доводиться підтримувати протягом багатьох років, C може бути краще підходить. Ви повинні піти на компроміс між усіма вимогами: складність проекту (C #, мабуть, кращий вибір), довготривале обслуговування (C здається більш стабільним), хто збирається робити технічне обслуговування тощо.
Giorgio

4
@Ramhound Я говорю не про підтримку VB6, а про підтримку середовища розробки Visual Basic 6 . Моя копія Windows 7 явно сповістила мене, вставляючи інсталяційний носій, що це була не дуже добра ідея.

12
Хороші бали, але що робити, якщо начальник попросив, щоб це було написано в COBOL? Або збірка 6502? У який момент ви можете сказати своєму начальникові: "Ця мова застаріла для цієї мети, і як тільки ти підеш, не залишиться нікого, хто розуміє цей матеріал"?
Мураха

6
@ Алекс: Послідовність приємна, правда. Але ви б написали нову веб-систему на C, якби все інше (не веб-) програмне забезпечення, написане вашим відділом, було написане на мові С? Я думаю, що це зводиться до балансу між вибором відповідних технологій для системи, про яку ви пишете, порівняно з наявними навичками команди. Вибір мови без роздумів, оскільки це те, що ви завжди використовуєте, може бути згубним.
Мураха

8
@ant, той, хто платить групі, отримує вибір музики. (а ми - магазин COBOL - немає проблем з цим)

35

У цьому випадку ваш бос, здається, буде вашим клієнтом, і його головна вимога полягає в тому, щоб він міг підтримувати додаток, коли ви рухаєтесь далі. Це здається цілком розумним.

Отже, вибір полягає в тому, щоб зробити те, що він просить, або продемонструвати, що ви можете завершити розробку І навчити його, як підтримувати додаток C # в обмежені терміни і за меншими витратами. Якщо ви не можете цього зробити, ви не відповідаєте вимогам проекту.


21
ОП явно ігнорувала вимоги без повідомлення чи обговорення. Якщо начальник був комерційним клієнтом, він міг відмовитись у виплаті та, можливо, подати позов до витрат, понесених через витрачений час. Скасуйте ролі, що робити, якщо ви, наприклад, замовили костюм під замовлення і виявили, що кравцю не подобається працювати з тканиною, яку ви вказали, так мовчки замінив ту, яку він зробив, як на свій вибір кольору? Проблема ОП зараз полягає в тому, що йому не можна довіряти проекти без пильного нагляду, явно не вистачає навичок у людей та не має поваги до керівництва.
епопея

1
@epo Я вважаю, що я розумію ваше твердження, що начальник не може довіряти ОП, оскільки вони не зробили того, що просили. Однак, якщо він розумний менеджер, цього не повинно статися. Якби розробник звернувся до менеджера з кращим рішенням, ніж спочатку вважалося, я би сподівався, що менеджер буде до нього відкритий. Якщо я можу трохи змінити ваш приклад, це схоже на кравця, який робить костюм потрібного кольору / візерунка з новим, міцнішим, кращим почуттям і дешевшим типом тканини, ніж те, що просили, хоча покупець попросив тип з тканини, з якими вони були знайомі.
Тейлор Ціна

Зважаючи на це, я також погоджуюся, що в цьому випадку технічне обслуговування є важливою вимогою. Зараз ОП зобов'язаний довести менеджеру, що вони вирішили решту вимог таким чином, щоб керівник міг швидко та ефективно навчитися підтримувати.
Тейлор Ціна

26

Ви не давали багато інформації, але я думаю, що C - це абсолютно правильний вибір - я працюю інженером на промисловому заводі, і більшість (якщо не всі) нашого коду написано на C. Якщо вам потрібно отримати вимірювання пристрій (я припускаю, що витратомір або термопара чи подібне тут) і відображати його поблизу в режимі реального часу C - відмінний вибір.

Це швидкий, портативний (я ніколи не писав на C #, але я не думаю, що він працює без встановленої конкретної версії фреймворку, і це, як правило, лише на основі Windows).

У будь-якому випадку ви можете використовувати іншу мову, щоб зробити GUI. Але ви можете заощадити зусилля і просто скористатися наявним пакетом трендів (є кілька хороших відкритих джерел).

Підводячи підсумок, я б сказав, що основне взаємозв'язок із апаратною частиною C - чудовий вибір.


7
Я мав більше успіху в перенесенні коду C # з Windows в Linux (використовуючи Mono), ніж у мене з кодом C ++.
dan04

8
@ dan04: Які проблеми у вас виникли з C ++? Я думав, що C ++ буде досить портативним. Крім того, C ++ не є C. Я завжди знаходив використання C з бібліотекою GNU C досить портативно, наприклад, між GNU Linux та cygwin.
Джорджіо

4
@ dan04 C! = C ++.

2
@Giorgio: Дратівливо велику частину його склали струни. Нам довелося вийняти всі специфічні для Windows TCHAR(що ми все одно не використовували послідовно) і прийняли командний стандарт використання UTF-8 одночасно з переходом Linux. На жаль, це вимагало повторної реалізації великої частини стандартної бібліотеки для Windows, яка ще boost::nowideне існувала на той час.
dan04

3
@ dan04: Як було сказано, C, звичайно, не настільки виразний, як C # (або C ++ з цього приводу), але я використовую бібліотеку GNU C ( gnu.org/software/libc ) з 1997 року, і це справді стабільно і портативно. Що стосується C ++, я би роздивився Qt (або при підвищенні та стандартних бібліотеках), оскільки вони досить портативні. Я б уникав можливостей, що стосуються Windows, якщо це можливо: AFAIK це ніколи не було метою Microsoft виробляти портативне програмне забезпечення, оскільки блокування клієнтів є частиною їх маркетингової стратегії.
Джорджіо

24

О Боже. Це програма в реальному часі? Контроль обладнання в режимі реального часу? Збір даних у режимі реального часу? Використовуєте мову зі збирачем сміття? О Боже.

Хоча я згоден, що ви, ймовірно, можете робити додаток сучаснішою мовою за менший час, це, мабуть, не є головним критерієм. ЛЕГКО ВАШЕ ПРОГРАММУВАННЯ ІМОГО МАЛКО ВАЖЛИВО, ЩО ДРУГІ КРИТЕРІЇ, такі як ті, які ваш начальник встановив, і час відповіді та детерміновану поведінку.

Я б запропонував вам зробити прототип на C # або Python, просто щоб перевірити основні функціональні можливості та інтерфейс користувача. ТЕБЕ випробовуйте чорт із нього, вимірюючи фактичні затримки та час відгуку, коли додаток потрапляє з великою кількістю даних протягом багатьох днів безперервного запуску. Шанси є, що додаток може бути занадто повільним або відставати у випадкові години, коли запускається ВМ або сміттєзбірник.

Я пропоную вам представити, що ви зробили як ПРОТОТИП.

Кодування в C не так складно. Якщо вам не до цього, скажіть так. Нас вистачає для виклику. (Я займаюся кодуванням С у реальному часі, на жаль, вже десятиліття).


3
Дозволяє словосполучення спочатку трохи по-іншому. О Боже. Це програма в реальному часі? Контроль обладнання в режимі реального часу? Збір даних у режимі реального часу? РАБОТИ НА НЕ РЕАЛЬНОГО РОЗШИРЕНОГО ЕКОЛОГІЇ? О Боже. Вам завжди доведеться робити вибірку при перетині меж пристрою. "Реальний час" - це солом'яний аргумент і неправильно визначена вимога. C # чудово.
Гусдор

Ви, очевидно, не чули про роботу Джо Даффі . Він працює над програмуванням системи в C # принаймні з 2013 року . Компілятор Roslyn може компілювати в нативний код (саме так працює UWP) і збирання сміття не є проблемою, якщо ви звертаєте увагу на те, що ви робите.
RubberDuck

14

Що ж, перше, що потрібно зробити, - це піти до свого начальника і розправитися. Ви не зважали на його чітке прохання, і ще гірше робили це місяцями. Я не знаю, скільки часу ви зайнялися цим, але якщо припустити, що на реалізацію проекту йде більшість часу, вам доведеться зіткнутися з тим, що незабаром ви можете шукати нову роботу.

Чим раніше ви з цим впораєтеся, тим краще.

По-друге, я не думаю, що ти можеш переконати його у тому, що ANSI C неадекватний, що потрібно зробити, це переконати його у кількох інших речах (1), що c # є адекватним, (2) він може легко навчитися підтримувати c #, (3 ), що вам було недостатньо писати це в C. Припускаючи, що ви все ще маєте роботу та роль, щоб грати з цим проектом, я зосередився б на 2, підкреслюючи подібність між c та c #.

Цитати у відповідь на коментарі ...

Кілька місяців тому ми почали розробляти додаток [...] Через декілька днів я переробив всю річ і почав заново за допомогою C #


Ніде він не згадував, що місяцями він будував версію C #?
Анонім

1
@ Anonymous - Не важливо, чи це були дні чи місяці, він все ще НЕ дотримувався вказівок своїх менеджерів. У автора явно не було навичок, необхідних для розробки програми в ANSI C.
Ramhound

1
@Ramhound - Я не заперечую, що він не дотримувався вказівок своїх менеджерів, я просто кажу, що jmoerno видавав так, ніби витратив місяці на дотичні. Крім того, якщо він створив проект разом за пару днів, щоб він послужив робочим прототипом, на якому може базуватися більш стабільна версія C, то тоді це має сенс. Це частина етапу планування.
Анонім

@jmoreno - Вибачте, я, мабуть, неправильно прочитав питання.
Анонім

2
@jmoreno - Звичайно. Останній коментар я опублікував, побачивши додану цитату. Вибачте ще раз.
Анонім

12

Мандат зобов’язав нас розробляти цю програму в ANSI C. Обґрунтування полягає в тому, що він єдиний, хто буде весь час, і тому він повинен вміти розуміти, що ми робимо.

Це досить розумна вимога.

Він також постановив, що ми не повинні використовувати абстрактних типів даних;

Це не має сенсу. Тепер він починає трохи підозріло пахнути, адже це вимога до дизайну програми, а не вимога мови. Якщо код повинен бути простим у обслуговуванні, впровадженні ADT або використанні добре перевірених, попередні мають бути пріоритетними.

він навіть дав нам список із назвою глобальних змінних (зітхання), які він хоче, щоб ми використовували.

Гаразд, так зараз смердить. Тепер ми можемо сказати, що ваш начальник має обмежений досвід не лише з різних мов програмування, але і з програмування взагалі. Кваліфікований програміст-ветеран, незважаючи на переваги мови, ніколи не зробить такої заяви. (Єдиним винятком, про який я можу придумати, є те, якщо більша частина коду призначена для роботи на досить невеликій вбудованій системі, і тому передбачалося, що вся необхідна робоча пам'ять для коду буде попередньо виділена. Ідея, що той самий код Очікується, що інтерфейс інтерфейсу на екрані рішуче протистоїть тому, що все-таки має місце).

Я здогадуюсь, що ваш начальник ніколи не брав участь у великих масштабних, важливих для місії програмних проектах, але він, швидше за все, плавав у різних неякісних.

Тож це не має нічого спільного з мовою програмування C. Ви можете легко писати однаково прискіпливі програми і в C #. Дуже часто зустрічається помилка вважати, що хороший дизайн програми залежить від мови. Це просто неправда!

C # звичайно має гарніший, чистіший і менш незрозумілий синтаксис, ніж C. Він має велику підтримку дизайну програм, оскільки має набагато більше ключових слів, пов’язаних з OO, ніж C. Але крім цього, він не говорить вам, як писати свої програми. Якщо ви вважаєте, що все, що написано на C, за замовчуванням жахливо, і все, що написано на C #, - це небо, за замовчуванням, я думаю, що ви зараз пишете досить жахливі програми C #, не усвідомлюючи цього.

Я б запропонував вам зробити абстрактний, не залежний від мови, але детальний дизайн програми перед будь-яким іншим. Використовуйте звичайний, об'єктно-орієнтований підхід. Які об’єкти існують і як вони спілкуються між собою, які потрібні залежності і т. Д. Коли ви достатньо продумали дизайн програми та розбили його на папері, це не повинно мати великого значення ні для вас, ні для вашого начальника, який мову, яку ви вибрали для реалізації.


1
+1 для "Ви можете легко писати однаково прискіпливі програми і в C #."
Хав'єр

11

Перше питання, яке вам доведеться вирішити, - це емоційне, ірраціональне. ІТ-індустрія постійно змінюється, і, хоча місця для всього є, відмова від вдосконалення чи прийняття змін - проблема.

Чому ваш начальник чіпляється за ANSI C? Якщо це єдина мова, яку він знає, то, можливо, настав час змін, але раціональний аргумент може бути недостатнім. Чи почуватиметься ваш начальник недооціненим чи, можливо, звільненим, якщо його змусять працювати незнайомою мовою? Підкресліть досвід, який він має, та інші переваги, які він приносить.

Якщо ви не вирішите цю проблему, всі раціональні аргументи, які ви можете навести, будуть марними. Як підлеглий, ви можете не бути тим, хто може вести цю дискусію з ним. Можливо, поширюйте цей предмет на когось із інших керівників, якщо такі є.

Також розгляньте це з вашої точки зору. Чому ви хочете використовувати C #? Наскільки це бажання використовувати щось нове і круте? Будьте чесні до себе. Якщо ви визнаєте це, це допоможе вам більш ефективно сперечатися.

Друге питання - це ризик та вартість. Написання програмного забезпечення є дорогим, а вибір мови є головним фактором у цьому. Поміркуйте:

  1. Скільки часу знадобиться писати в C # проти C? З легшою орієнтацією на об'єкти та кращим збиранням сміття, C # може бути простішим. Однак якщо програма використовує безліч керованих дзвінків API, C може бути простішим.
  2. Якщо ви використовуєте C #, чи потрібно купувати додаткові інструменти? Здається, ви вже використовуєте Visual Studio, але вам потрібні додаткові інструменти для локалізації, огляду та аналізу коду, налагодження тощо?
  3. Наскільки легко утримувати? Якщо ви знайшли помилку, як швидко її можна виправити. C # може зменшити цю орієнтацію об'єкта. Автоматичне збирання сміття також дозволяє уникнути більшості витоків пам'яті та проблем із вказівниками.
  4. Наскільки легко підтримати? Якщо у вас є персонал служби підтримки, вони можуть знати, як прочитати дамп аварійного завершення роботи, але чи знають вони, як користуватися windbg з SOS? У цільових машинах вже встановлена ​​відповідна версія .Net Framework?
  5. Розглянемо штатний розпис. Скільки людей знають C проти C #? Якби ви або обидва з вас вийшли з організації, наскільки легко було б замінити вас? Чи розробники C дешевші або дорожчі, ніж розробники C #?

Я міг би продовжувати, але справа в тому, щоб перестати сперечатися лише про технічні достоїнства мов. Технічні достоїнства - це речі, які ви розумієте лише ви та ваш начальник. Якщо ви починаєте говорити про діловий вплив, ви втягуєте в себе значно ширшу групу людей і висуваєте набагато більш переконливий аргумент.

Можливо, C - кращий вибір. C # не є автоматично кращим для всіх ситуацій. Можливо, ви робите цей проект за допомогою C, але зробіть доказ C # для наступного. Пам'ятайте, що ви можете програти битву, але все ж виграти війну теж.


5
Я не погоджуюся з неявним припущенням, що C # за замовчуванням є кращим вибором, ніж ANSI C. Наприклад, якщо ви хочете залишатися незалежною від платформи C #, швидше за все, це поганий вибір.

@ ThorbjørnRavnAndersen Я згоден. Перегляньте останній абзац. Я також згадую такі випадки, як виклик некерованого коду. Я припускаю, що незалежність платформи виключила б C # в ОП. Можливо, це неправильне припущення.
актон

1
Незалежність платформи була лише однією з можливих причин. Такі слова, як "чіпляння до ANSI C", на мій погляд, - вказують на упередженість.

@akton - з того часу, коли не можна зателефонувати некерованому коду з C #. Звичайно, для цього потрібна обгортка, яка створює додаткові проблеми підтримки, але це можливо. Крім того, ви можете підтримувати C # на багатоплатформах, якщо хочете. Mono - це підтримка на всіх основних платформах настільних ПК (OS X, Windows та Linux). Зважаючи на те, що на базі Microsoft Windows .NET Framework просунута база функцій Mono не відповідає їй точно (це вже справа з WPF), і, звичайно, ви не зможете розробляти програми Metro, які працюють на Linux. Звичайно, малоймовірно, що було б зроблено в цьому випадку.
Рамхаунд

@Ramhound Я не сказав, що ти не можеш зателефонувати без керованого коду з C #, просто багато цього може завдати болю. Точно так само можна зробити розробку крос-платформ у C #, але C майже універсальний, як сказав Thorbjorn.
актон

7

Можливо, ще один аргумент: напевно, дуже важко знайти студентів з інформатики, які мають достатньо досвіду для написання коду С, не допускаючи помилок. ANSI C - це не перше, про що люди сьогодні навчаються.

Тепер мене вб’ють усі студенти з інформатики.


ANSI C насправді було одним із перших речей, які я дізнався у коледжі. Я почав у 2004 році. Тож протягом останніх 10 років це ще викладали. Я провів багато пізніх ночей на зв’язку через SSH з середовищем Unix, намагаючись скласти свій код.
Рамхаунд

1
Смішно, я не вивчив ANSI C до останнього курсу в університеті. Першою мовою, яку викладав, був Паскаль, так що я захищений ...
tehnyit

Тут випускник; ми мали вплив як на C, так і на C ++, однак C був у вбудованому контексті та мінімальний. Обоє були в моєму останньому році - чисто C # та Java до цього.
Росс

2
C просто важко програмувати правильно, мабуть, найкращий момент проти використання C.
Пол Натан

7

Ви повністю не змогли переконати нас у тому, що ANSI C був неадекватним. C - це відмінна мова, яка здається пристосованою до типу завдань, які ви описали. З коротким описом завдання (крім вимог до мови) я також рекомендував би C (або, можливо, піти).

Я думаю, що проблема полягає в тому, що ви програмували на C, маючи на увазі мислення на C #. У мене є аналогічна проблема, коли я перемикаюся з Perl на C або java. Ви повинні навчитися адаптуватися до мови, а не навчитися перекладати зі свого способу мислення до мови дня.

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


4
Дякуємо, що відповіли на ваше перше запитання щодо програмістів Stack Exchange. Однак, можливо, ви хочете зробити свої майбутні відповіді трохи менш особистими, не використовуючи фрази на кшталт "ви повністю провалилися", "проблема полягає в тому, щоб відкрити свою думку". Перегляньте поширені запитання у програмі programmers.stackexchange.com/faq#etiquette . Я думаю, ви можете зробити хороший опис своєї точки зору нейтральною мовою.
DeveloperDon

2

Спочатку потрібно сказати своєму начальникові, що це вже іншою мовою. Він буде (зрозуміло) злим, якщо ви повернете щось цілеспрямовано проти вимог без попереднього повідомлення.

Тепер найкращий спосіб пояснити ці речі начальнику / менеджерам - це покласти це на час і гроші. Оцініть, скільки часу зайняв би такий проект в ANSI C, а потім оцініть, скільки часу знадобиться на чомусь більш високому рівні, такому як C #. Зауважте, я сказав, що вищий рівень, а не сучасний. Це також може допомогти згладити речі. Я маю на увазі, що ви не вирішили б намалювати кімнату просто крихітною пензликом, ви б використали валики та інші речі, завдяки яким кожен штрих (рядок коду) охоплює більше площі проекту. Крім того, якщо ви або хтось із членів вашої команди не знаєте C, або вам зручно робити великий проект на C, це ще більше породжується питанням часу, оскільки їм доведеться швидко набирати швидкість.

Це також звучить, як ваш начальник намагається мікромініструвати. Я впевнений, що одна з інших відповідей спробує пояснити, як змусити вашого шефа зробити це менше


Доступність здається можливим аргументом. Хоча начальник (як замовник, за пропозицією @ MatthewFlynn) стверджує, що він не може дозволити собі програму не записати на С, ОП може стверджувати, що начальник також не зможе дозволити собі витрати на впровадження та технічне обслуговування, пов'язані з програмою. написано на C. У будь-якому випадку потрібні компроміси, щоб все сталося.
rwong

1

Відраза наглядача до ADT була розглянута в іншому місці, як і немовби невідомий розробник витрат GC, тому я зупинюсь на "потоках".

Можливо, замість того, щоб думати з точки зору .NET (або JVM, якщо це так індоктриновано) нарізування, то, що ви можете хотіти, - це декілька процесів, використовуючи якийсь механізм міжпроцесорної комунікації (IPC) для спілкування між ними. Напр. - вікна повідомлень, спільна пам'ять, файловий буфер з картографічною пам'яттю, названа труба, що завгодно. Виділіть невеликі процеси взаємодії з пристроєм або аспектом пристрою та перевірки IPC для передачі оновлень та підтвердження запитів, а також дещо більший процес для підтримки графічного інтерфейсу та спілкування з "моніторами" обладнання, використовуючи будь-який IPC, який ви вибрали.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.