¿Cuál es la mejor configuración para programar con una MacBook Pro, Windows Pc y una PC Ubuntu?

Estoy de acuerdo con Imran al afirmar que los sistemas Linux (o casi todos Unix) son probablemente los mejores en un sentido general, por las mismas razones que ha mencionado. Tenga en cuenta que muchas de las mismas herramientas también están disponibles en OSX, ya que también es un sistema operativo similar a Unix que tiene muchas de estas mismas herramientas portadas (no todas, sino algunas). Windows OTOH no es demasiado fácil para crear estas herramientas, aunque se han hecho muchos intentos, por ejemplo, CygWin y MingW son dos formas de obtener muchas de las mismas herramientas de Linux disponibles allí (solo que no es tan simple de configurar).

Sin embargo, la situación dicta cuál es su mejor configuración. Por ejemplo, ¿estás creando aplicaciones móviles? Entonces, probablemente, la mejor manera de hacerlo es usar el sistema donde las herramientas son más maduras, por ejemplo, OSX para hacer sus aplicaciones ObjC / Swift para iOS, Linux para aplicaciones Java para Android, Windows para Visual Studio, dotnet para Windows Phone.

Por supuesto, hay otros escenarios que tienen arreglos similares, y otros en los que es igualmente (o incluso más) fácil usar un sistema para la programación dirigida a múltiples sistemas. Aunque, en general, la programación que utiliza el mismo sistema / similar que la plataforma objetivo tiende a dar los mejores resultados, al menos para fines de depuración y prueba. De lo contrario, se vuelve un poco más difícil ya que necesita comenzar a buscar en la depuración remota (no es exactamente una idea amigable para los novatos).

Otra cosa a tener en cuenta, ¿tiene la intención de ejecutar Linux y Windows en su MacBook? Si es así, ¿los ejecutaría dentro de máquinas virtuales (por ejemplo, a través de Parallels) o como botas dobles (por ejemplo, a través de BootCamp)? La idea de VM le brinda más opciones y es una necesidad para la depuración remota (es decir, el entorno del programa en un sistema operativo mientras se ejecuta el programa en otro), en cuyo caso su MacBook requiere al menos suficiente RAM para ejecutar dos de esos sistemas operativos a la vez. El arranque dual significa que solo tiene un sistema operativo ejecutándose a la vez. Si su “PC” Linux / Windows es en realidad una segunda / tercera computadora, entonces es un problema mucho menor, solo que es posible que desee vincularlas a través de una red en lugar de intercambiar discos constantemente.

Todas las configuraciones son lo suficientemente buenas para una tarea de programación. Pero Ubuntu o casi cualquier distribución de Linux lo hace mucho mejor que nadie, luego viene Mac OSX y luego Windows.

La razón de esto es que Linux está construido por los programadores. Les encanta crear cosas que puedan simplificar su tarea. Por lo tanto, ya ve, configurar un entorno de programación en un sistema operativo basado en Linux es mucho más simple y directo que decir Windows, Mac OSX está en algún lugar entre ellos dos.

No soy programador, pero estoy profundizando en la codificación para escribir mis propios exploits.

En mi humilde opinión, diría Eclipse, Herramientas de desarrollo de Android y Blue Jay.

Funcionan en todas las plataformas, por lo que sé.