Como convencer meu chefe de que o ANSI C é inadequado para o nosso novo projeto? [fechadas]

64

Há alguns meses, começamos a desenvolver um aplicativo para controlar um equipamento de teste desenvolvido internamente e registrar um conjunto de medidas. Ele deve ter uma interface de usuário simples e provavelmente exigiria threads devido à gravação contínua que deve ocorrer. Este aplicativo será usado por alguns anos e será mantido por vários estudantes de ciência da computação durante esse período.

Nosso chefe se formou há 30 anos (não deve ser considerado uma ofensa; também tenho mais da metade desse tempo) e determinou que desenvolvêssemos esse aplicativo no ANSI C. A lógica é que ele é o único que estará o tempo todo e, portanto, ele deve ser capaz de entender o que estamos fazendo. Ele também decidiu que não devemos usar tipos de dados abstratos; ele até nos deu uma lista com o nome das variáveis ​​globais (suspiro) que ele quer que usemos.

Na verdade, tentei essa abordagem por um tempo, mas estava realmente me atrasando para garantir que todas as operações do ponteiro fossem seguras e que todas as seqüências tivessem o tamanho correto. Além disso, o número de linhas de código que realmente se relacionavam com o problema em questão era apenas uma pequena fração de nossa base de códigos. Depois de alguns dias, desfiz a coisa toda e comecei de novo usando C #. Nosso chefe já viu o programa em execução e gosta da maneira como funciona, mas não sabe que está escrito em outro idioma.

Na próxima semana, nós dois nos encontraremos para revisar o código fonte, para que ele "saiba como mantê-lo". Estou meio assustada e gostaria de ouvir de vocês quais argumentos eu poderia usar para apoiar minha decisão.

Covarde seu,

rick
fonte
220
"Ah, não, essa não é a versão final, é apenas uma versão em C # que escrevemos rapidamente em alguns dias para prototipagem e teste, para garantir que entendemos os requisitos e para ajustar a interface do usuário. A implementação disso no ANSI C levará outro Raio semanas, porque, você sabe, nós temos que trabalhar em torno de não ter todas essas estruturas de dados de fantasia. ... Bem, sim, agora que você mencionou, o C # versão que já faz tudo o que o programa final deveria, mas você disse você precisar dele em ANSI C. ... OK, se você insistir, vamos ficar com essa versão ..."
Heinzi
8
@ Heinzi: Eu tive a mesma experiência: escrever um protótipo em C # de uma biblioteca em 2 dias e passar várias semanas reescrevendo-o em C. Felizmente, depois desse projeto, me foi oferecida a chance de transferir para outra equipe com mais escolha sensata de linguagem.
dan04
49
Variáveis ​​globais e threads? Você está com problemas, meu amigo, independentemente da linguagem de programação que você usa.
Nemanja Trifunovic
16
O argumento que você realmente precisa é por que você deve manter seu emprego.
epo
11
Sua suposição está incorreta - o ANSI C é adequado para quase todos os projetos. É por isso que ainda é popular depois de todos esses anos. Se é ideal ou não, é uma questão diferente.
Mark Ransom

Respostas:

108

Observe que o "Por favor, faça assim para ter certeza de que posso mantê-lo" é realmente um requisito muito bom - a maioria dos programas gasta muito mais tempo sendo mantida do que escrita e manter uma solução em uma tecnologia conhecida geralmente é uma boa idéia.

Imagine se algum garoto novo de computador, quando solicitado a escrever um aplicativo C #, o escrevesse em Haskell em dois dias e dissesse "Ei, ele funciona e eu vou embora, tchau", deixando a manutenção em você.

Imagine se algum garoto novo de computador, quando solicitado a escrever um aplicativo ANSI C há 15 anos, o tivesse escrito no Visual Basic 6 em dois dias e o deixado. Agora você precisa mantê-lo e o Windows 7 já começa a reclamar quando a mídia de instalação é inserida .

Pode ser uma boa oportunidade para dizer - como Heinzi sugeriu nos comentários - que "este é um protótipo rápido escrito em C # que se parece muito com C - devemos preparar a produção ou reimplementá-la no ANSI C como você?" perguntou "e, em seguida, faça a discussão agora. Ter uma fonte real para ver é muito melhor do que "Ei, não devemos escrever nosso próximo aplicativo em Haskell, porque é mais rápido".

Em outras palavras - agora você tem a oportunidade de demonstrar que uma nova plataforma pode ser considerada. Lembre-se de que você escreveu um protótipo antes da revisão do código - isso ajudará a remover a impressão de que você está tentando ocultar C # sob o radar. Eu sugeriria que você também demonstrasse que todo o código existente escrito em ANSI C pode ser usado no C #. Pessoalmente, acredito que você será informado de que o alvo continua sendo o ANSI C para permanecer em uma única plataforma.


fonte
26
+1: para apontar o requisito "faça assim, para ter certeza de que posso mantê-lo". O C # é com certeza muito mais fácil / rápido do que o C se desenvolver (em geral), mas o C mudou nos últimos 30 anos, menos que o C # nos últimos 15 anos. Portanto, para um produto que precisa ser mantido por muitos anos, C pode ser mais adequado. Você tem compromisso entre todos os requisitos: a complexidade do projeto (C # é provavelmente uma escolha melhor), a manutenção a longo prazo (C parece ser mais estável), que vai fazer a manutenção, etc.
Giorgio
4
@ Ramhound Não estou falando sobre o suporte ao VB6, mas sobre o suporte ao ambiente de desenvolvimento do Visual Basic 6 . Minha cópia do Windows 7 me notificou explicitamente ao inserir a mídia de instalação que isso não era uma boa ideia.
12
Bons pontos, mas e se o chefe pedisse que fosse escrito em COBOL? Ou montagem 6502? Em que ponto você pode dizer ao seu chefe: "Essa linguagem é obsoleta para esse fim, e depois que você se for, não haverá mais ninguém que entenda essas coisas"?
Ant
6
@ Alex: A consistência é boa, verdadeira. Mas você escreveria um novo sistema web em C se todos os outros softwares (não-web) escritos por seu departamento fossem escritos em C? Eu acho que tudo se resume a escolher as tecnologias apropriadas para o sistema que você está escrevendo versus as habilidades existentes da equipe. Escolher um idioma sem deliberação, porque é isso que você sempre usa pode ser prejudicial.
Ant
8
@ant, quem paga a banda escolhe a música. (e somos uma loja de COBOL - não há problema de suporte que)
35

Seu chefe parece ser seu cliente nesse caso, e seu principal requisito é que ele consiga manter o aplicativo quando você seguir em frente. Isso parece bastante razoável.

Portanto, a escolha é fazer o que ele pede ou demonstrar que você pode concluir o desenvolvimento E ensiná-lo a manter um aplicativo C # dentro dos limites de tempo e a um custo menor. Se você não pode fazer isso, não está atendendo aos requisitos do projeto.

Matthew Flynn
fonte
21
O OP ignorou explicitamente os requisitos sem notificação ou discussão. Se o chefe fosse um cliente comercial, ele poderia recusar o pagamento e possivelmente processar os custos incorridos devido ao desperdício de tempo. Inverta os papéis, e se você, por exemplo, encomendasse um terno sob medida e descobrisse que o alfaiate não gostava de trabalhar com o tecido que você especificou tão silenciosamente substituindo aquele que ele gostava, em sua escolha de cor? O problema do OP agora é que ele não pode ser confiado em projetos sem supervisão rigorosa, demonstradamente carece de habilidades das pessoas e não tem respeito pela gerência.
epo
11
@popo Acredito que entendo sua afirmação de que o chefe não pode confiar no OP, pois não fez o que foi solicitado. No entanto, se ele é um gerente razoável, isso não deveria acontecer. Se o desenvolvedor abordasse o gerente com uma solução melhor do que o inicialmente considerado, eu esperaria que o gerente estivesse aberto a ele. Se posso modificar um pouco o seu exemplo, é como o alfaiate fazendo um terno na cor / padrão desejado com um tipo de pano mais novo, mais durável, melhor e mais barato do que o solicitado, mesmo que o comprador tenha solicitado um tipo de tecido que eles estavam familiarizados.
Taylor Preço
Dito isto, também concordo que, neste caso, a manutenção é um requisito importante. Agora, o OP deve provar ao gerente que resolveu o restante dos requisitos de uma maneira que o gerente possa aprender rápida e efetivamente a manter.
Taylor Price
26

Você não forneceu muitas informações, mas acho que C é absolutamente a escolha certa - trabalho como engenheiro em uma planta industrial e a maioria (se não todos) de nosso código está escrita em C. Se você precisar obter medições de um dispositivo (estou assumindo um medidor de vazão ou termopar ou similar aqui) e exibi-lo quase em tempo real C é uma excelente opção.

É rápido, portátil (nunca escrevi em C #, mas não acho que funcione sem uma versão específica da estrutura instalada e geralmente é apenas com base no Windows).

Por todos os meios, você poderia usar outro idioma para fazer a GUI. Mas você pode economizar seu esforço e apenas usar um pacote de tendências pré-existente (existem alguns bons de código aberto disponíveis).

Para resumir, eu diria que a interface subjacente com a parte C do hardware é uma ótima opção.

Matt
fonte
7
Tive mais sucesso ao portar código C # do Windows para Linux (usando Mono) do que tive com código C ++.
dan04
8
@ dan04: Que problemas você teve com o C ++? Eu pensei que C ++ seria bastante portátil. Além disso, C ++ não é C. Eu sempre achei o uso de C com a biblioteca GNU C bastante portátil, por exemplo, entre o GNU Linux e o cygwin.
Giorgio
4
@ dan04 C! = C ++.
2
@Giorgio: Uma parte irritantemente grande era de strings. Tivemos que remover toda a TCHARporcaria específica do Windows (que não estávamos usando consistentemente de qualquer maneira) e adotamos um padrão de equipe para usar o UTF-8 ao mesmo tempo que a transição do Linux. Infelizmente, isso exigiu a reimplementação de uma grande parte da biblioteca padrão no Windows, que boost::nowidenão existia na época.
dan04
3
@ dan04: Como já foi dito, C certamente não é tão expressivo quanto C # (ou C ++), mas uso a biblioteca GNU C ( gnu.org/software/libc ) desde 1997 e é realmente estável e portátil. Para C ++, eu examinaria o Qt (ou o boost e as bibliotecas padrão) porque elas são bastante portáteis. Eu evitaria coisas específicas do Windows, se possível: AFAIK nunca foi o objetivo da Microsoft produzir software portátil, pois o aprisionamento do cliente faz parte de sua estratégia de marketing.
Giorgio
24

Oh céus. Esta é uma aplicação em tempo real? Controlando equipamentos em tempo real? Reunindo dados em tempo real? Usando um idioma com um coletor de lixo? Oh céus.

Embora eu concorde que você provavelmente possa fazer o aplicativo em um idioma mais moderno em menos tempo, esse provavelmente não é o principal critério. A FACILIDADE DE SUA PROGRAMAÇÃO É MUITO MENOS IMPORTANTE DO QUE OS OUTROS CRITÉRIOS, como os que seu chefe estabeleceu, E o tempo de resposta e o comportamento determinístico.

Eu sugeriria que você fizesse um protótipo em C # ou Python, apenas para testar a funcionalidade principal e a interface do usuário. Em seguida, teste tudo, medindo latências e tempos de resposta reais, quando o aplicativo é atingido com muitos dados, durante muitos dias de execução contínua. As chances são de que o aplicativo pode acabar sendo muito lento ou ficar para trás em momentos aleatórios, quando a VM ou o coletor de lixo entrar em ação.

Eu sugiro que você apresente o que você fez como um protótipo.

Codificar em C não é tão difícil. Se você não estiver disposto, diga. Há muitos de nós prontos para o desafio. (Venho fazendo codificação C em tempo real há, décadas, agora).

Guspy Gus
fonte
3
Vamos frase o primeiro bit de forma diferente. Oh céus. Esta é uma aplicação em tempo real? Controlando equipamentos em tempo real? Reunindo dados em tempo real? FUNCIONANDO EM UM AMBIENTE LINHA NÃO EM TEMPO REAL? Oh céus. Você sempre precisará provar quando cruzar os limites do dispositivo. 'Tempo real' é um argumento de palha e um requisito mal definido. C # está bom.
Gusdor #
Obviamente você nunca ouviu falar do trabalho de Joe Duffy . Ele trabalha na programação de sistemas em C # desde pelo menos 2013 . O compilador Roslyn pode compilar em código nativo (é assim que a UWP funciona) e a coleta de lixo não é um problema se você prestar atenção no que está fazendo.
precisa saber é o seguinte
14

Bem, a primeira coisa a fazer é procurar seu chefe e confessar. Você desconsiderou o pedido claro dele e, pior, faz isso há meses. Não sei quanto tempo você gastou nisso, mas, assumindo que a maior parte do tempo é alocada para a conclusão do projeto, você deve enfrentar o fato de que em breve poderá procurar um novo emprego.

Quanto mais cedo você lidar com isso, melhor.

Em segundo lugar, não acho que você possa convencê-lo de que o ANSI C é inadequado, o que você precisa fazer é convencê-lo de várias outras coisas (1) que c # é adequado, (2) ele pode aprender facilmente a manter c # (3). ) que você não era capaz de escrevê-lo em C. Supondo que você ainda tenha um emprego e um papel a desempenhar neste projeto, eu me concentraria em 2, enfatizando as semelhanças entre c e c #.

Citações em resposta a comentários ...

Alguns meses atrás, começamos a desenvolver um aplicativo [...] Depois de alguns dias, desfiz a coisa toda e comecei novamente usando C #

jmoreno
fonte
Em nenhum lugar ele mencionou que estava construindo uma versão em C # há meses?
Anônimo
11
@ Anônimo - Não importa se foram dias ou meses em que ele ainda NÃO seguiu as instruções de seus gerentes. O autor claramente não têm as habilidades necessárias para desenvolver a aplicação em ANSI C.
Ramhound
11
@ Ramhound - Eu não estou contestando que ele não seguiu as instruções de seus gerentes, estou apenas dizendo que jmoerno estava se beijando como se tivesse passado meses passando por tangentes. Além disso, se ele montou o projeto em alguns dias para servir como um protótipo funcional no qual a versão C mais estável especificada pode ser baseada, faz todo o sentido. Faz parte do estágio de planejamento.
Anônimo
@jmoreno - Desculpas, devo ter interpretado mal a pergunta.
Anônimo
2
@jmoreno - Claro. Publiquei meu último comentário depois de ver a citação que você adicionou. Desculpas mais uma vez.
Anônimo
12

determinou que desenvolvamos esse aplicativo no ANSI C. A lógica é que ele é o único que estará presente o tempo todo e, portanto, ele deve ser capaz de entender o que estamos fazendo.

Este é um requisito bastante razoável.

Ele também decidiu que não devemos usar tipos de dados abstratos;

Isso não faz sentido. Agora está começando a parecer um pouco suspeito, porque esse é um requisito de design do programa e não um requisito de idioma. Se o código deve ser fácil de manter, implementando ADTs ou usando testes bem testados, os pré-existentes devem ser uma prioridade.

ele até nos deu uma lista com o nome das variáveis ​​globais (suspiro) que ele quer que usemos.

Ok, agora fede. Agora podemos dizer que seu chefe tem experiência limitada, não apenas de várias linguagens de programação, mas de programação em geral. Um programador veterano qualificado, independentemente da preferência de idioma, nunca faria tal afirmação. (A única exceção em que consigo pensar é se a maior parte do código é executada em um sistema incorporado bastante pequeno e, portanto, toda a memória de trabalho necessária para o código deve ser pré-alocada. A idéia de que o mesmo código espera-se que a interface do usuário no nível da tela seja fortemente contra esse caso).

Suponho que seu chefe nunca tenha se envolvido em projetos de software de missão crítica em larga escala, mas é mais provável que ele tenha flutuado em vários projetos de baixa qualidade.

Portanto, isso não tem nada a ver com a linguagem de programação C. Você também pode escrever facilmente programas igualmente nojentos em C #. É um erro muito comum acreditar que um bom design de programa depende do idioma. Isso simplesmente não é verdade!

O C # certamente tem uma sintaxe mais bonita, mais limpa e menos obscura que o C. Ele possui bastante suporte ao design de programas, pois possui muito mais palavras-chave relacionadas ao OO que o C. Mas, além disso, não informa como escrever seus programas. Se você acredita que tudo o que é escrito em C é horrível por padrão e tudo o que é escrito em C # é o paraíso por padrão, aposto que você está atualmente escrevendo programas em C # bastante horríveis sem perceber.

O que eu sugeriria é que você faça um design de programa abstrato, independente da linguagem, mas detalhado antes de qualquer outra coisa. Use a abordagem normal, orientada a objetos. Quais objetos existem e como eles se comunicam entre si, quais são as dependências necessárias, etc. Quando você pensa bastante no design do programa e o coloca no papel, isso não deve importar muito para você nem para seu chefe. idioma em que você escolheu implementá-lo.

Comunidade
fonte
11
+1 em "Você também pode escrever facilmente programas igualmente nojentos em C #".
Javier
11

A primeira questão a ser abordada é emocional e irracional. O setor de TI está em constante mudança e, embora haja lugares para tudo, recusar-se a melhorar ou adotar a mudança é um problema.

Por que seu chefe se apega ao ANSI C? Se esse é o único idioma que ele conhece, talvez seja hora de mudar, mas um argumento racional pode ser insuficiente. Seu chefe se sentirá desvalorizado ou possivelmente demitido se forçado a trabalhar em um idioma desconhecido? Enfatize a experiência que ele tem e outros benefícios que ele traz.

Se você não resolver esse problema, todos os argumentos racionais que você pode trazer serão desperdiçados. Como subordinado, você pode não ser o único que pode ter essa discussão com ele. Talvez trate esse assunto com um dos outros gerentes, se houver.

Considere-o também da sua perspectiva. Por que você deseja usar c #? Quanto disso é o desejo de usar algo novo e legal? Seja honesto com você mesmo. Se você reconhecer isso, isso ajudará você a argumentar com mais eficácia.

A segunda questão é de risco e custo. Escrever software é caro e a escolha do idioma é um fator importante nisso. Considerar:

  1. Quanto tempo leva para escrever em C # versus C? Com uma orientação mais fácil ao objeto e uma melhor coleta de lixo, o C # pode ser mais fácil. No entanto, se o aplicativo usar muitas chamadas de API não gerenciadas, C poderá ser mais fácil.
  2. Se você usa C #, precisa comprar ferramentas adicionais? Parece que você já usa o Visual Studio, mas precisa de ferramentas adicionais para localização, revisão e análise de código, depuração e assim por diante?
  3. Quão fácil é manter? Se você encontrar um bug, com que rapidez ele pode ser corrigido. C # pode reduzir essa orientação do objeto. A coleta automática de lixo também evita a maioria dos problemas de vazamento de memória e ponteiro.
  4. Quão fácil é apoiar? Se você tiver uma equipe de suporte, eles podem saber ler um despejo de memória, mas sabem como usar o windbg com o SOS? As máquinas de destino já possuem uma versão apropriada da estrutura .Net instalada?
  5. Considere pessoal. Quantas pessoas conhecem C versus C #? Se um ou os dois deixaram a organização, como seria fácil substituí-lo? Os desenvolvedores de C são mais baratos ou mais caros que os de C #?

Eu poderia continuar, mas o objetivo é parar de discutir apenas os méritos técnicos das línguas. Méritos técnicos são coisas que somente você e seu chefe entendem. Se você começa a falar sobre o impacto nos negócios, atrai um grupo muito maior de pessoas e apresenta um argumento muito mais convincente.

Talvez C seja uma escolha melhor. C # não é automaticamente melhor para todas as situações. Talvez você faça esse projeto usando C, mas faça uma prova de conceito em C # para o próximo. Lembre-se de que você pode perder a batalha, mas ainda vencer a guerra também.

Akton
fonte
5
Não concordo com a suposição implícita de que o C # é, por padrão, uma escolha melhor que o ANSI C. Por exemplo, se você deseja permanecer independente da plataforma, o C # provavelmente é uma má escolha.
@ ThorbjørnRavnAndersen Eu concordo. Por favor, veja o último parágrafo. Menciono também casos como chamar código não gerenciado. Presumo que a independência da plataforma teria excluído o C # no OP. Talvez essa seja uma suposição incorreta.
Akton
11
A independência da plataforma foi apenas um dos motivos possíveis. Palavras como "apegar-se ao ANSI C" - na minha opinião - indicam um viés.
@akton - Desde quando você não pode chamar código não gerenciado de C #. É claro que requer um invólucro e que introduz problemas adicionais de suporte, mas é possível. Além disso, você pode suportar C # em multiplataformas, se desejar. O Mono é compatível com todas as principais plataformas de desktop (OS X, Windows e Linux). Concedido à medida que o .NET Framework, baseado no Microsoft Windows, avança, a base de recursos do Mono não corresponderá exatamente a isso (já é o caso do WPF) e, é claro, você não poderá desenvolver aplicativos Metro executados no Linux. É claro que é improvável que isso fosse feito neste caso.
Ramhound 7/09/12
@ Ramhound Eu não disse que você não pode chamar código não gerenciado de C #, apenas muito disso pode ser uma dor. Da mesma forma, você pode fazer o desenvolvimento de plataforma cruzada em C #, mas o C é quase universal, como disse Thorbjorn.
Akton
7

Talvez outro argumento: provavelmente é muito difícil encontrar estudantes de ciência da computação que tenham experiência suficiente para escrever código C sem cometer erros. ANSI C não é a primeira coisa que as pessoas aprendem hoje.

Agora todos os estudantes de ciência da computação vão me matar.

JohnB
fonte
O ANSI C foi na verdade uma das primeiras coisas que aprendi na faculdade. Comecei em 2004. Então, nos últimos 10 anos, ainda estava sendo ensinado. Passei muitas noites conectado via SSH a um ambiente Unix tentando compilar meu código.
Ramhound
11
Engraçado, eu não aprendi ANSI C até o meu último ano na Universidade. A primeira língua ensinada era Pascal, de modo que estou protegida ...
tehnyit
Recém-formado aqui; tivemos exposição a C e C ++, no entanto, o C estava em um contexto incorporado e mínimo. Ambos estavam no meu último ano - puramente C # e Java antes disso.
Ross)
2
C simplesmente ser difícil de programar a direita é provavelmente o melhor ponto de encontro a usar C.
Paul Nathan
7

Você falhou completamente em nos convencer de que o ANSI C era inadequado. C é uma excelente linguagem que parece adaptada para o tipo de tarefas que você descreveu. Com a breve descrição da tarefa (exceto o requisito de idioma), eu também recomendaria C (ou talvez vá).

Eu acho que o problema é que você estava programando em C com sua mente pensando em C #. Eu tenho um problema semelhante ao mudar de Perl para C ou java. Você deve aprender a se adaptar ao idioma, e não aprender a traduzir do seu modo de pensar para o idioma do dia.

O problema não é seu chefe ou a linguagem C, o problema é abrir sua mente para diferentes maneiras de pensar. Mudar a linguagem de programação é algo que o beneficiará.

BOC
fonte
4
Obrigado por responder sua primeira pergunta sobre Stack Exchange Programmers. No entanto, você pode tornar suas respostas futuras um pouco menos pessoais, não usando frases como "você falhou completamente", "o problema é abrir sua mente". Consulte as perguntas frequentes programmers.stackexchange.com/faq#etiquette . Eu acho que você pode fazer uma boa descrição do seu ponto com linguagem neutra.
Página
2

Primeiro, você precisa dizer ao seu chefe que está em um idioma diferente agora. Ele ficará (compreensivelmente) zangado se você devolver algo propositalmente contra os requisitos sem aviso prévio.

Agora, a melhor maneira de explicar essas coisas aos chefes / gerentes é colocá-las em termos de tempo e dinheiro. Estime quanto tempo esse projeto levaria no ANSI C e depois estime quanto tempo levaria em algo mais alto, como o C #. Note que eu disse nível superior, não moderno. Isso pode ajudar a suavizar as coisas também. Quero dizer, você não resolveria pintar uma sala com apenas um pincel minúsculo, usaria rolos e outras coisas que fazem com que cada traço (linha de código) cubra mais área do projeto. Além disso, se você ou um dos membros de sua equipe não conhece C, ou se sente à vontade para fazer um grande projeto em C, isso leva à questão do tempo ainda mais porque eles terão que se atualizar.

Também parece que seu chefe está tentando microgerenciar. Tenho certeza de que uma das outras respostas tentará explicar como convencer seu chefe a fazer isso menos

Earlz
fonte
A acessibilidade parece um argumento possível. Enquanto o chefe (como cliente, de acordo com a sugestão de @ MatthewFlynn) argumenta que ele não pode pagar o programa que não está sendo escrito em C, o OP pode argumentar que o chefe também não poderá arcar com os custos de implementação e manutenção associados ao programa sendo escrito em C. De qualquer maneira, são necessários compromissos para que as coisas aconteçam.
Rwong
1

A aversão do supervisor aos ADTs foi abordada em outro lugar, assim como o aparente desconhecimento do desenvolvedor quanto aos custos do GC, portanto, vou me concentrar em "threads".

Talvez, em vez de pensar em termos de encadeamento .NET (ou JVM, se houver doutrinação), o que você pode querer é múltiplos processos, usando algum mecanismo de comunicação entre processos (IPC) para se comunicar entre eles. Por exemplo - mensagens do Windows, memória compartilhada, buffer de arquivo mapeado na memória, pipe nomeado, qualquer que seja. Dedique pequenos processos à interação com um dispositivo ou aspecto do dispositivo e verifique o IPC para comunicar atualizações e reconhecer solicitações, e tenha um processo um pouco maior para manter a GUI e se comunicar com os "monitores" do equipamento usando o IPC que você selecionar.

Roboprog
fonte